{"version":3,"sources":["jquery.js","browser-detect.umd.js","jquery.easing.js","jquery.highlight.js","jquery.touchSwipe.js","loglevel.min.js","picturefill.js","polyfill.js","select2.full.js","scrolling-element.js","eh.modernizr-0.0.1.js","flowplayer.js","temml.min.js","cs.Snippet.ts","eh.utils.ts","eh.ScrollPage.ts","csSelect2-custom.js","eh.Api.ts","eh.Breakpoints.ts","eh.Cart.controller.ts","eh.Constants.ts","eh.CookieDisclaimer.ts","eh.CountryDetector.ts","eh.DatePicker.ts","eh.FlexInfo.ts","eh.FullContentOverlayController.ts","eh.Header.ts","eh.IframeScale.ts","eh.LanguageChooser.ts","eh.LinkTarget.ts","eh.LoadingIndicator.ts","eh.LoginButton.ts","eh.Maintenance.ts","eh.MarketChooser.ts","eh.MarketSelector.ts","eh.MessageNexus.ts","eh.NebpProxy.ts","eh.Overlay.ts","eh.pc.CoverCtrl.ts","eh.pc.NavigationController.ts","eh.pc.ShortcutController.ts","eh.pc.TabController.ts","eh.pc.TooltipController.ts","eh.PopoverButton.ts","eh.PopoverController.ts","eh.PreventRubberbandScroller.ts","eh.ProductPricing.ts","eh.QuickSelect.ts","eh.QuickSelectRv.ts","eh.ScrollChangeDispatcher.ts","eh.SeamlessIFrame.ts","eh.SearchFiltersLegacy.ts","eh.SiteSearch.ts","eh.Slider.ts","start.ts","eh.StickyManager.ts","eh.TermHighlights.ts","eh.Tracking.ts","eh.VideoPlayer.ts","EhQuickSelection.controller.ts"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","isFunction","obj","nodeType","item","isWindow","arr","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","funescape","escape","nonHex","high","String","fromCharCode","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","setDocument","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","rcssescape","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","nid","match","groups","newSelector","newContext","ownerDocument","exec","m","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","createInputPseudo","submit","reset","createButtonPseudo","tokens","combinator","base","skip","checkNonElements","doneName","newCache","oldCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromGroupMatchers","elementMatchers","setMatchers","superMatcher","outermost","matchedCount","setMatched","contextBackup","byElement","dirrunsUnique","bySet","filters","parseOnly","soFar","preFilters","cached","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","ready","parseHTML","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","fire","locked","once","fired","firing","queue","firingIndex","memory","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","that","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","updateFunc","resolveContexts","resolveValues","remaining","primary","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","div","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","handlers","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","getStyles","opener","getComputedStyle","swap","old","pixelPositionVal","boxSizingReliableVal","scrollboxSizeVal","pixelBoxStylesVal","reliableTrDimensionsVal","reliableMarginLeftVal","container","rnumnonpx","rcustomProp","rboxStyle","rtrimCSS","computeStyleTests","divStyle","cssText","roundPixelMeasures","marginLeft","right","width","position","offsetWidth","measure","round","parseFloat","curCSS","computed","isCustomProp","getPropertyValue","pixelBoxStyles","minWidth","maxWidth","addGetHookIf","conditionFn","hookFn","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trStyle","trChild","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","doAnimation","optall","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","stopPropagationCallback","rfocusMorph","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","param","traditional","valueOrFunction","s","encodeURIComponent","buildParams","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","urlAnchor","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","response","isSuccess","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","modified","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","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","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_jQuery","_$","$","noConflict","browserDetect","__assign","assign","browsers","os","osVersions","10.0","6.4","6.3","6.2","6.1","6.0","5.2","5.1","5.01","5.0","4.0","4.90","mobileRegExp","mobilePrefixRegExp","Detector","detect","userAgent","handleMissingError","checkBrowser","checkMobile","checkOs","versionTail","versionNumber","mobile","platform","_this","definition","versionTails","Number","agentPrefix","substr","getOsPattern","osSuffix","os$$1","charAt","navigator","vendor","createCommonjsModule","_isObject","it","_anObject","_fails","_has","_ctx","_aFunction","c","$export","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_PROTO","P","IS_BIND","B","_global","S","PROTOTYPE","_core","expProto","own","Function","_redefine","U","_hide","__g","core","__e","_descriptors","_ie8DomDefine","dP","_objectDp","f","O","Attributes","valueOf","_toPrimitive","bitmap","px","_uid","SRC","TO_STRING","$toString","TPL","inspectSource","safe","W","R","_cof","_arraySpeciesCreate","_arraySpeciesConstructor","_arrayMethods","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","res","_defined","_iobject","min","_toInteger","_strictMethod","_export","propertyIsEnumerable","floor","_isArray","_shared","SHARED","store","mode","copyright","SPECIES","USE_SYMBOL","_wks","C","$filter","$map","exporter","KEY","ALIAS","FORCE","_stringWs","space","ltrim","$trim","injectableNavigator","injectableProcess","require","jswing","pow","sqrt","sin","c1","c2","c4","c5","bounceOut","x","n1","d1","def","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","highlight","re","ignoreDiacritics","removeDiacritcs","capturePos","wordNode","splitText","wordClone","tagName","word","unhighlight","element","normalize","words","caseSensitive","wordsOnly","wordsBoundary","wordsBoundaryStart","wordsBoundaryEnd","LEFT","RIGHT","UP","DOWN","IN","OUT","NONE","AUTO","SWIPE","PINCH","TAP","DOUBLE_TAP","LONG_TAP","HORIZONTAL","VERTICAL","ALL_FINGERS","DOUBLE_TAP_THRESHOLD","PHASE_START","PHASE_MOVE","PHASE_END","PHASE_CANCEL","SUPPORTS_TOUCH","SUPPORTS_POINTER_IE10","msPointerEnabled","PointerEvent","SUPPORTS_POINTER","PLUGIN_NS","TouchSwipe","useTouchEvents","fallbackToMouseEvents","START_EV","MOVE_EV","END_EV","LEAVE_EV","CANCEL_EV","distance","direction","currentDirection","startTouchesDistance","endTouchesDistance","pinchZoom","pinchDistance","pinchDirection","maximumsMap","$element","phase","fingerCount","fingerData","endTime","previousTouchEndTime","fingerCountAtRelease","doubleTapStartTime","singleTapTimeout","holdTimeout","touchStart","touchCancel","jqEvent","excludedElements","preventDefaultEvents","maxData","createMaximumVO","cancelMultiFingerRelease","createFingerData","fingers","hasPinches","getTimeStamp","calculateTouchesDistance","swipeStatus","pinchStatus","longTapThreshold","setTouchInProgress","touchMove","point","startPoint","endPoint","inMultiFingerRelease","currentFinger","updateFingerData","toFixed","abs","calculateDirection","allowPageScroll","auto","swipeLeft","swipeRight","swipeUp","swipeDown","validateDefaultEvent","y","calculateDuration","getMaxDistance","triggerOnTouchEnd","triggerOnTouchLeave","inBounds","bounds","outerWidth","bottom","outerHeight","getNextPhase","touchEnd","didSwipeBackToCancel","validateSwipeDistance","hasTap","triggerHandlerForGesture","touchLeave","removeListeners","currentPhase","nextPhase","validTime","validateSwipeTime","validDistance","didCancel","validateSwipe","hasSwipes","validatePinch","validateDoubleTap","hasDoubleTap","threshold","gesture","swipe","pinchIn","pinchOut","tap","doubleTapThreshold","doubleTap","longTap","valid","cancelled","cancelThreshold","maxTimeThreshold","hasCorrectFingerCount","validateFingers","hasEndPoint","validateEndPoint","hasCorrectDistance","pinchThreshold","hasValidTime","hasValidDistance","withinThreshold","fingerReleaseThreshold","diffX","diffY","pointB","pointA","angle","r","atan2","getTime","enable","destroy","property","plugin","defaults","phases","directions","pageScroll","ONE","TWO","THREE","FOUR","FIVE","ALL","log","trace","d","k","h","methodFactory","debug","g","localStorage","cookie","levels","TRACE","DEBUG","INFO","WARN","ERROR","SILENT","getLevel","setLevel","setDefaultLevel","resetLevel","removeItem","enableAll","disableAll","getLogger","getLoggers","default","dummySrc","findPictureImgs","mq","ua","onResize","addListener","HTMLPictureElement","$1","imgs","img","sizes","picture","_pfLastSize","fixRespimg","matchMedia","srcset","eminpx","alwaysCheckWDescriptor","evalId","capture","memoize","pf","isSupportTestReady","getImgAttr","setImgAttr","removeImgAttr","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","devicePixelRatio","units","in","anchor","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","isSpace","setResolution","candidate","sizesattr","cWidth","calcListLength","regLength","buildStr","isDomReady","timestamp","regReady","timerId","lastClientWidth","typeUri","evalCSS","parsedLength","picturefill","plen","reevaluate","reselect","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","candidates","parseSet","makeUrl","parseSrcset","collectCharacters","regEx","substring","chars","descriptors","currentDescriptor","inputLength","parseDescriptors","lastChar","intVal","floatVal","pError","desc","has1x","parseSizes","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","size","regexCssLengthWithUnits","regexCssCalc","str","chrctr","component","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","lastComponentValue","matchesMedia","supSizes","supSrcset","fillImgs","later","hasFeature","ns","supPicture","image2","width1","u","setSize","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","getEmValue","originalHTMLCSS","originalBodyCSS","sourceSizeListStr","winningLength","uT","setRes","applySetCandidate","bestCandidate","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","imageData","dpr","curSrc","curCan","sets","meanDensity","candidateSrc","setSrc","origWidth","getSet","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getAllSourceElements","supported","matchingSet","extreme","evaled","evaluated","srcSetCandidates","innerWidth","clientWidth","innerHeight","clientHeight","vw","vh","em","rem","Image","finallyConstructor","reason","allSettled","setTimeoutFunc","Boolean","Promise","_state","_handled","_value","_deferreds","doResolve","_immediateFn","cb","newValue","finale","thisArg","_unhandledRejectionFn","Handler","prom","all","race","setImmediate","globalNS","requirejs","undef","main","req","makeMap","defined","waiting","config","defining","aps","jsSuffixRegExp","S2","select2","relParts","relName","splitPrefix","relResourceName","callDep","pr","makeRequire","uri","deps","cjsModule","depName","usingExports","callbackType","makeRelParts","hasProp","makeLoad","forceSync","alt","Utils","getMethods","theClass","methodName","methods","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","displayName","superMethod","decoratedMethod","originalMethod","calledMethod","Observable","listeners","_type","invoke","generateChars","_convertData","originalKey","dataLevel","hasScroll","$el","scrollHeight","scrollWidth","escapeMarkup","markup","replaceMap","\\","&","<","\"","'","/","appendMany","$nodes","$jqNodes","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","Results","dataAdapter","render","$results","clear","displayMessage","hideLoading","$message","hideMessages","$options","$option","$dropdown","sorter","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","selectedIds","showLoading","loading","loadingMore","$loading","role","aria-selected","Element","_resultId","title","label","template","$children","child","$child","$childrenContainer","$container","isOpen","$highlighted","getHighlightedResults","nextIndex","currentIndex","$next","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","deltaY","isAtTop","isAtBottom","offsetDelta","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","update","_attachCloseHandler","_detachCloseHandler","$select","isEnabled","SingleSelection","$rendered","selectionContainer","formatted","MultipleSelection","$selections","Placeholder","decorated","placeholder","normalizePlaceholder","createPlaceholder","$placeholder","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","$remove","Search","$search","$searchContainer","_transferTabIndex","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","resizeSearch","term","EventRelay","relayEvents","preventableEvents","Translation","dict","translation","_cache","loadPath","path","translations","Ⓐ","Ａ","À","Á","Â","Ầ","Ấ","Ẫ","Ẩ","Ã","Ā","Ă","Ằ","Ắ","Ẵ","Ẳ","Ȧ","Ǡ","Ä","Ǟ","Ả","Å","Ǻ","Ǎ","Ȁ","Ȃ","Ạ","Ậ","Ặ","Ḁ","Ą","Ⱥ","Ɐ","Ꜳ","Æ","Ǽ","Ǣ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ⓑ","Ｂ","Ḃ","Ḅ","Ḇ","Ƀ","Ƃ","Ɓ","Ⓒ","Ｃ","Ć","Ĉ","Ċ","Č","Ç","Ḉ","Ƈ","Ȼ","Ꜿ","Ⓓ","Ｄ","Ḋ","Ď","Ḍ","Ḑ","Ḓ","Ḏ","Đ","Ƌ","Ɗ","Ɖ","Ꝺ","Ǳ","Ǆ","ǲ","ǅ","Ⓔ","Ｅ","È","É","Ê","Ề","Ế","Ễ","Ể","Ẽ","Ē","Ḕ","Ḗ","Ĕ","Ė","Ë","Ẻ","Ě","Ȅ","Ȇ","Ẹ","Ệ","Ȩ","Ḝ","Ę","Ḙ","Ḛ","Ɛ","Ǝ","Ⓕ","Ｆ","Ḟ","Ƒ","Ꝼ","Ⓖ","Ｇ","Ǵ","Ĝ","Ḡ","Ğ","Ġ","Ǧ","Ģ","Ǥ","Ɠ","Ꞡ","Ᵹ","Ꝿ","Ⓗ","Ｈ","Ĥ","Ḣ","Ḧ","Ȟ","Ḥ","Ḩ","Ḫ","Ħ","Ⱨ","Ⱶ","Ɥ","Ⓘ","Ｉ","Ì","Í","Î","Ĩ","Ī","Ĭ","İ","Ï","Ḯ","Ỉ","Ǐ","Ȉ","Ȋ","Ị","Į","Ḭ","Ɨ","Ⓙ","Ｊ","Ĵ","Ɉ","Ⓚ","Ｋ","Ḱ","Ǩ","Ḳ","Ķ","Ḵ","Ƙ","Ⱪ","Ꝁ","Ꝃ","Ꝅ","Ꞣ","Ⓛ","Ｌ","Ŀ","Ĺ","Ľ","Ḷ","Ḹ","Ļ","Ḽ","Ḻ","Ł","Ƚ","Ɫ","Ⱡ","Ꝉ","Ꝇ","Ꞁ","Ǉ","ǈ","Ⓜ","Ｍ","Ḿ","Ṁ","Ṃ","Ɱ","Ɯ","Ⓝ","Ｎ","Ǹ","Ń","Ñ","Ṅ","Ň","Ṇ","Ņ","Ṋ","Ṉ","Ƞ","Ɲ","Ꞑ","Ꞥ","Ǌ","ǋ","Ⓞ","Ｏ","Ò","Ó","Ô","Ồ","Ố","Ỗ","Ổ","Õ","Ṍ","Ȭ","Ṏ","Ō","Ṑ","Ṓ","Ŏ","Ȯ","Ȱ","Ö","Ȫ","Ỏ","Ő","Ǒ","Ȍ","Ȏ","Ơ","Ờ","Ớ","Ỡ","Ở","Ợ","Ọ","Ộ","Ǫ","Ǭ","Ø","Ǿ","Ɔ","Ɵ","Ꝋ","Ꝍ","Œ","Ƣ","Ꝏ","Ȣ","Ⓟ","Ｐ","Ṕ","Ṗ","Ƥ","Ᵽ","Ꝑ","Ꝓ","Ꝕ","Ⓠ","Ｑ","Ꝗ","Ꝙ","Ɋ","Ⓡ","Ｒ","Ŕ","Ṙ","Ř","Ȑ","Ȓ","Ṛ","Ṝ","Ŗ","Ṟ","Ɍ","Ɽ","Ꝛ","Ꞧ","Ꞃ","Ⓢ","Ｓ","ẞ","Ś","Ṥ","Ŝ","Ṡ","Š","Ṧ","Ṣ","Ṩ","Ș","Ş","Ȿ","Ꞩ","Ꞅ","Ⓣ","Ｔ","Ṫ","Ť","Ṭ","Ț","Ţ","Ṱ","Ṯ","Ŧ","Ƭ","Ʈ","Ⱦ","Ꞇ","Ꜩ","Ⓤ","Ｕ","Ù","Ú","Û","Ũ","Ṹ","Ū","Ṻ","Ŭ","Ü","Ǜ","Ǘ","Ǖ","Ǚ","Ủ","Ů","Ű","Ǔ","Ȕ","Ȗ","Ư","Ừ","Ứ","Ữ","Ử","Ự","Ụ","Ṳ","Ų","Ṷ","Ṵ","Ʉ","Ⓥ","Ｖ","Ṽ","Ṿ","Ʋ","Ꝟ","Ʌ","Ꝡ","Ⓦ","Ｗ","Ẁ","Ẃ","Ŵ","Ẇ","Ẅ","Ẉ","Ⱳ","Ⓧ","Ｘ","Ẋ","Ẍ","Ⓨ","Ｙ","Ỳ","Ý","Ŷ","Ỹ","Ȳ","Ẏ","Ÿ","Ỷ","Ỵ","Ƴ","Ɏ","Ỿ","Ⓩ","Ｚ","Ź","Ẑ","Ż","Ž","Ẓ","Ẕ","Ƶ","Ȥ","Ɀ","Ⱬ","Ꝣ","ⓐ","ａ","ẚ","à","á","â","ầ","ấ","ẫ","ẩ","ã","ā","ă","ằ","ắ","ẵ","ẳ","ȧ","ǡ","ä","ǟ","ả","å","ǻ","ǎ","ȁ","ȃ","ạ","ậ","ặ","ḁ","ą","ⱥ","ɐ","ꜳ","æ","ǽ","ǣ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ⓑ","ｂ","ḃ","ḅ","ḇ","ƀ","ƃ","ɓ","ⓒ","ｃ","ć","ĉ","ċ","č","ç","ḉ","ƈ","ȼ","ꜿ","ↄ","ⓓ","ｄ","ḋ","ď","ḍ","ḑ","ḓ","ḏ","đ","ƌ","ɖ","ɗ","ꝺ","ǳ","ǆ","ⓔ","ｅ","è","é","ê","ề","ế","ễ","ể","ẽ","ē","ḕ","ḗ","ĕ","ė","ë","ẻ","ě","ȅ","ȇ","ẹ","ệ","ȩ","ḝ","ę","ḙ","ḛ","ɇ","ɛ","ǝ","ⓕ","ｆ","ḟ","ƒ","ꝼ","ⓖ","ｇ","ǵ","ĝ","ḡ","ğ","ġ","ǧ","ģ","ǥ","ɠ","ꞡ","ᵹ","ꝿ","ⓗ","ｈ","ĥ","ḣ","ḧ","ȟ","ḥ","ḩ","ḫ","ẖ","ħ","ⱨ","ⱶ","ɥ","ƕ","ⓘ","ｉ","ì","í","î","ĩ","ī","ĭ","ï","ḯ","ỉ","ǐ","ȉ","ȋ","ị","į","ḭ","ɨ","ı","ⓙ","ｊ","ĵ","ǰ","ɉ","ⓚ","ｋ","ḱ","ǩ","ḳ","ķ","ḵ","ƙ","ⱪ","ꝁ","ꝃ","ꝅ","ꞣ","ⓛ","ｌ","ŀ","ĺ","ľ","ḷ","ḹ","ļ","ḽ","ḻ","ſ","ł","ƚ","ɫ","ⱡ","ꝉ","ꞁ","ꝇ","ǉ","ⓜ","ｍ","ḿ","ṁ","ṃ","ɱ","ɯ","ⓝ","ｎ","ǹ","ń","ñ","ṅ","ň","ṇ","ņ","ṋ","ṉ","ƞ","ɲ","ŉ","ꞑ","ꞥ","ǌ","ⓞ","ｏ","ò","ó","ô","ồ","ố","ỗ","ổ","õ","ṍ","ȭ","ṏ","ō","ṑ","ṓ","ŏ","ȯ","ȱ","ö","ȫ","ỏ","ő","ǒ","ȍ","ȏ","ơ","ờ","ớ","ỡ","ở","ợ","ọ","ộ","ǫ","ǭ","ø","ǿ","ɔ","ꝋ","ꝍ","ɵ","œ","ƣ","ȣ","ꝏ","ⓟ","ｐ","ṕ","ṗ","ƥ","ᵽ","ꝑ","ꝓ","ꝕ","ⓠ","ｑ","ɋ","ꝗ","ꝙ","ⓡ","ｒ","ŕ","ṙ","ř","ȑ","ȓ","ṛ","ṝ","ŗ","ṟ","ɍ","ɽ","ꝛ","ꞧ","ꞃ","ⓢ","ｓ","ß","ś","ṥ","ŝ","ṡ","š","ṧ","ṣ","ṩ","ș","ş","ȿ","ꞩ","ꞅ","ẛ","ⓣ","ｔ","ṫ","ẗ","ť","ṭ","ț","ţ","ṱ","ṯ","ŧ","ƭ","ʈ","ⱦ","ꞇ","ꜩ","ⓤ","ｕ","ù","ú","û","ũ","ṹ","ū","ṻ","ŭ","ü","ǜ","ǘ","ǖ","ǚ","ủ","ů","ű","ǔ","ȕ","ȗ","ư","ừ","ứ","ữ","ử","ự","ụ","ṳ","ų","ṷ","ṵ","ʉ","ⓥ","ｖ","ṽ","ṿ","ʋ","ꝟ","ʌ","ꝡ","ⓦ","ｗ","ẁ","ẃ","ŵ","ẇ","ẅ","ẘ","ẉ","ⱳ","ⓧ","ｘ","ẋ","ẍ","ⓨ","ｙ","ỳ","ý","ŷ","ỹ","ȳ","ẏ","ÿ","ỷ","ẙ","ỵ","ƴ","ɏ","ỿ","ⓩ","ｚ","ź","ẑ","ż","ž","ẓ","ẕ","ƶ","ȥ","ɀ","ⱬ","ꝣ","Ά","Έ","Ή","Ί","Ϊ","Ό","Ύ","Ϋ","Ώ","ά","έ","ή","ί","ϊ","ΐ","ό","ύ","ϋ","ΰ","ώ","ς","’","BaseAdapter","query","generateResultId","SelectAdapter","currentData","unselect","addOptions","innerText","normalizedData","_normalizeItem","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","$existingOption","onlyItem","existingData","newData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","failure","$request","_request","request","_queryTimeout","Tags","tags","createTag","insertTag","_removeOldTags","page","wrapper","checkChildren","Tokenizer","tokenizer","dropdown","tokenData","separators","termChar","part","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","$offsetParent","isConnected","MinimumResultsForSearch","minimumResultsForSearch","Infinity","countResults","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","Query","SearchableDropdown","ContainerCSS","tokenSeparators","amdBase","initSelection","InitSelection","resultsAdapter","selectOnClose","dropdownAdapter","multiple","closeOnSelect","dropdownCssClass","dropdownCss","adaptDropdownCssClass","DropdownCSS","selectionAdapter","allowClear","containerCssClass","containerCss","adaptContainerCssClass","language","_resolveLanguage","uniqueLanguages","_processTranslations","stripDiacritics","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","baseLanguage","resolvedLanguages","languageData","convertedData","Options","fromElement","InputCompat","excludedData","dataset","upperCaseLetter","dataName","attributeName","dataValue","Select2","_generateId","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","observer","MutationObserver","WebKitMutationObserver","MozMutationObserver","_observer","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","close","_isChangeMutation","changed","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerArgs","newVal","detachEvent","disconnect","syncCssClasses","$dest","$src","adapter","adapted","replacements","classes","CompatUtils","_containerAdapter","clazz","_cssAdapter","containerCssAdapter","_dropdownAdapter","dropdownCssAdapter","_isInitialized","InputData","_currentData","_valueSeparator","getSelected","allData","AttachContainer","StopPropagation","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","fixHooks","mouseHooks","onmousewheel","getLineHeight","getPageHeight","$elem","$parent","adjustOldDeltas","normalizeOffset","boundingRect","orgEvent","deltaX","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaMode","pageHeight","absDelta","shouldAdjustOldDeltas","deltaFactor","nullLowestDelta","unmousewheel","thisMethods","instanceOptions","instance","baseName","nameParts","nameSegment","mapValue","foundMap","foundI","foundStarMap","starI","baseParts","starMap","lastIndex","nodeIdCompat","scrollingElement","iframe","contentWindow","write","isCompliant","scriptGlobalObject","tests","ModernizrProto","_version","_config","classPrefix","enableClasses","enableJSClass","usePrefixes","_q","addTest","addAsyncTest","Modernizr","supportsPassiveOption","featureNames","feature","aliasIdx","nameIdx","featureNameSplit","featureIdx","aliases","testRunner","o","handleEvent","stoppedImmediatePropagation","stoppedPropagation","dispatchEvent","E","T","createEvent","initEvent","N","srcElement","defineProperties","getOwnPropertyDescriptor","Text","HTMLCommentElement","HTMLScriptElement","HTMLTitleElement","HTMLStyleElement","CSSStyleSheet","styleSheet","lastElementChild","previousElementSibling","previousSibling","nextElementSibling","childElementCount","createEventObject","fireEvent","hasChildNodes","cancelBubble","HTMLDocument","Window","currentStyle","runtimeStyle","pixelLeft","flowplayer","1","_dereq_","common","ClassList","punycode","computedStyle","bit","identity","removeNode","ctx","txt","findDirect","kls","isSameDomain","hostname","port","forEach","removeProperty","cls","par","childIndex","elms","hasOwnOrPrototypeProperty","hasParent","parentSelector","parentElement","createAbsoluteUrl","xhrGet","successCb","errorCb","pick","toUnicode","browser","webkit","getPrototype","__proto__","CSSSDProto","CSSStyleDeclaration","class-list","computed-style","2","swf","flashvars","wmode","bgColor","allowscriptaccess","quality","movie","bgcolor","__flash_savedUnloadHandler","__flash_unloadHandler","../common","3","engineImpl","embed","bean","isAbsolute","player","loadVideo","callbackId","api","suspended","conf","timeouts","engine","engineName","flashVideo","selectedSource","swfHls","rtmp","suspendEngine","resumeEngine","video","escapeURL","removeTag","html5Tag","is_absolute","some","canPlayType","providerChangeNeeded","bg","isHLS","unload","__set","flashls","__get","__play","embedded","origin","splash","autoplay","hlsQualities","stringify","bufferTime","bufferTimeMax","hex","toHex","initialVolume","volumeLevel","swfUrl","_api","__quality","PercentLoaded","__status","timer2","playing","pollInterval","setInterval","live","seekOffset","buffer","bytes","buffered","flash","atob","__unload","clearInterval","canPlay","engines","../flowplayer","./embed","extend-object","4","html5factory","Hls","isSupported","lastSelectedLevel","lastSource","engineApi","recoverMediaError","hlsjs","hls","recoverMediaErrorDate","swapAudioCodecDate","recover","isNetworkError","paused","poster","play","startLoad","performance","swapAudioCodec","extensions","ext","videoTag","loadSource","resume","dvr","liveSyncPosition","seek","seekTo","livePositionOffset","bufferWhilePaused","stopLoad","_ev","nextLevel","Events","MANIFEST_PARSED","confQualities","qualityLabels","attachMedia","qualities","confAutoQuality","level","initialLevel","bitrate","currentLevel","fatal","recoverNetworkError","ErrorTypes","NETWORK_ERROR","MEDIA_ERROR","errorCode","clip","safari","extension","./html5-factory","5","desktopSafari","iOS","EVENTS","ended","pause","timeupdate","volumechange","ratechange","seeked","loadedmetadata","canplaythrough","durationchange","dataunavailable","webkitendfullscreen","inlineVideo","per","setMode","created","preload","nativesubtitles","disableInline","subtitles","tracks","textTracks","st","kind","srclang","loop","volume","preloadCheck","recoverAutoplay","mutedAutoplay","mute","_listeners","instanceId","er","listenMetadata","track","activeCues","eventListeners","tev","seekable","flow","triggerEvent","MAX_VALUE","videoWidth","videoHeight","currentSrc","hlsDuration","durationChanged","timeUpdated","playbackRate","muted","originalTarget","listen","isInViewport","preloadMetadata","pausedState","finished","URL","createObjectURL","MediaSource","typ","6","VIDEO","7","WebKitPlaybackTargetAvailabilityEvent","btnContainer","availability","webkitCurrentPlaybackTargetIsWireless","webkitShowPlaybackTargetPicker","8","TYPE_RE","scriptjs","getTracker","analytics","_gat","tracker","_getTracker","_setAllowLinker","_trackEvent","seeking","./resolve","9","session","sessionListener","receiverListener","chromeCastEngine","chrome","cast","ReceiverAvailability","AVAILABLE","chromeCastStatus","chromeCastIcon","onInitSuccess","onError","release","chromecast","loaded","applicationId","DEFAULT_MEDIA_RECEIVER_APP_ID","sessionRequest","SessionRequest","apiConfig","ApiConfig","initialize","requestSession","receiverName","receiver","friendlyName","mediaInfo","MediaInfo","LoadRequest","loadMedia","addUpdateListener","alive","getEstimatedTime","hijack","SeekRequest","playerState","PlayerState","PLAYING","PAUSED","BUFFERING","10","CUE_RE","cuepointsDisabled","setClass","cue","segments","lastFiredSegment","segmentForCue","segment","cues","cuepoints","setCuepoints","generate_cuepoints","addCuepoint","timeline","removeCuepoint","sIdx","11","clipboard","share","embedCode","embedConf","ratio","itrunc","shareUrl","adaptiveRatio","textarea","./util/clipboard","12","listenEvent","hndlr","disposable","internalHandler","actualEvent","eventArguments","typeNameSpaces","actualType","containing","handlerNamespaces","registererHandlers","returnEvent","typStr","13","facebook","winHeight","screen","winWidth","windowOptions","14","FULL_PLAYER","FS_ENTER","FS_EXIT","FS_SUPPORT","fullscreen","webkitCurrentFullScreenElement","mozFullScreenElement","fullscreenElement","msFullscreenElement","scrollY","scrollX","lastClick","isFullscreen","fName","ALLOW_KEYBOARD_INPUT","webkitFullscreenElement","oldOpacity","15","focused","focusedRoot","metaKeyPressed","keyboard","16","showMenu","menu","triggerElement","ui","hideMenu","coordinates","rightFallbackOffset","17","ttl","dismiss","area","18","isIeMobile","format","UA","touch","originalLoad","resumeTimer","android","isAndroid","firefox","isSilk","androidVer","samsung","sliders","disableAnimation","hasMoved","oldFullscreen","initialClick","clickToUnMute","native_fullscreen","webkitEnterFullScreen","./ui","19","Resolve","resolver","externalRe","advance","klass","hasCustomPlaylist","customPlaylist","queryRoot","generatePlaylist","cntrls","plEl","playlist","itm","data-index","setPlaylist","items","keepCurrentIndex","addPlaylistItem","is_last","removePlaylistItem","pl","playlistInitialized","startIndex","toPlay","prevIndex","20","controlbar","selectQuality","createMenu","21","parseSource","sourcesFromVideoTag","reduce","22","directEmbed","btoa","chr","23","parser","subtitleParser","currentPoint","subtitleControl","subtitleMenu","changeHandler","createSubtitleControl","onChange","data-subtitle-index","srcLang","setActiveSubtitleItem","setActiveSubtitleClass","disableSubtitles","loadSubtitles","defaultSubtitle","showSubtitle","hideSubtitle","subtitle","subtitleEnd","entry","setNativeMode","./subtitles/parser","24","TIMECODE_RE","seconds","timecode","entries","lines","25","IS_IE","IS_IPAD","IS_IPAD_CHROME","IS_IPHONE","IS_ANDROID","IS_ANDROID_FIREFOX","IS_ANDROID_SAMSUNG","IS_SILK","IS_WP","WP_VER","IE_MOBILE_VER","IOS_VER","parseIOSVersion","ANDROID_VER","ios","iPhone","iPad","opera","addTextTrack","webkitFullscreenEnabled","webkitCancelFullScreen","mozFullScreenEnabled","exitFullscreen","msExitFullscreen","inlineBlock","dataload","flex","svg","createElementNS","createSVGRect","zeropreload","cachedVideoTag","firstframe","plugins","ver","ActiveXObject","GetVariable","description","enabledPlugin","vendors","26","twitter","tweet","27","Buffer","slider","barSlider","zeropad","sec","PLAY_ROUNDED_OUTLINE","PLAY_ROUNDED_FILL","PLAY_SHARP_FILL","PLAY_SHARP_OUTLINE","PAUSE_ROUNDED_OUTLINE","PAUSE_ROUNDED_FILL","PAUSE_SHARP_FILL","PAUSE_SHARP_OUTLINE","LOADING_ROUNDED_OUTLINE","LOADING_ROUNDED_FILL","LOADING_SHARP_FILL","LOADING_SHARP_OUTLINE","fc","hovertimer","elapsed","speedFlash","durationEl","timelineTooltip","origRatio","timelineApi","rtl","volumeSlider","volumeApi","noToggle","speedAnimationTimers","setRatio","slide","buffers","_e","dragging","errors","oldOverflow","lastMove","is_over","reg","mouseoutTimeout","percentage","_a","showMessage","initPoster","playerEl","resize","resizeHandle","bc","has_bg","forcedSplash","cancelAnimationFrame","./ui/bar-slider","./ui/slider","28","activeClass","inactiveClass","childSelector","totalBars","bar","getMouseValue","../../common","29","calc","vertical","maxValue","mousemove","move","skipAnimation","alsoCssAnimations","delayedFire","30","textArea","execCommand","doCopy","31","instances","oldHandler","onbeforeunload","isSafari","safariVersion","initializePlayer","registerExtension","js","seekStep","tooltip","errorUrls","hlsFix","playerCount","URLResolver","supportLocalStorage","storage","flowplayerTestStorage","lastSeekPosition","originalClass","urlResolver","flowplayerDebug","aspectRatio","isRTL","currentSpeed","hijacked","selectEngine","skipStore","shutdown","jsUrls","cssUrls","eng","enginePreference","playerId","is_ready","ed","scriptConf","confObject","videoTagConfig","evName","./common","./ext/events","./ext/resolve","./ext/ui/bar-slider","./ext/ui/slider","is-function","32","logo","popup","backgroundImage","./engine/embed","./engine/flash","./engine/hlsjs","./engine/html5","./ext/airplay","./ext/analytics","./ext/chromecast","./ext/cuepoint","./ext/embed","./ext/facebook","./ext/fullscreen","./ext/keyboard","./ext/menu","./ext/message","./ext/mobile","./ext/playlist","./ext/qsel","./ext/share","./ext/subtitle","./ext/support","./ext/twitter","./ext/ui","./flowplayer","es5-shim","33","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","len2","output","lookup","tripletToBase64","encodeChunk","Uint8Array","34","targetElement","isNative","W3C_MODEL","setSelectorEngine","selectorEngine","rootListener","propertyName","registry","removed","findTarget","isString","__beanDel","ft","originalFn","str2arr","put","RegEntry","nameRegex","namespaceRegex","eventSupport","listener","eventType","customType","forAll","commonProps","mouseProps","mouseWheelProps","keyProps","textProps","touchProps","messageProps","stateProps","overOutRegex","typeFixers","typeFixerMap","isAncestor","cleanup","addEvent","nativeEvents","customEvents","condition","newEvent","rightClick","ne","inNamespaces","checkNamespaces","checkElement","checkOriginal","checkHandler","pfx","del","custom","rm","removeListener","orgType","fireListener","typeSpec","isTypeStr","delfn","from","beanDel","names","wrappedHandler","eargs","eventElement","isBean","fixer","CollectGarbage","35","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","isBuffer","isnan","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","buf","hexSlice","utf8Slice","asciiSlice","latin1Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","asciiWrite","blitBuffer","byteArray","asciiToBytes","ucs2Write","hi","lo","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","includes","strLen","hexWrite","toJSON","_arr","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","base64-js","isarray","36","indexof","isTruthy","cl","classList","getTokens","setTokens","37","38","returnExports","isCallable","hasToStringTag","isES6ClassFn","fnToStr","tryFunctionObject","strClass","to_string","isPrimitive","Empty","$Array","ArrayPrototype","$Object","ObjectPrototype","$Function","FunctionPrototype","$String","StringPrototype","$Number","NumberPrototype","array_slice","array_splice","array_push","array_unshift","array_concat","array_join","toStringTag","constructorRegex","spaceStripped","regexExec","isRegex","tryRegexExec","tryStringObject","supportsDescriptors","forceAssign","isActualNaN","ES","toStr","bound","boundLength","boundArgs","owns","arraySlice","arraySliceApply","origArraySlice","origArraySliceApply","strSlice","strSplit","strIndexOf","pushCall","isEnum","arraySort","hasUnshiftReturnValueBug","properlyBoxesContext","properlyBoxesNonStrict","properlyBoxesStrict","threwException","__","boxedString","splitString","every","reduceCoercesToObject","___","reduceRightCoercesToObject","reduceRight","hasFirefox2IndexOfBug","searchElement","hasFirefox2LastIndexOfBug","spliceNoopReturnsEmptyArray","deleteCount","spliceWorksWithEmptyObject","spliceWorksWithLargeSparseArrays","spliceWorksWithSmallSparseArrays","A","relativeStart","actualStart","actualDeleteCount","itemCount","maxK","minK","originalJoin","hasStringJoinBug","separator","sep","hasJoinUndefinedBug","pushShim","pushIsNotGeneric","pushUndefinedIsWeird","sortIgnoresNonFunctions","e2","sortThrowsOnRegex","sortIgnoresUndefined","compareFn","equalsConstructorPrototype","ctor","isStandardArguments","hasDontEnumBug","hasProtoEnumBug","hasStringEnumBug","excludedKeys","$console","$self","$frame","$frames","$frameElement","$webkitIndexedDB","$webkitStorageInfo","$external","$width","$height","$top","$localStorage","hasAutomationEqualityBug","dontEnums","dontEnumsLength","isArguments","callee","isFn","isArgs","isObject","isStr","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","dontEnum","keysWorksWithArguments","keysHasArgumentsLengthBug","argKeys","originalKeys","daysInMonth","month","year","originalGetDate","hasToDateStringFormatBug","hasNegativeMonthYearBug","getUTCMonth","aNegativeTestDate","aPositiveTestDate","hasToUTCStringFormatBug","toUTCString","hasToStringFormatBug","getTimezoneOffset","toDateString","originalGetFullYear","getFullYear","originalGetMonth","getMonth","getDate","originalGetUTCFullYear","getUTCFullYear","originalGetUTCMonth","originalGetUTCDate","getUTCDate","originalGetUTCDay","getUTCDay","originalGetUTCHours","getUTCHours","originalGetUTCMinutes","getUTCMinutes","originalGetUTCSeconds","getUTCSeconds","originalGetUTCMilliseconds","getUTCMilliseconds","dayName","monthName","date","day","hour","minute","getDay","getHours","getMinutes","getSeconds","timezoneOffset","hoursOffset","minutesOffset","negativeDate","hasNegativeDateBug","toISOString","hasSafari51DateBug","NaN","tv","toISO","maxSafeUnsigned32Bit","hasSafariSignedIntBug","supportsExtendedYears","acceptsInvalidDates","NativeDate","DateShim","Y","M","D","ms","millis","sToShift","msToShift","dayFromMonth","months","isoDateExpression","UTC","millisecond","isLocalTime","signOffset","hourOffset","minuteOffset","hasToFixedBugs","toFixedHelpers","multiply","divide","numToString","acc","x2","fractionDigits","z","compliantExecNpcg","maxSafe32BitInt","hasToPrecisionUndefinedBug","toPrecision","originalToPrecision","precision","separator2","lastLength","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","separatorCopy","splitLimit","str_replace","group","searchValue","replaceValue","hasCapturingGroups","originalLastIndex","string_substr","hasNegativeSubstrBug","normalizedStart","ws","wsRegexChars","trimBeginRegexp","trimEndRegexp","hasTrimWhitespaceBug","hasLastIndexBug","searchString","searchStr","numPos","searchLen","origParseInt","hexRegex","origParseFloat","originalLastIndexOf","radix","defaultedRadix","inputString","ensureNonEnumerable","39","40","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","41","42","alert","confirm","prompt","43","44","freeExports","freeModule","freeGlobal","maxInt","tMax","skew","damp","regexPunycode","regexNonASCII","regexSeparators","not-basic","invalid-input","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","counter","ucs2encode","digitToBasic","digit","adapt","numPoints","firstTime","decode","oldi","bias","basic","baseMinusT","encode","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","ucs2","toASCII","45","scriptpath","urlArgs","ids","ar","$script","paths","idOrDone","optDone","idOrDoneIsDone","loopFn","dset","force","missing","dep","cs","temml","let","loc","lexer","deflt","hyphenate","getBaseElem","isCharacterBox","protocolFromUrl","displayMode","annotate","leqno","throwOnError","errorColor","macros","colorIsTextColor","strict","trust","maxSize","maxExpand","isTrusted","mathmlBuilder","numArgs","argTypes","allowedInArgument","allowedInText","allowedInMath","numOptionalArgs","infix","primitive","toNode","toMarkup","toText","setLabel","MathNode","TextNode","newDocumentFragment","sup","codePointAt","widehat","widecheck","widetilde","wideparen","utilde","overleftarrow","underleftarrow","xleftarrow","overrightarrow","underrightarrow","xrightarrow","underbrace","overbrace","overgroup","overparen","undergroup","underparen","overleftrightarrow","underleftrightarrow","xleftrightarrow","Overrightarrow","xRightarrow","overleftharpoon","xleftharpoonup","overrightharpoon","xrightharpoonup","xLeftarrow","xLeftrightarrow","xhookleftarrow","xhookrightarrow","xmapsto","xrightharpoondown","xleftharpoondown","xtwoheadleftarrow","xtwoheadrightarrow","xlongequal","xrightleftarrows","xtofrom","xleftrightharpoons","xrightleftharpoons","yields","yieldsLeft","mesomerism","longrightharpoonup","longleftharpoondown","eqrightharpoonup","eqleftharpoondown","\\cdrightarrow","\\cdleftarrow","\\cdlongequal","yieldsLeftRight","chemequilibrium","bin","inner","punct","rel","accent-token","mathord","op-token","spacing","textord","math","I","L","H","V","X","Z","--","---","``","''","K","ee","te","fontFamily","font","se","fence","lspace","rspace","oe","ae","le","family","mclass","ie","de","ce","me","pe","ue","ge","isStretchy","mathDepth","be","fe","Set","ye","\\`","\\'","\\^","\\~","\\=","\\u","\\.","\\\"","\\r","\\H","\\v","\\c","ke","xe","Ae","number","we","ve","pt","pc","dd","cc","nd","nc","sp","mm","cm","Ne","Te","Se","qe","withLevel","below","Oe","\\equilibriumRight","\\equilibriumLeft","upperArrowBelow","lowerArrowBody","Me","Be","Ce","ze","Ee","=","|",".","Ie","side","Fe","semisimple","De","Ge","range","je","Ve","We","popToken","isExpandable","noexpand","treatAsRelax","expandOnce","consumeArgs","consumeSpaces","future","Xe","Ze","Ye","Je","Ke","Qe",",","\\not","-",":","\\DOTSB","\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcap","\\bigsqcup","\\bigtimes","\\And","\\longrightarrow","\\Longrightarrow","\\longleftarrow","\\Longleftarrow","\\longleftrightarrow","\\Longleftrightarrow","\\mapsto","\\longmapsto","\\hookrightarrow","\\doteq","\\mathbin","\\mathrel","\\relbar","\\Relbar","\\xrightarrow","\\xleftarrow","\\DOTSI","\\int","\\oint","\\iint","\\iiint","\\iiiint","\\idotsint","\\DOTSX","expandAfterFuture","et",")","]","\\rbrack","\\}","\\rbrace","\\rangle","\\rceil","\\rfloor","\\rgroup","\\rmoustache","\\right","\\bigr","\\biggr","\\Bigr","\\Biggr",";","tt","nt","fetch","consume","envName","ot","at","cols","envClasses","autoTag","singleRow","emptySingleRow","maxNumCols","arraystretch","arraycolsep","gullet","beginGroup","subparse","parseExpression","endGroup","nextToken","parseSizeGroup","rowGaps","hLinesBeforeRow","scriptLevel","labels","dt","ut","borderTop","borderBottom","paddingTop","paddingBottom","paddingLeft","paddingRight","borderLeft","mt","align","borderRight","ht","matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","expect","rightColor","limits","alwaysHandleSupSub","parentIsSupSub","symbol","suppressBaseShift","delimiters","callFunction","Le","bordermatrix","fromCodePoint","bt","yt","wt","xt","kt","vt","At","Nt","Tt","withColor","color","isTextColor","breakOnTokenText","newLine","St","\\global","\\long","\\\\globallong","\\def","\\gdef","\\edef","\\xdef","\\let","\\futurelet","qt","Ot","unexpandable","parseFunction","consumeArg","expandTokens","pushToken","isDefined","Mt","\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg","Bt","Ct","zt","$t","Et","It","delim","leftrightDepth","Lt","Ft","borderColor","backgroundColor","nameGroup","optArgs","parseArguments","Dt","withFont","mathvariant","Gt","\\Bbb","\\bold","\\frak","\\bm","jt","Pt","scriptscript","Rt","incrementLevel","numer","denom","hasBarLine","barSize","leftDelim","rightDelim","continued","Ut","isBlank","isOver","command","Ht","totalheight","verticalAlign","Vt","_t","Wt","alignment","justifyContent","switchMode","Xt","Zt","mustPromote","stretchy","form","Yt","Jt","isSideset","prescripts","postscripts","Kt","Qt","rr","fromMathOp","needsLeadingSpace","isFollowedByDelimiter","nr","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨅","⨆","⨃","⨇","⨈","⨉","sr","∫","∬","∭","∮","∯","∰","∱","∲","⨌","⨍","⨎","⨏","⨒","⨓","⨕","⨖","⨗","⨘","⨙","⨚","prevAtomType","or","dy","transform","getColor","lr","ir","numerator","denominator","cr","\\tiny","\\sixptsize","\\Tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge","withFontSize","fontSize","smashHeight","smashDepth","dr","mr","ur","inSubOrSup","hr","gr","needsSpacing","br","fontShape","fr","mathbf","mathrm","textit","mathit","mathnormal","mathbb","mathcal","mathfrak","mathscr","mathsf","mathtt","yr","freeze","wr","xr","Q","kr","ϵ","ϑ","ϰ","φ","ϱ","ϖ","vr","Ar","Nr","Tr","upperCaseLatin","normal","bold","italic","bold-italic","script-bold","fraktur","fraktur-bold","double-struck","sans-serif","sans-serif-bold","sans-serif-italic","sans-serif-bold-italic","monospace","lowerCaseLatin","upperCaseGreek","lowerCaseGreek","varGreek","numeral","Sr","qr","Or","Mr","Br","Cr","\\nobreak","\\allowbreak","zr","\\ ","\\space","\\nobreakspace","$r","\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textsc","Er","\\textbf","\\textmd","Ir","\\textit","\\textup","withTextFontFamily","withTextFontWeight","withTextFontShape","Lr","star","Fr","Pr","Ur","tokenRegex","catcodes","%","setCatcode","lex","Hr","builtins","undefStack","Vr","^","\\limits","\\nolimits","_r","expansionCount","feed","pushTokens","scanArgument","_getExpansion","expandNextToken","expandMacro","expandMacroAsText","Wr","Xr","₊","₋","₌","₍","₎","₀","₁","₂","₃","₄","₅","₆","₇","₈","₉","ₐ","ₑ","ₕ","ᵢ","ⱼ","ₖ","ₗ","ₘ","ₙ","ₒ","ₚ","ᵣ","ₛ","ₜ","ᵤ","ᵥ","ₓ","ᵦ","ᵧ","ᵨ","ᵩ","ᵪ","⁺","⁻","⁼","⁽","⁾","⁰","¹","²","³","⁴","⁵","⁶","⁷","⁸","⁹","ᴬ","ᴮ","ᴰ","ᴱ","ᴳ","ᴴ","ᴵ","ᴶ","ᴷ","ᴸ","ᴹ","ᴺ","ᴼ","ᴾ","ᴿ","ᵀ","ᵁ","ⱽ","ᵂ","ᵃ","ᵇ","ᶜ","ᵈ","ᵉ","ᶠ","ᵍ","ʰ","ⁱ","ʲ","ᵏ","ˡ","ᵐ","ⁿ","ᵒ","ᵖ","ʳ","ˢ","ᵗ","ᵘ","ᵛ","ʷ","ˣ","ʸ","ᶻ","ᵝ","ᵞ","ᵟ","ᵠ","ᵡ","ᶿ","Zr","𝒜","ℬ","𝒞","𝒟","ℰ","ℱ","𝒢","ℋ","ℐ","𝒥","𝒦","ℒ","ℳ","𝒩","𝒪","𝒫","𝒬","ℛ","𝒮","𝒯","𝒰","𝒱","𝒲","𝒳","𝒴","𝒵","Yr","́","̀","̈","̃","̄","̆","̌","̂","̇","̊","̋","̧","Jr","ὰ","ᾱ","ᾰ","ὲ","ὴ","ὶ","ῒ","ῑ","ῐ","ὸ","ὺ","ῢ","ῡ","ῠ","ὼ","Ὺ","Ῡ","Ῠ","Ὼ","Kr","Qr","en","tn","isPreamble","endOfExpression","parseAtom","formLigatures","handleInfixNodes","handleSupSubscript","parseGroup","formatUnsupportedCmd","parseGroupOfType","parseUrlGroup","parseArgumentGroup","parseStringGroup","parseRegexGroup","parseSymbol","rn","addEqnNum","nn","sn","un","search","findIndex","startsWith","an","ln","rawData","preProcess","pn","ignoredTags","ignoredClasses","cn","dn","(","mn","hn","gn","compatMode","linebreak","textAlign","he","whiteSpace","renderToString","renderMathInElement","fences","postProcess","ParseError","definePreamble","__parse","__renderToMathMLTree","__defineSymbol","__defineMacro","emptyToOptional","selfOrClosest","$result","selfOrFind","eh","URLHelper","getQueryString","qi","buildUrl","queryString","buildQueryString","qs","vv","buildQueryParamMap","buildNormalizedQueryParamMap","omitIndex","regex_1","m_1","kv","decodeURIComponent","mergeQueryParams","mergeCallBack","firstWins","valueA","_valueB","latterWins","_valueA","valueB","combine","combined","offsetToTarget","addRecurse","DeferredPromise","execute","_promise","_resolve","_reject","finally","debounce","formatString","varargs","escapeSequence","stringParam","intParam","floatParam","argPos","dec","mult","isMobileOS","browserInfo","isIOSSafari","iosDebugConsole","iosConsole","offsetTopToBody","offsetLeftToBody","nodelistToArray","_l","NOOP","ScrollPage","getScrollRoot","scrollRoot","setupScrollRoot","getScrollPosition","hasScrollChanged","lastScrollPosY","scrollToAnimated","scrollToLastPosAnimated","onScrollChange","scrollListeners","registerChangeListener","isWatching","watch","unregisterChangeListener","unwatch","eventParams","passiveeventlisteners","passive","setScrollEnabled","bodyFixClassName","transitionEl","setEnabled","classNameToSealPage","mobileHeaderHight","Snippet","$base","EventIdPreAjaxCall","EventIdPreReplace","hideLoadingIndicator","EventIdErrorAjaxCall","initConditionalVisibility","registerForm","registerAjaxLinks","registerAjaxTabs","preAjax","activator","showLoadingIndicator","errorAjax","textStatus","oldElement","preReplace","newElement","_index","$clickedElement","$event","$targetDiv","history","replaceState","replaceClustered","showTabContent","$tabContent","$tabContents","_idx","TAB_EVENTS","TAB_CONTENT_SHOWN","TAB_CHANGE","tab","Tabs","getTabContent","getTabContents","$snippet","snippetUrl","replaceSelectorsInt","replaceSelectors","targetDiv","$data","newElementData","$newElement","replaced","replacement","toReplace","EventIdPostReplace","replacedTarget","removedTarget","selParent","CLASS_CLUSTER_PARENT","$groupParent","id_1","DATA_CLUSTER_ID","$groupTarget","$replacement","$toReplace","CLASS_CLUSTER_CONTAINER","ajaxSubmitForm","$eventProducer","callbackFunction","$form","clearExpression","submitEventCoalescingTimeout","HTMLElement","removeFields","ajaxSubmit","$submitEvent","EventIdFormSubmit","originalParams","action","pathname","newParams","formSerialize","newState","$target","LoadingIndicator","showLoadingByEv","resetForm","$form_1","EventIdFormReset","$formRow","$formField","fieldName","$watchedField","targetValue","valuesMatching","csSearch","FilterMultiSelectionDecorator","decoratedFn","defaultHeight","S2Utils","NoOpSelection","FilterMultiSelectResultDecorator","selectedValues","$cb","FilterMultiSelectCloseOnSelectDecorator","dataKey","openState","FilterMultiSelectHierarchicalDecorator","_clickOnCaret","selectedLevel","doBreak","currentId","$o","DropDownSearchPromptDecorator","EH_LOGIN_BUTTON_COMMANDS","LOGIN","LOGOUT","EhApi","getInstance","_instance","setLogin","ehLoginButton","clearLogin","myDocumentsReady","MyDocumentsProxy","markReady","nebpReady","NebpProxy","setCartRestoreProgress","total","cart","BreakPointViewType","Breakpoint","isInRange","MOBILE_THRESHOLD","isMobile","Breakpoints","_initialized","_isMobile","_currentViewType","_listener","_currentBreakpoint","registerViewTypeListener","_viewTypeListener","dispatchViewTypeChanged","unregisterViewTypeListener","registerResizeListener","_resizeListener","unregisterResizeListener","invalidateNow","windowWidth","lastValidBreakpoint","_breakpoints","_p","dispatchBreakpointChanged","MOBILE","DESKTOP","dispatchSizeChanged","viewType","_ticking","invalidate","EhCartController","registerControls","mutationObserver","vm","onCartChange","carts","attributeFilter","CART_CLASSNAME","CART_PROGRESS_CLASSNAME","TOOLTIP_CLASSNAME","TOOLTIP_TEXT_CLASSNAME","tooltipsText","EhCartViewModel","progressValue","badgeText","amountOfItems","_b","ring","tooltipTemplates","badge","Constants","VISIBILITY_CHANGE","TAB_ACTIVATE_REQUEST","FILTER_BUTTON_EVENTS","STICKY_CHANGE","NAV_FLYOUT_EVENTS","FLYOUT_EXPANDED","UIStateValue","VPAGE_EVENTS","VPAGE_OPENED","VPAGE_CLOSED","DRAWER_OPENED","DRAWER_CLOSED","TAB_ACTIVATE","VTAB_ACTIVATE","SVG_SHOWN","UIStateChanged","getDispatchCount","dispatchCount","nextDispatch","maxDispatch","uiStateMarketHeader","uiStateMainNav","uiStateSearchPanel","UIObservableSupport","lastState","stateProp","INIT","last_1","chg_1","registerUIStateListener","unregisterUIStateListener","CookieDisclaimer","$component","getCookie","deleteCookie","cookieFound","$consentMgmt","$rep","setGlobalCookie","Tracking","injectTrackingEvent","utag","gdpr","showConsentPreferences","STICKY_EVENTS","DOM_MUTATION","CountryDetector","handleCountrySelection","$selectOption","$button","$marketChooser","Message","putParam","postMessage","rememberCountryChooserShown","setCookie","updateState","reinit","doit_1","countryOption","$countrySelect","selectedCountry","ls","selectedLanguage","$languageSelect","prefLs","elP","elL","link","qps","encodeURI","$redirectButton","getVal","$countryDetection","Overlay","EventIdPreClose","DatePicker","initializeDatePicker","CLS_MARKER_DATEPICKER","datepicker","_hideDatepicker","findInputField","$dp","$input","connectResetButton","CLS_TRIGGER_DATEPICKER_RESET","$inputField","CLS_MARKER_DATEPICKER_CONTROL","CLS_MARKER_DATEPICKER_DISPLAY","CLS_MARKER_DATEPICKER_PARENT","handleLayout","inst","widgetBounds","spaceBelow","pageOffset","inputBounds","widgetElement","dpDiv","placement","$resetButton","maxDate","minDate","dateFormat","onSelect","beforeShow","showOtherMonths","selectOtherMonths","showAnim","firstDay","defaultDate","FlexInfo","segm","showId","showDesc","FullContentOverlayController","OVERLAY_CLASSNAME","currId","EhTabController","getControllerInside","overlay","addExternalTabName","CONFIG_TAB_ID","isConfigurationOpen","handleOnsiteNavigation","querySelector","CONFIG_TARGET","OVERLAY_OPENED_CLASSNAME","openButtons","btn","onOpenClick","closeButtons","onCloseClick","getTabIdFromParam","TAB_ID_PARAM","pushConfigTabIdState","pushState","clearConfigTabIdState","OVERLAY_CONTAINER_CLASSNAME","OVERLAY_OPEN_BTN_CLASSNAME","OVERLAY_CLOSE_BTN_CLASSNAME","OVERLAY_CLOSED_CLASSNAME","OVERLAY_TARGET_DATA","OVERVIEW_TARGET","fireTabChangedExtern","_c","FullContentOverlayViewModel","containers","OPENED_CLASSNAME","ResizeObserver","targetId","CLOSED_CLASSNAME","HEADER_EVENTS","getVisibleViewportHeight","getStickyBoundaryHeight","elementStyles","elementMargins","marginTop","marginBottom","headerBottomFrames","headerBottomRafId","publishHeaderBottom","headerWrapper","publish","follow","Header","destroyRuntime","runtime","dispose","isSnippetRequest","headerComposer","displacingElements","stickyMobileHeader","stickyDesktopHeader","breakpointManager","onViewTypeChanged","lastResizeWidth","disposed","settleStickyAfterHashJump_1","HEADER_DISPLACE_ELEMENT_CLASS","HeaderComposition","HeaderMobileScrollBehavior","HeaderDesktopScrollBehavior","composition","MarketSelector","uiStateSupport","transitionProperty","HEADER_DISPLACE_ACTIVE","_resizeTimeout","_behavior","_resizeNow","_resizeUpdateDelay","initializeHeaderScroll","registerInstance","scroller","unregisterInstance","onFilterButtonStickyChange","stickyClass","displaceByElement","resetStickyParentMinHeight","registerFilterButtonStickyChange","displaceThreshold","lastMetricsKey","stickyBoundaryHeightMax","headerStickyState","headerInitialHeight","headerCollapsedHeight","visibleRowToKeepInViewport","headerStickyThreshold","offsetScrollingUp","getOwner","eligibleInstances","getOwnerThreshold","currentOwner","isHeaderOwner","getHeaderStickyOffset","stickyOffset","getStickyScrollOffset","bannerHeight","marketChooser","setStickyParentMinHeight","stickyParentElement","minHeight","stickyParentInitialMinHeight","dispatchMetrics","visibleHeaderHeight","visibleDisplaceElemHeight","metrics","metricsKey","restrict","headerTop","stackedDisplaceTop","shouldHideHeader","displaceTop","isOverflowingMobile","clampedDisplaceTopMobile","headerOwner","headerShouldBeSticky","DEFAULT_STICKY_OFFSET","innerHeight_1","HEADER_DISPLACEMENT_ACTIVE","displaceByElementRendered","_d","offsetDiff","stickyStack","hiddenHeaderTop","collapsedDisplaceTop","visibleHeaderTop","displaceOffset","isScrollingDown","togetherOffset","wrapBottomMobile","wrapElement","stickyBoundaryHeightMobile","stableStickyBoundaryHeightMobile","normalDisplaceTopMobile","visibledisplaceElemHeight","stickyParentClass","ticking","lastScrollTop","startScrollTop","isSticky","elementUpdateThresholdMin","elementUpdateThresholdMax","anchorNavIsSticky","shouldHideBottomNav","dispplaceTopStacked_1","stackedElems_1","stackedSorting_1","wrapBottomDesktop","normalDisplaceTopDesktop","isOverflowingDesktop","sorting","innerHeight_2","hasStickyScroll","stickyActivationMargin","anchorNavInstance","ANCHOR_NAV_SELECTOR","anchorNavOffsetDiff","bottomNavHeight","bottomNav","_f","headerTopValue","stickyBoundaryHeightDesktop","stableStickyBoundaryHeightDesktop","clampedDisplaceTopDesktop","_g","triggerChange","offsetTop","tableOfContent","currentScrollTop","scrolledUpDistance","_k","_j","_h","_m","IframeScale","baseline","scaled","parent_1","resizeFrame","parentWidth","scaledResized","parent_2","LanguageChooser","goToLanguageChooseLinkFormatter","optionEl","_old","_current","notLanguageChooser","LinkTarget","isExternalAnchor","treatCorporateWebsitesAsExternal","HTMLAnchorElement","isCorporateWebsiteUrl","$linkedArea","event_1","linkTarget","windowName","MouseEvent","$areaRef","event_2","evTarget","showSpinner","findLoadCtrl","hideSpinner","ctrl","loadCtrl","spinner","optionsOrCommand","$original","$label","Maintenance","maintenanceInfo","info","nebp","available","preNebpReqTitle","maintenanceAnnouncementEnabled","MarketChooser","SELECTOR","$marketChooserRoot","mc","DATA_KEY","HOLDER_ID","manageLanguageVisibility","countryCode","$languageOptions","showLanguages","selectNextOption","$selectLanguage","$selectCountry","showOption","CLASS_HIDDEN","$languageSection","handleCountryChange","$buttonChoose","handleLanguageChange","handleChooseButtonClick","marketChooserTarget","used","mc_1","_jqXHR","errorThrown","closeBanner","CLOSED","$selectCountryAndLanguage","event_leaving_website","event_outbound_link","MessageNexus","setListener","getMessageNode","_msgNodes","msgNode_1","getTarget","msgNode","MessageNode","_onMessage","isAllowed","fromLegacyString","messageReceived","_target","_event","onMessage","asLegacyParam","RegistrationState","stateReady","awaitingReady","wrapCall","boundFnSupplier","deferredPromise","boundFn","logger","API_CALL_TIMEOUT_MS","getToken","nebpApi","isLoggedIn","isLoggedInUserRegistrationStateActivationInProcess","isLoggedInUserRegistrationStateInformationMissing","getRegistrationState","isInformationMissing","INFORMATION_MISSING","isActivationInProgress","IN_PROGRESS","FINISHED","UNKNOWN","OVERLAY_EVENTS","EVENT_NODE_CLASS","LAYER_STATE_EVENT","LAYER_STATE_OPENED","LAYER_STATE_CLOSED","isSnippet","registerLinks","registerOverlayLinks","notifyLayerState","closeAll","closeLayer","closeLayerTransp","ref","showContent","showContentTransp","$link","openLayer","forceInit","layer","getContentType","notifyReplaced","layerClose","layerContent","contentCloser","DATA_KEY__OVERLAY_CONTENT","putBackLayer","contentParent","refId","DATA_KEY__LOCAL_REF_ID","openLayerTransp","layerTransp","layerCloseTransp","contentCloserTransp","layerContentTransp","putBackLayerTransp","$originalParent","$contentParentToTransferBack","$contentParentWrapperToTransferBack","putContent","createContentWrapper","layerTitle","setContentType","analyzeRef","innerContent","getTemplate","layerTitleTransp","additionalId","elId","createCenterWrapper","box_2","box_3","registerBlockingBanner","blockingBanner","OVERLAY_CONTENT_WRAPPER_CLASSNAME","onRootInteraction","event_linkname","event_subtype","OVERLAY_BLOCKING_BANNER_CLASSNAME","isMobileSafari","layerContentWrapper","CoverCtrl","registerCoverLinks","initData","analyze","cover","coverLightbox","coverTw","closeCurrent","currentCover","initor","closeCover","CoverLightbox","CoverTw","CoverBase","triggerVPageOpen","trackingLevelsOf","setTrackingLevels","clearTrackingLevels","trackingLevels","triggerVPageClosed","beforeOpen","closer","cleanupContent","putBack","classWrapper","_super","__extends","syncBackTrackingPath","previousPage","ATTR__TRCK_PATHID","DATA__TRCK_PATHID","$vpageSource_1","cid","rootTrackingLevels","ind","backEl","transition","ehOverlayBound","previous","NavigationController","NAV_WRAPPER","SiteSearch","onSearchPanelChange","categories","cat","doCategoryClick","doCategoryFocus","categoriesLink","doCategoryMousedown","doCategoryFocusout","cancelBtn","onCancelBtnClicked","closeBtn","onCloseBtnClicked","menuBtn","onMenuBtnClicked","onScrollPageClicked","onKeypressed","itemsGeneral","isTopLevel","NAV_CLASSNAME","triggerExpanded","NAV_CATEGORY_CLASSNAME","NAV_CATEGORY_LINK_CLASSNAME","NAV_SUBMENU_CLASSNAME","NAV_WRAPPER_CLASSNAME","NAV_HEADER_CANCEL_BUTTON_ID","NAV_HEADER_MOBILE_TARGET_CONTAINER_CLASSNAME","NAV_HEADER_MOBILE_DESKTOP_CONTAINER_CLASSNAME","NAV_HEADER_ROW_LEFT_CLASSNAME","NAV_CANCEL_CLASSNAME","NAV_MENU_BUTTON","NAV_CLOSE_MENU_BUTTON","ICON_CLASSNAME","NAV_OVERLAY_CLASSNAME","PAGE_WRAPPER_CLASSNAME","SEARCH_INPUT_CLASSNAME","NAV_META_GENERAL_CLASSNAME","NAV_META_ITEM_GENERAL_CLASSNAME","NAV_FOCUS_PANEL_CLASSNAME","isSubOpen","showCategory","checkFocusPanel","wasOpened","isCatOpen","clickRoot","OPENED","navGeneral","icons","subnav","subnavWrapper","headerNavigationCancelButton","viewTargetContainerMobile","viewTargetContainerDesktop","focusPanels","pageWrapper","NavigationViewModel","onBreakpointChange","syncDropdownPosition","focusPanel","totalHeight_1","ABSOLUTE_CLASSNAME","INVISIBLE_CLASSNAME","isNavOpen","isSubMenuOpened","icon","CAT_CLOSED_CLASSNAME","CAT_OPENED_CLASSNAME","ACTIVE_CLASSNAME","submenu","HIDDEN_CLASSNAME","LEFT_FULL_CLASSNAME","RIGTH_FULL_CLASSNAME","LEFT_NONE_CLASSNAME","RIGHT_NONE_CLASSNAME","siteEl","toggleNaviClassName","OVERFLOW_HIDDEN_CLASSNAME","BLOCK_CLASSNAME","parentCat","isCatActive","AVOID_CLOSE_CLASSNAME","hideLevel3","submenus","sm","parent_3","navigation","activeElem","activeElems","submenu_1","aElement","submenu_2","currentNavItem","pageWrapperMarginTop","windowsWidth","nbLevels","firstLevel","headerOffset","maxHeight","stikyElements","header_1","ShortcutController","SHORTCUT_BAR_WRAPPER_CLASSNAME","SHORTCUT_BAR_BUTTONS_CLASSNAME","SHORTCUT_BAR_SHOW_MORE_LESS_CLASSNAME","SHORTCUT_BAR_CONTENT_CLASSNAME","COLS_TO_SHOW","shortcutBarContent","shortcutBarButtons","shortcutBarShowMoreLess","EhShortcutViewModel","rows","sumWidth","heightColumns","TAB_CLASSNAME","reportInitialTab","previousBtn","onPreviousClicked","nextBtn","onNextClicked","navigationItems","onItemClicked","linkItems","onLinkItemClicked","reqId","parseTabId","setCurrentItemFromId","tabOrId","tabAttrId","extTabId","csTrckTabId","refresh","TAB_NAVIGATION_CLASSNAME","TAB_NAVIGATION_ITEM_CLASSNAME","TAB_PREVIOUS_BTN_CLASSNAME","TAB_NEXT_BTN_CLASSNAME","TAB_ITEM_LINK_BTN_CLASSNAME","setCurrentItem","scrollToItem","setCurrentItemFromLink","EhTabViewModel","_currentItem","getItemByIdx","targetIndex","previousItem","_scrollerItems","nextItem","linkItem","triggerJumpToAnchor","reqTarget_1","si","tabId","getItemByTabId","interactive","updateHash","_deselected","getItemByEl","onTabSelectionChange","alignItemToViewport","getCurrentItemId","scrollerItem","_externalTabs","navigationHeight","initialSelection","invalidateItems","MIN_AMOUNT_SCROLL_ITEMS","invalidateControls","onNavigationScrollChange","initTabByHash","target_1","EhProcessMapController","mapIdFromHash","tabIdFromParam","scrollerPos","clippingLeft","clippingRight","leftOffset","rightOffset","offsetLeft","targetScrollPosLeft","TRANSITION_DURATION","TRANSITION_EASING_LINEAR","animateToAnchor","thresholdBegin","TRANSITION_EASING_SWING","getItemByOffset","thresholdEnd","tabIds","initialTabId","extendedChangeReport","DISABLED_CLASSNAME","HIDE_CLASSNAME","previousButton","nextButton","targetKey","topPos","hideClass","scrollerDelta","oldTabId","newHeading_1","siblingHeadings_1","__spreadArray","TooltipController","tooltips","onMouseEnter","onMouseLeave","onMouseMove","tooltipsTarget","hasAttribute","TOOLTIP_DISABLE_CLICK_DATA_ATTR","onMouseClick","TooltipViewModel","TOOLTIP_TARGET_MODE","onMouseCloseLeave","closeTooltipsTarget","onMouseCloseClick","tooltipsHtml","onBlur","TOOLTIP_DATA_ATTR","TOOLTIP_TARGET_DATA_ATTR","TOOLTIP_CLOSE_TARGET_DATA_ATTR","TOOLTIP_MODE_DATA_ATTR","EHEL_TOOLTIP_HTML_CLASS","triggerRect","triggerX","triggerY","posVal","top_1","ttId","TOOLTIP_TARGET_ID","resolveBubble","wrapperRect","bubbleWidth","bubbleHeight","TOOLTIP_CLOSE_TARGET_ID","TOOLTIP_ELEMENT_DATA_ATTR","scoped","PopoverButton","POPOVER_BUTTON_SELECTOR","popOverButton","PopoverButtonCtrl","_button","onButtonClick","registerDocumentClick","onDocumentClick","unregisterDocumentClick","POPOVER_BUTTON_BUTTON_SELECTOR","POPOVER_BUTTON_POPOVER_SELECTOR","popoverButton","_popover","popoverElement","buttonElement","VisibleItem","PopoverController","POPOVER_TARGET_ATTR","onTriggerClick","POPOVER_CLOSE_TARGET_ATTR","documentListenerBound","POPOVER_CONTAINER_CLASS","POPOVER_OPEN_CLASS","popover","inside","openPopovers","triggers","PreventRubberbandScroller","_scrollContainerSelector","NoRubberbandScroller","register","hel","onTouchStart","onTouchMove","disableRubberBand","_clientY","__el","_el","isOverlayTotallyScrolled","PlaceholderType","ProductPricing","$productPricingRoot","pricing","fetchPrices","findPricePlaceholders","getType","Price","fetchPricesPreConfigured","PricePreConfigured","$lazyContainer","SELECTOR_LAZY_MARKER","SELECTOR_LAZY_TRIGGER_LOAD","_$event","QuickSelect","$quickSelectRoot","QS_EVENTS","ORDER_CODE_COMPLETE","selectedOptions","getSelectedOptions","fetchPricesConfigured","getSelectedChildProduct","materialNumber","fetchPricesForOptions","Option","ORDER_CODE_LEGEND_CHANGE","legend","isLastLayer","ORDER_CODE_CHANGE","fetchPriceFor","matrNo","priceVisibilityName","priceVisibility","PriceVisibility","fetchSimplePriceInfo","placeholders","PricePlaceholder","service","getConfig","matnr","callBack","getPrice","serviceResponse","rsp","priceInfo","isMaterialResult","materialNo","fromPricePrefix","price","currency","materialNumberOverwrite","getState","PricePlaceholderState","INITIAL","getMaterialNumber","getPriceVisibility","showPrice","showError","startLoading","getPriceConfigured","getPreConfiguredOptions","getPriceForOptions","isOptionStandard","isOptionDependend","isOptionNoPrice","isOptionsResult","EventIdProductPriceUpdate","PricingService","ANONYMOUS","LOGGED_IN","widget","isPreConfigured","placeholderType","$widgetEl","PriceAmountControl","PriceScaleDisplayWidget","PriceAmountMirrorWidget","SELECTOR_MIRROR","PriceMirror","PriceDisplayWidget","PriceOptionDisplayWidget","isInsideLazyContainer","getOption","isMimicPriceDisplayWidget","UNAVAILABLE","INITIAL_LAZY","setLoading","LOADING","showNoPrice","setNoPrice","NO_PRICE","setDebugInfo","setUnavailable","filterResultByMaterialNumber","getUnitLabel","unitKey","unitLabels","isConfigured","optionValue_1","optionInfo","priceScaleCropped_1","priceScaleLegend","priceScaleCropped_2","priceScaleFormatted","unitLabel","setPrice","Intl","NumberFormat","priceFormatLocale","SHOWING_PRICE","minimumFractionDigits","maximumFractionDigits","nextScale","nextQty","fromqty","piecesLabel","setPriceScales","$qsElem","QSPriceScaleLegend","CONTAINER_CLASS_NAME","priceScaleMaxLevel","registrationState","setRegistrationInProgress","REGISTRATION_IN_PROGRESS","setRegistrationInformationMissing","REGISTRATION_INFORMATION_MISSING","setRequest","ON_REQUEST","NEEDS_LOGIN","lazy","statePrice","isConfiguredPrice","calculatePrice","amountVal","$amount","currentAmount","currentScale","unitPrice","variant","amount","totalPrice","locale","configComplete","pricePrefix","priceFormatted","$numericStepper","hideAll","loadingView","unavailableView","loginView","noPriceView","priceView","requestView","registrationInProgressView","registrationInformationMissingView","dataProvider","cleanScaleEntries","insertScaleEntry","priceScaleContainer","priceScaleEntryTemplate","$template","mimicPriceDisplayWidget","priceUpdate","buildRequest","materialOptions","optionPrices","serviceUrl","endpointPath","getCustNetPrice","getCustOptionsPrice","getCustPrice","getAnonNetPrice","getAnonOptionsPrice","getAnonPrice","qp","includeMinprice","jw_token","salesorg","salesOrganization","siteUrl","siteURL","awaitNebpToken","nebpTokenProvider","dummyTokenProvider","artificial","serviceResponseCache","orderCodeLabels","$quickSelectHeader","$addToCartButtons","$orderCodeLegendBackButton","$orderCodeLegendToggleButton","$orderCodeResults","$configureButtonsGlobal","$configureLinkGlobal","$extOrderCodeReceiver","predefinedOrderCode","$additionalOptionsRow","$orderCodeLegendButtonGroup","QuickSelectRv","CLASS_QSRV","QSOrderCodeLabel","orderCode","orderCodeLabel","amountSettingsConfig","ehNumericStepper","CLASS_DISABLED","$orderCodeLegendToggleRow","CLASS_TOGGLE_IS_OPEN","QSViewModel","copyAttributes","event_configuration_step","event_order_code","fullyConfigured","orderCodeVO","orderCodeExternalized","updateTrackingInfo","prepareOrderCodeForExternals","productRoot","productMaterialNumber","ORDER_CODE_HIGHLIGHT","highlightSegment","orderCodeLegend","getCurrentStep","markAsDisabled","changeState","steps","getStepIndex1","featureCoding","storeStep","rewindSteps","coding","childProduct","setDisabled","setInitialized","initialized","isInitialized","createTrackingInfo","ocs","orderCodeString","getOpenPositions","currentStepIndex","currentStepFeature","serializeOptions","accumulated","injectURLParam","paramName","paramValue","optionCoding","ensureCodingWidth","FEATURE_CODING_CHILD_PRODUCT_SELECTION","quickSelectService","QuickSelectService","withStaticHeader","apiKey","withStaticQueryParam","QSOrderCodeLegend","childProducts","orderCodeCheck","OrderCodeCheckState","observeLoading","InitialState","State","_orderCode","ID_ITERATOR","stateManager","LoaderState","_isLoading","_latestRequest","currentLoader","finallyHelper","isCurrentLoader","_loadingListener","_templateData","registerLoadingListener","onResponse","guard","sameLoader","isLatestRequest","observedSelect","currentStep","selectChildProduct","ordercode","fillPosition","_textStatus","NoopState","RecommendationState","SelectionState","ErrorState","globalErrorMessage","_response","OrderCode","createFromRoot","labelProductPreselection","Step","setSelection","callOrderCodeCheck","ordercodecheck","createFromOrderCode","selectedRecommendation","recommendation","artificialResult","kept","productFeature","createPartly","exit","_service","productData","inc","normalizedTemplateData","setRecommendations","setError","selectedOption","_childProduct","serviceResult","productHasChildren","_segmentValue","sourcePattern","_currentSegmentIndex","_productRootIncludingChild","_productRoot","isFamilyProduct","SEPARATOR","separatorIndex","staticHeaders","staticQueryParams","baseUrl","writeOrderCode","produce","valueFor","fallback","QSRvOrderCodeLabel","PLAIN_PLACEHOLDER_DEFAULT","ATTR_ORDERCODE_PLACEHOLDER","MARKER_ORDERCODE_TEXT","MARKER_ORDERCODE_COPY","CopyController","ATTR_EXTERNAL_VALUE","MARKER_ORDERCODE_TRACK","LABEL_SEGMENT_PLACEHOLDER","$viewDetailsButton","$orderBoxActions","QS_RV_EVENTS","AUTO_COMPLETION_CHANGE","isAutoCompleting","resetUrl","resetToInitialState","distributeOrderCode","orderCodeProducer","$orderCodeMirrors","QSRvViewModel","itemOptionCodes_1","structuredOrderCode_1","matchedOrderCode","updateFromOrderCode","predefinedExternalized","decompose","toPlainValue","_newState","sliceViewStack","SOURCE_CLASSNAME","QSRvOrderCodeLegend","EL_DETAIL_ROW_SELECTOR","QSRvPriceScaleLegend","StateRv","LoaderStateRv","OrderCodeRv","StepRv","optIndex","ScrollChangeDispatcher","dispatchTopListener","topListeners","dispatchBottomListener","bottomListeners","updateMetrics","scrollPanelHeight","scrollPanel","scrollContentHeight","scrollContent","unregisterTopListener","unregisterBottomListener","descriptor","registerTopListener","registerTopListenerAndFire","registerBottomListener","registerBottomListenerAndFire","currentScrollPos","maxScrollPos","contextElement","scrollPanelClassName","scrollParams","scrollContentClassName","SeamlessIFrame","ifra","sendMsgLocal","legacy","iWindow","sendStateReq","sendACK","org","setHeight","setScroll","openUrl","sto","$iframe","$wrapper","scrollToToggle","offst","offs","topMargin","iframeTop","SearchFiltersLegacy","isSnippetReq","input_1","$clearBt_1","SELECTOR__SEARCH_FILTERS_LEGACY","initFilterSelects","oldReset","searchBar","initSelectTwo","NoOpSelectionAdapter","S2Results","S2MultipleSelection","S2EventRelay","S2Placeholder","S2AllowClear","S2Dropdown","S2AttachContainer","S2DropdownSearch","S2HidePlaceholder","S2MinimumResultsForSearch","ResultAdapter","isInitial","isSelect","filterId","filterControl","classFilterActive","$checkbox","makeInActive","makeActive","toOpen","_isSnippetRequest","globalSearchBar","$siteSearchElem","SELECTOR__SITE_SEARCH","setValid","_valid","isValid","showHistory","termIsEmpty","isTermEmpty","historyNotEmpty","getTerms","CLASS__HIDDEN","$searchButtonMobile","showHelp","$helpContainer","showQuickResults","$historyContainer","$historyClueContainer","$listContainer","$progressIndicator","$quickResultsContainer","$searchButton","CLASS__DISABLED","$searchIndicator","$termItem","SELECTOR__SEARCH_TERM","getTerm","unwantedParameterScopes","addTerm","prepareHistoryTerms","$searchResultContainer","doSearch","closePanel","setTerm","activateInput","handleSearchFocusIn","handleSearchFocusOut","addItemHandlers","$backIcon","onInputMouseDown","addInputHandlers","inputRegistered","$document","handleDocumentClick","handleDocumentKeyDown","removeInputHandlers","formData","cancelSearch","resultData","$resultElem","SELECTOR__SEARCH_RESULT_CONTAINER","openPanel","handleInputInput","CLASS__SEARCH_SHOW_DROPDOWN","queueQuickSearch","initPageBehaviour","isTermValid","quickSearchTimeoutId","quickSearchUrl","filter.quicksearch","$resultData","SELECTOR__QUICKRESULTS","getItems","SELECTOR__RESULT_LIST_ITEM","$activeItemContainer","selectBelowItem","$items","$currentActive","isListItemActive","setListItemInactive","setListItemActive","selectAboveItem","getElementAndBounds","selectLeftItem","$nextNeighbors","getActiveItem","currentBounds","elementBounds","$nextNeighbor","selectRightItem","invokeActive","byKey","invokeElement","_byKey","$historyList","historyTerm","$item","$historyListItemTemplate","SELECTOR__HISTORY_LIST_ITEM_TEMPLATE","$currentTarget","splitChars","subTerm","CLASS__ACTIVE","transient","SELECTOR__BACK_ICON","SELECTOR__HELP","SELECTOR__HISTORY_CONTAINER","SELECTOR__HISTORY_LIST","SELECTOR__CLUE_CONTAINER","SELECTOR__LIST_CONTAINER","SELECTOR__PROGRESS_INDICATOR","SELECTOR__QUICKRESULTS_CONTAINER","SELECTOR__RESULT_LIST_ITEM_CONTENT","SELECTOR__SEARCH_FORM","SELECTOR__SEARCH_INDICATOR","SELECTOR__SEARCH_INPUT","SELECTOR__SEARCH_RESET_BUTTON","SELECTOR__SEARCH_RESULTS","SELECTOR__SEARCH_SUBMIT_BUTTON","SELECTOR__SEARCH_SUBMIT_BUTTON_MOBILE","SELECTOR__SEARCH_TERM_ITEM","SELECTOR__DROPDOWN_WRAPPER","SELECTOR__DROPDOWN_CONTENT","isInputMouseDown","$dropdownWrapper","setSelectionRange","onMainNavChanged","updatePageBehaviour","inputTop","$trackingTarget","HistoryStorage","$searchResults","$dropdownContent","history_1","maxAge_1","isAvail","getItem","LOCAL_STORAGE_KEY__HISTORY","keyVersion","HISTORY_VERSION","HISTORY_MAX_AGE_MS","keyItems","keyDate","keyTerm","idate","sortItems","lTerm","resizeItems","history_2","setItem","dateA","dateB","termA","termB","HISTORY_MAX_ITEMS","Slider","clsSlider","doCalculations","isScrollMode","clsSlideContainer","overflows","clsTotalPages","slides","clsCurrentPage","scrollIndex","clsHidden","$firstItem","clsSlideItem","SliderCalculations","measureSliderInfo","numSlideGroups","clsHasPending","itemWidth","slidesPerGroup","slideGroups","SlideGroup","findSlideGroup","currentSlide","currentGroup","slideTo","containsSlide","slideIndex","immediate","futureSlide","futureGroup","currentGroupIndex","futureGroupIndex","transforms","toLastGroup","fromLastGroup","restNavigator","amountMove","scrollToSlide","transforming","clsFlowPlayerMarker","fitWidth","paddT","getSliderCount","clsAtLast","clsAtFirst","groupIndex","variance","isCurrent","checkInBounds","isFuture","startXAmount","endXAmount","getTransform","notifyStatusChanged","getStatus","clsCaptionTarget","clsCaptionSource","slidePrevious","autoPlay","stopAutoPlay","startAutoPlay","slideNext","moveTo","clsActiveMarker","scrollIntoView","behavior","block","inline","registerSwipe","touchstartX","touchstartY","swipeThreshold","Status","currentSlideIndex","autoPlayStack","autoPlayTimeoutHandle","autoPlayTimeout","getHelperHeight","clsAutoPlayMarker","clsTouchSlider","clsGrid","clsIsDisabled","$firstContentImage","touchstartX_1","touchendX_1","touchstartY_1","touchendY_1","destroyed","isReInitializing","visibilityChangeHandler","reInit","tabChangeHandler","Slide","SliderNavigator","IntersectionObserver","isIntersecting","rootMargin","currentSlideGroup","slidesTotal","hasPrevious","hasNext","Transform","$subject","x1","calculateDirectItems","clsDisplayNone","showPage","getPageForItem","$itemPrevious","$itemNext","handleRedundant","itemIndex","itemsPerPage","cw","iw","ih","isVertical","containerSize","pageIndex","pi","getInfoForPage","$pagerBackward","showPagerBackward","$pagerForward","showPagerForward","fromIndex","toIndex","currentPage","redundant","hideOnRedundant","clsNavigatorDisplayHidden","clsNavigatorBackward","clsNavigatorForward","clsNavigatorItem","clsNavigatorNext","clsNavigatorPrevious","clsSliderNavigator","itemsTotal","itemsVisible","numPages","numSlides","StickyManager","stickies","STICKY_SELECTOR","cookieDisclaimer","COOKY_DISCLAIMER_BODY","quickselectOptionsContainer","QUICKSELECT_OPTIONS_CONTAINER","observeMovement","observeResize","observeDomMuations","updateGlobalOffset","updateContextByWidth","initialContext","getCurrentContext","StickyScroller","globalOffset","useSorting","SCROLL_PANELS","scrollPanelVO","scrollContext","initContext","scrollContextList","onMoveY","onresize","lastTimeout","scrollElementIntoView","scrollContextMap","currentContextId","targetContext","sc","scrollContextId","getContextByElement","CONTEXT_PREFIX","CONTEXT_INC","scrollerTicking","windowChanged","setElement","spVO","ScrollContext","onScroll","getScrollValue","isContextOf","possibleScrollTargets","Sticky","initBaseMetrics","onBeforeFreeze","storedStickyHeight","onAfterFreeze","applyOffsetByIdx","storedOffsets","segmentOffsets","offY","freezeTransforms","ps","elHeight","absPosition","stick","lastStickyState","additionalClassNames","transitionEnabled","ZERO_STICKY","documentOrder","preClassNames","SortedSticky","isReordered","sortingNormalized","isBelow","isAbove","isDocOrder","docOrder","getTotalPosOf","parentEl","absPos","lastSegmentInRange","minY","heightActiveStickies","stickiesUnsorted","currentProgress","targetScrollPos","maxTargetScrollPos","beginTimer","lerp","generateStickies","docOrderInc","SORT_ATTR_KEY","addClassData","ADDITIONAL_CLASS_NAMES","additionalClasses","_s","stickiesSorted","buildHeightMapFrom","_stickies","heightMap","buildSegments","setSegmentsTriggerAtTop","initSegments","generateStickyTransformBuffers","updateCurrentSegment","getScrollerTotalPos","isManaged","registerScrolling","registerResize","initStickies","heightMapSorted","ScrollerSegment","scrollerTotalPos","currentSegment","hasScrollListener","hasResizeListener","lastResizeEvent","nextMax","maxY","zeroOffsets","sIndex","this_1","totalOffset","onCurrentSegmentChange","_offset","TermHighlights","termSeparator","termMinLength","initInternal","newHeading","siblingHeadings","SiteHierarchy","earlyOnsiteNavigations","$root","qaLogger","TrackingSiteHierarchy","utag_data","page_loadtime","timing","domInteractive","domLoading","page_type","referrer_error","referrer","refreshConfigureStatus","trackView","trackFilterSubmit","trackSnippetContent","buildFlyoutNavigationParams","revampEventParams","trackEvent","dl","constructIdLayers","page_name","buildPageName","trackViewOfCurrentPage","tabElement","tabKey","findLastHeading","handleClickEvent","trackForm","ScrollTracking","ScrollDepthTracker","trackingInfo","pnp","trackObj","$resultInfo","headingOverride","nextKey","dataLayer","$initialTarget","__csTrackingProcessed","analyzeEvent","viewKey","goal_add_to_cart","ec_product_status","ec_product","product_material_id","product_segment","product_attribute","product_id","product_name","event_product_name","crossselling_origin_product","event_crossselling_origin_product","order_code","pageNamePostfix","event_name","goal_direct_download","download_excl_dla","goal_dla","asset_article_id","event_compareproduct_id","_o","search_term","search_results","event_pub_spot","_u","_w","_x","_y","_z","trackSearchTermView","app_name","site_country","site_language","overrides","search_term_keyword","configured","product_configure_status","dbg","monitorFunctionCall","fixUDO","trackScrollDepth","ep","scroll_depth","eventNameOverride","extractTrackingTitle","$teaserInfo","trimStringOrNull","composeModuleId","uuid","lname","formParamMap_2","isShowMoreOrLess","$toggleButton","$linkTarget","$header","$quickSelect","dlaDocumentId","crosssellingOriginProduct","fileName","filterGroups","isLightboxVideo","isOverlayClose","isPrefixContext","isQuickSelectEnabled","headerEventName","isFooterSticky","productBundleId","productId","productName","unitName","psNameData","psName","sftFor","teasername","moduleId","hintId","linkName","subtype","siu","$tmp","buildParamsStandard","spot","appendParamsExtern","appendSPDData","event_download_language","event_download_version","appendSiuAdds","event_document_id","ProductComparison","getProductRoots","goal_product_buttons","setSiteExtendedEventId","buildNavigationParams","event_switch_language_site","formParamMap_1","formParams","event_bundle_id","event_product_id","analyzeFlyoutParams","paramsTmp","buildParamsBreadcrumbNavi","buildParamsSocialMedia","loggedIn","goal_direct_contact","event_linkposition_teasername","country","event_overlay_selection","$activeElem","evType","isShowType","markerClass","eh-slider-navigator--backward","eh-slider-navigator--forward","eh-slider-navigator--item","eh-slider-navigator--next","eh-slider-navigator--previous","ehel-gallery--prev-btn","ehel-gallery--next-btn","ehel-gallery--indicator","analyzeFilterParams","drawingEventName","$cadValue","linkname","processMapDetails","event_process_map_details","$svgOverview","applicationOverview","applicationArea","industryOverview","event_application_area","event_industry_overview","event_application_overview","marker-footer-legal","marker-footer-nav","marker-footer-quicklinks","marker-footer-myeh","eventName","event_filter_groups","isFilterCategoryOpened","isDrawerCategoryOpened","selTxt","nav1","event_navpath","toLocaleLowerCase","event_sft_for","event_target_id","$btn","$trackingInfo","event_document_doc_context","event_document_doc_type","event_download_type","event_headline_download","event_id","buildEventId","site_h1","site_h2","site_h3","site_h4","site_h5","site_h6","site_h7","attrNameS","attrNameF","pathDesc","dataLayer_1","pathDescs","pd","parseIdPath","constructIdPath","layers","keyH","keyHidx","overlap","same","site_Next","buildCustomEventId","handleFieldFocus_1","handleFieldInteraction_1","$fields","formName","buildFormAction","errorFields","form_asset_id","event_forms_error_message","event_forms_errors","event_forms_action","tid","evParams","inp","goal_form_success","additionalSegments","dataLayerOverrides","$navElem","naviType","successful","psname","sel_1","navWrap","isAddon","pathElems","navCont","linknameNorm","targetHostname","external","otherApp","goals","collectFormParams","change","EhFilterRequest","CHANGE_TYPE_SEARCH","paramsExtra","subtypeOpt","$i","noTrack","kvStr","sepPos","collectLocalFilterParams","FiltersLocalController","FILTER_WRAPPER_CLASSNAME","declared","filterPrefix","filterMap","filterValues","filterCriteria","filterNames","_v","event_filter_criteria","event_filter_combination","event_filter_amount_groups","ks","learning_resource_type","spdOrderCode","spdProductName","productLabel","resized","getScrollParent","maxPos","scrolled","normalizeStep","reportStep","reportMax","trackHeight","stepping","reported","trackSD","scheduled","isScrollable","SVGElement","currentParent","headings","heading","synchronizeDataLayer","parseDataLayer","DL_KEY_PREFIX","fnDbg","functionName","formatStr","VideoPlayer","player_1","fp","HTMLMediaElement","ehFpInstance_1","maxWidthForMobile","ehFullScreenCloseHandler","EhQuickSelectionController","radios","onRadioKeyDown","INPUT_SELECTOR","INPUT_CLASSNAME","keepFocusWithoutSelection","EhQuickSelectionViewModel","isForward","HTMLInputElement","radioGroup","t_1","breakPoints","bwer","isIE11","headerNavigation","navigationGrid","oEvent","Start","ehApi","days","secure","sameSite","expires","setTime"],"mappings":"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IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,KACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,IAAA,IACAC,I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","file":"../bottom_start.js","sourcesContent":["/*!\n * jQuery JavaScript Library v3.6.1\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: 2022-08-26T17:52Z\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 trac-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.1\",\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 (trac-9521)\n\t// Strict HTML recognition (trac-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 trac-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 (trac-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 trac-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 (trac-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 (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-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 (trac-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 (trac-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 (trac-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 (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-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 (trac-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 (trac-504, trac-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 if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\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\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 (trac-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\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\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 rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-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\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\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 (trac-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\t\tisCustomProp = rcustomProp.test( name ),\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, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\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\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 (trac-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 trac-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 (trac-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 )` (trac-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.\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// Use proper attribute retrieval (trac-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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\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\tthis.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 classNames, cur, curValue, className, i, finalValue;\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\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\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\tthis.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 classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = 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 (trac-14686, trac-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 (trac-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 (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-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 (trac-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// trac-7653, trac-8125, trac-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 (trac-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 trac-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 (trac-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 trac-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 (trac-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// trac-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 (trac-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// trac-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 trac-8605, trac-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// trac-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\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\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, \"$1\" );\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// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","(function (global, factory) {\r\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\r\n    typeof define === 'function' && define.amd ? define(factory) :\r\n    (global.browserDetect = factory());\r\n}(this, (function () { 'use strict';\r\n\r\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\r\n\r\n    var __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n\r\n    var browsers = [\r\n        ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\r\n        ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\r\n        ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)$/],\r\n        ['edge', /Edge\\/([0-9\\._]+)/],\r\n        ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+)\\).*Gecko$/],\r\n        ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\r\n        ['ie', /MSIE\\s(7\\.0)/],\r\n        ['safari', /Version\\/([0-9\\._]+).*Safari/],\r\n        ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\r\n        ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\r\n        ['android', /Android\\s([0-9\\.]+)/],\r\n        ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\r\n        ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\r\n        ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/]\r\n    ];\r\n    var os = [\r\n        'Windows Phone',\r\n        'Android',\r\n        'CentOS',\r\n        { name: 'Chrome OS', pattern: 'CrOS' },\r\n        'Debian',\r\n        'Fedora',\r\n        'FreeBSD',\r\n        'Gentoo',\r\n        'Haiku',\r\n        'Kubuntu',\r\n        'Linux Mint',\r\n        'OpenBSD',\r\n        'Red Hat',\r\n        'SuSE',\r\n        'Ubuntu',\r\n        'Xubuntu',\r\n        'Cygwin',\r\n        'Symbian OS',\r\n        'hpwOS',\r\n        'webOS ',\r\n        'webOS',\r\n        'Tablet OS',\r\n        'Tizen',\r\n        'Linux',\r\n        'Mac OS X',\r\n        'Macintosh',\r\n        'Mac',\r\n        'Windows 98;',\r\n        'Windows '\r\n    ];\r\n    var osVersions = {\r\n        '10.0': '10',\r\n        '6.4': '10 Technical Preview',\r\n        '6.3': '8.1',\r\n        '6.2': '8',\r\n        '6.1': 'Server 2008 R2 / 7',\r\n        '6.0': 'Server 2008 / Vista',\r\n        '5.2': 'Server 2003 / XP 64-bit',\r\n        '5.1': 'XP',\r\n        '5.01': '2000 SP1',\r\n        '5.0': '2000',\r\n        '4.0': 'NT',\r\n        '4.90': 'ME'\r\n    };\r\n\r\n    var mobileRegExp = new RegExp(['(android|bb\\\\d+|meego).+mobile|avantgo|bada\\\\/|blackberry|blazer|',\r\n        'compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|',\r\n        'midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)',\r\n        '\\\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\\\.(browser|link)|vodafone|',\r\n        'wap|windows ce|xda|xiino'].join(''), 'i');\r\n    var mobilePrefixRegExp = new RegExp(['1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\\\-)|',\r\n        'ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\\\-m|r |s )|',\r\n        'avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\\\-(n|u)|c55\\\\/|capi|ccwa|cdm\\\\-|',\r\n        'cell|chtm|cldc|cmd\\\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\\\-s|devi|dica|dmob|do(c|p)o|',\r\n        'ds(12|\\\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\\\-|_)|',\r\n        'g1 u|g560|gene|gf\\\\-5|g\\\\-mo|go(\\\\.w|od)|gr(ad|un)|haie|hcit|hd\\\\-(m|p|t)|hei\\\\-|',\r\n        'hi(pt|ta)|hp( i|ip)|hs\\\\-c|ht(c(\\\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\\\-(20|go|ma)|',\r\n        'i230|iac( |\\\\-|\\\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|',\r\n        'kddi|keji|kgt( |\\\\/)|klon|kpt |kwc\\\\-|kyo(c|k)|le(no|xi)|lg( g|\\\\/(k|l|u)|50|54|\\\\-[a-w])',\r\n        '|libw|lynx|m1\\\\-w|m3ga|m50\\\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\\\-cr|me(rc|ri)|mi(o8|oa|ts)|',\r\n        'mmef|mo(01|02|bi|de|do|t(\\\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|',\r\n        'n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|',\r\n        'op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\\\-2|',\r\n        'po(ck|rt|se)|prox|psio|pt\\\\-g|qa\\\\-a|qc(07|12|21|32|60|\\\\-[2-7]|i\\\\-)|qtek|r380|r600|',\r\n        'raks|rim9|ro(ve|zo)|s55\\\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\\\-|oo|p\\\\-)|sdk\\\\/|',\r\n        'se(c(\\\\-|0|1)|47|mc|nd|ri)|sgh\\\\-|shar|sie(\\\\-|m)|k\\\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|',\r\n        'so(ft|ny)|sp(01|h\\\\-|v\\\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\\\-|tdg\\\\-|',\r\n        'tel(i|m)|tim\\\\-|t\\\\-mo|to(pl|sh)|ts(70|m\\\\-|m3|m5)|tx\\\\-9|up(\\\\.b|g1|si)|utst|v400|v750|',\r\n        'veri|vi(rg|te)|vk(40|5[0-3]|\\\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|',\r\n        'w3c(\\\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\\\-|your|zeto|zte\\\\-'].join(''), 'i');\r\n\r\n    var Detector = /** @class */ (function () {\r\n        function Detector(userAgent, navigator, process) {\r\n            this.navigator = navigator;\r\n            this.process = process;\r\n            this.userAgent = userAgent\r\n                ? userAgent\r\n                : this.navigator ? (navigator.userAgent || navigator.vendor) : '';\r\n        }\r\n        Detector.prototype.detect = function () {\r\n            if (this.process && !this.userAgent) {\r\n                var version = this.process.version.slice(1).split('.').slice(0, 3);\r\n                var versionTail = Array.prototype.slice.call(version, 1).join('') || '0';\r\n                return {\r\n                    name: 'node',\r\n                    version: version.join('.'),\r\n                    versionNumber: parseFloat(version[0] + \".\" + versionTail),\r\n                    mobile: false,\r\n                    os: this.process.platform\r\n                };\r\n            }\r\n            if (!this.userAgent)\r\n                this.handleMissingError();\r\n            return __assign({}, this.checkBrowser(), this.checkMobile(), this.checkOs());\r\n        };\r\n        Detector.prototype.checkBrowser = function () {\r\n            var _this = this;\r\n            return browsers\r\n                .filter(function (definition) { return definition[1].test(_this.userAgent); })\r\n                .map(function (definition) {\r\n                var match = definition[1].exec(_this.userAgent);\r\n                var version = match && match[1].split(/[._]/).slice(0, 3);\r\n                var versionTails = Array.prototype.slice.call(version, 1).join('') || '0';\r\n                if (version && version.length < 3)\r\n                    Array.prototype.push.apply(version, version.length === 1 ? [0, 0] : [0]);\r\n                return {\r\n                    name: String(definition[0]),\r\n                    version: version.join('.'),\r\n                    versionNumber: Number(version[0] + \".\" + versionTails)\r\n                };\r\n            })\r\n                .shift();\r\n        };\r\n        Detector.prototype.checkMobile = function () {\r\n            var agentPrefix = this.userAgent.substr(0, 4);\r\n            var mobile = mobileRegExp.test(this.userAgent) || mobilePrefixRegExp.test(agentPrefix);\r\n            return { mobile: mobile };\r\n        };\r\n        Detector.prototype.checkOs = function () {\r\n            var _this = this;\r\n            return os\r\n                .map(function (definition) {\r\n                var name = definition.name || definition;\r\n                var pattern = _this.getOsPattern(definition);\r\n                return {\r\n                    name: name,\r\n                    pattern: pattern,\r\n                    value: RegExp(\"\\\\b\" + pattern.replace(/([ -])(?!$)/g, '$1?') + \"(?:x?[\\\\d._]+|[ \\\\w.]*)\", 'i').exec(_this.userAgent)\r\n                };\r\n            })\r\n                .filter(function (definition) { return definition.value; })\r\n                .map(function (definition) {\r\n                var os$$1 = definition.value[0] || '';\r\n                var osSuffix;\r\n                if (definition.pattern &&\r\n                    definition.name &&\r\n                    /^Win/i.test(os$$1) &&\r\n                    !/^Windows Phone /i.test(os$$1) &&\r\n                    (osSuffix = osVersions[os$$1.replace(/[^\\d.]/g, '')]))\r\n                    os$$1 = \"Windows \" + osSuffix;\r\n                if (definition.pattern && definition.name)\r\n                    os$$1 = os$$1.replace(RegExp(definition.pattern, 'i'), definition.name);\r\n                os$$1 = os$$1\r\n                    .replace(/ ce$/i, ' CE')\r\n                    .replace(/\\bhpw/i, 'web')\r\n                    .replace(/\\bMacintosh\\b/, 'Mac OS')\r\n                    .replace(/_PowerPC\\b/i, ' OS')\r\n                    .replace(/\\b(OS X) [^ \\d]+/i, '$1')\r\n                    .replace(/\\bMac (OS X)\\b/, '$1')\r\n                    .replace(/\\/(\\d)/, ' $1')\r\n                    .replace(/_/g, '.')\r\n                    .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\r\n                    .replace(/\\bx86\\.64\\b/gi, 'x86_64')\r\n                    .replace(/\\b(Windows Phone) OS\\b/, '$1')\r\n                    .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\r\n                    .split(' on ')[0]\r\n                    .trim();\r\n                os$$1 = /^(?:webOS|i(?:OS|P))/.test(os$$1)\r\n                    ? os$$1\r\n                    : (os$$1.charAt(0).toUpperCase() + os$$1.slice(1));\r\n                return { os: os$$1 };\r\n            })\r\n                .shift();\r\n        };\r\n        Detector.prototype.getOsPattern = function (definition) {\r\n            var definitionInterface = definition;\r\n            return (typeof definition === 'string'\r\n                ? definition\r\n                : undefined) ||\r\n                definitionInterface.pattern ||\r\n                definitionInterface.name;\r\n        };\r\n        Detector.prototype.handleMissingError = function () {\r\n            throw new Error('Please give user-agent.\\n> browser(navigator.userAgent or res.headers[\\'user-agent\\']).');\r\n        };\r\n        return Detector;\r\n    }());\r\n\r\n    function createCommonjsModule(fn, module) {\r\n    \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\r\n    }\r\n\r\n    var _global = createCommonjsModule(function (module) {\r\n    // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\r\n    var global = module.exports = typeof window != 'undefined' && window.Math == Math\r\n      ? window : typeof self != 'undefined' && self.Math == Math ? self\r\n      // eslint-disable-next-line no-new-func\r\n      : Function('return this')();\r\n    if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\r\n    });\r\n\r\n    var _core = createCommonjsModule(function (module) {\r\n    var core = module.exports = { version: '2.5.7' };\r\n    if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\r\n    });\r\n    var _core_1 = _core.version;\r\n\r\n    var _isObject = function (it) {\r\n      return typeof it === 'object' ? it !== null : typeof it === 'function';\r\n    };\r\n\r\n    var _anObject = function (it) {\r\n      if (!_isObject(it)) throw TypeError(it + ' is not an object!');\r\n      return it;\r\n    };\r\n\r\n    var _fails = function (exec) {\r\n      try {\r\n        return !!exec();\r\n      } catch (e) {\r\n        return true;\r\n      }\r\n    };\r\n\r\n    // Thank's IE8 for his funny defineProperty\r\n    var _descriptors = !_fails(function () {\r\n      return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\r\n    });\r\n\r\n    var document = _global.document;\r\n    // typeof document.createElement is 'object' in old IE\r\n    var is = _isObject(document) && _isObject(document.createElement);\r\n    var _domCreate = function (it) {\r\n      return is ? document.createElement(it) : {};\r\n    };\r\n\r\n    var _ie8DomDefine = !_descriptors && !_fails(function () {\r\n      return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\r\n    });\r\n\r\n    // 7.1.1 ToPrimitive(input [, PreferredType])\r\n\r\n    // instead of the ES6 spec version, we didn't implement @@toPrimitive case\r\n    // and the second argument - flag - preferred type is a string\r\n    var _toPrimitive = function (it, S) {\r\n      if (!_isObject(it)) return it;\r\n      var fn, val;\r\n      if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;\r\n      if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val;\r\n      if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val;\r\n      throw TypeError(\"Can't convert object to primitive value\");\r\n    };\r\n\r\n    var dP = Object.defineProperty;\r\n\r\n    var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\r\n      _anObject(O);\r\n      P = _toPrimitive(P, true);\r\n      _anObject(Attributes);\r\n      if (_ie8DomDefine) try {\r\n        return dP(O, P, Attributes);\r\n      } catch (e) { /* empty */ }\r\n      if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\r\n      if ('value' in Attributes) O[P] = Attributes.value;\r\n      return O;\r\n    };\r\n\r\n    var _objectDp = {\r\n    \tf: f\r\n    };\r\n\r\n    var _propertyDesc = function (bitmap, value) {\r\n      return {\r\n        enumerable: !(bitmap & 1),\r\n        configurable: !(bitmap & 2),\r\n        writable: !(bitmap & 4),\r\n        value: value\r\n      };\r\n    };\r\n\r\n    var _hide = _descriptors ? function (object, key, value) {\r\n      return _objectDp.f(object, key, _propertyDesc(1, value));\r\n    } : function (object, key, value) {\r\n      object[key] = value;\r\n      return object;\r\n    };\r\n\r\n    var hasOwnProperty = {}.hasOwnProperty;\r\n    var _has = function (it, key) {\r\n      return hasOwnProperty.call(it, key);\r\n    };\r\n\r\n    var id = 0;\r\n    var px = Math.random();\r\n    var _uid = function (key) {\r\n      return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\r\n    };\r\n\r\n    var _redefine = createCommonjsModule(function (module) {\r\n    var SRC = _uid('src');\r\n    var TO_STRING = 'toString';\r\n    var $toString = Function[TO_STRING];\r\n    var TPL = ('' + $toString).split(TO_STRING);\r\n\r\n    _core.inspectSource = function (it) {\r\n      return $toString.call(it);\r\n    };\r\n\r\n    (module.exports = function (O, key, val, safe) {\r\n      var isFunction = typeof val == 'function';\r\n      if (isFunction) _has(val, 'name') || _hide(val, 'name', key);\r\n      if (O[key] === val) return;\r\n      if (isFunction) _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\r\n      if (O === _global) {\r\n        O[key] = val;\r\n      } else if (!safe) {\r\n        delete O[key];\r\n        _hide(O, key, val);\r\n      } else if (O[key]) {\r\n        O[key] = val;\r\n      } else {\r\n        _hide(O, key, val);\r\n      }\r\n    // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\r\n    })(Function.prototype, TO_STRING, function toString() {\r\n      return typeof this == 'function' && this[SRC] || $toString.call(this);\r\n    });\r\n    });\r\n\r\n    var _aFunction = function (it) {\r\n      if (typeof it != 'function') throw TypeError(it + ' is not a function!');\r\n      return it;\r\n    };\r\n\r\n    // optional / simple context binding\r\n\r\n    var _ctx = function (fn, that, length) {\r\n      _aFunction(fn);\r\n      if (that === undefined) return fn;\r\n      switch (length) {\r\n        case 1: return function (a) {\r\n          return fn.call(that, a);\r\n        };\r\n        case 2: return function (a, b) {\r\n          return fn.call(that, a, b);\r\n        };\r\n        case 3: return function (a, b, c) {\r\n          return fn.call(that, a, b, c);\r\n        };\r\n      }\r\n      return function (/* ...args */) {\r\n        return fn.apply(that, arguments);\r\n      };\r\n    };\r\n\r\n    var PROTOTYPE = 'prototype';\r\n\r\n    var $export = function (type, name, source) {\r\n      var IS_FORCED = type & $export.F;\r\n      var IS_GLOBAL = type & $export.G;\r\n      var IS_STATIC = type & $export.S;\r\n      var IS_PROTO = type & $export.P;\r\n      var IS_BIND = type & $export.B;\r\n      var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\r\n      var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\r\n      var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\r\n      var key, own, out, exp;\r\n      if (IS_GLOBAL) source = name;\r\n      for (key in source) {\r\n        // contains in native\r\n        own = !IS_FORCED && target && target[key] !== undefined;\r\n        // export native or passed\r\n        out = (own ? target : source)[key];\r\n        // bind timers to global for call from export context\r\n        exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\r\n        // extend global\r\n        if (target) _redefine(target, key, out, type & $export.U);\r\n        // export\r\n        if (exports[key] != out) _hide(exports, key, exp);\r\n        if (IS_PROTO && expProto[key] != out) expProto[key] = out;\r\n      }\r\n    };\r\n    _global.core = _core;\r\n    // type bitmap\r\n    $export.F = 1;   // forced\r\n    $export.G = 2;   // global\r\n    $export.S = 4;   // static\r\n    $export.P = 8;   // proto\r\n    $export.B = 16;  // bind\r\n    $export.W = 32;  // wrap\r\n    $export.U = 64;  // safe\r\n    $export.R = 128; // real proto method for `library`\r\n    var _export = $export;\r\n\r\n    var toString = {}.toString;\r\n\r\n    var _cof = function (it) {\r\n      return toString.call(it).slice(8, -1);\r\n    };\r\n\r\n    // fallback for non-array-like ES3 and non-enumerable old V8 strings\r\n\r\n    // eslint-disable-next-line no-prototype-builtins\r\n    var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\r\n      return _cof(it) == 'String' ? it.split('') : Object(it);\r\n    };\r\n\r\n    // 7.2.1 RequireObjectCoercible(argument)\r\n    var _defined = function (it) {\r\n      if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\r\n      return it;\r\n    };\r\n\r\n    // 7.1.13 ToObject(argument)\r\n\r\n    var _toObject = function (it) {\r\n      return Object(_defined(it));\r\n    };\r\n\r\n    // 7.1.4 ToInteger\r\n    var ceil = Math.ceil;\r\n    var floor = Math.floor;\r\n    var _toInteger = function (it) {\r\n      return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\r\n    };\r\n\r\n    // 7.1.15 ToLength\r\n\r\n    var min = Math.min;\r\n    var _toLength = function (it) {\r\n      return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\r\n    };\r\n\r\n    // 7.2.2 IsArray(argument)\r\n\r\n    var _isArray = Array.isArray || function isArray(arg) {\r\n      return _cof(arg) == 'Array';\r\n    };\r\n\r\n    var _shared = createCommonjsModule(function (module) {\r\n    var SHARED = '__core-js_shared__';\r\n    var store = _global[SHARED] || (_global[SHARED] = {});\r\n\r\n    (module.exports = function (key, value) {\r\n      return store[key] || (store[key] = value !== undefined ? value : {});\r\n    })('versions', []).push({\r\n      version: _core.version,\r\n      mode: 'global',\r\n      copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\r\n    });\r\n    });\r\n\r\n    var _wks = createCommonjsModule(function (module) {\r\n    var store = _shared('wks');\r\n\r\n    var Symbol = _global.Symbol;\r\n    var USE_SYMBOL = typeof Symbol == 'function';\r\n\r\n    var $exports = module.exports = function (name) {\r\n      return store[name] || (store[name] =\r\n        USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : _uid)('Symbol.' + name));\r\n    };\r\n\r\n    $exports.store = store;\r\n    });\r\n\r\n    var SPECIES = _wks('species');\r\n\r\n    var _arraySpeciesConstructor = function (original) {\r\n      var C;\r\n      if (_isArray(original)) {\r\n        C = original.constructor;\r\n        // cross-realm fallback\r\n        if (typeof C == 'function' && (C === Array || _isArray(C.prototype))) C = undefined;\r\n        if (_isObject(C)) {\r\n          C = C[SPECIES];\r\n          if (C === null) C = undefined;\r\n        }\r\n      } return C === undefined ? Array : C;\r\n    };\r\n\r\n    // 9.4.2.3 ArraySpeciesCreate(originalArray, length)\r\n\r\n\r\n    var _arraySpeciesCreate = function (original, length) {\r\n      return new (_arraySpeciesConstructor(original))(length);\r\n    };\r\n\r\n    // 0 -> Array#forEach\r\n    // 1 -> Array#map\r\n    // 2 -> Array#filter\r\n    // 3 -> Array#some\r\n    // 4 -> Array#every\r\n    // 5 -> Array#find\r\n    // 6 -> Array#findIndex\r\n\r\n\r\n\r\n\r\n\r\n    var _arrayMethods = function (TYPE, $create) {\r\n      var IS_MAP = TYPE == 1;\r\n      var IS_FILTER = TYPE == 2;\r\n      var IS_SOME = TYPE == 3;\r\n      var IS_EVERY = TYPE == 4;\r\n      var IS_FIND_INDEX = TYPE == 6;\r\n      var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\r\n      var create = $create || _arraySpeciesCreate;\r\n      return function ($this, callbackfn, that) {\r\n        var O = _toObject($this);\r\n        var self = _iobject(O);\r\n        var f = _ctx(callbackfn, that, 3);\r\n        var length = _toLength(self.length);\r\n        var index = 0;\r\n        var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\r\n        var val, res;\r\n        for (;length > index; index++) if (NO_HOLES || index in self) {\r\n          val = self[index];\r\n          res = f(val, index, O);\r\n          if (TYPE) {\r\n            if (IS_MAP) result[index] = res;   // map\r\n            else if (res) switch (TYPE) {\r\n              case 3: return true;             // some\r\n              case 5: return val;              // find\r\n              case 6: return index;            // findIndex\r\n              case 2: result.push(val);        // filter\r\n            } else if (IS_EVERY) return false; // every\r\n          }\r\n        }\r\n        return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\r\n      };\r\n    };\r\n\r\n    var _strictMethod = function (method, arg) {\r\n      return !!method && _fails(function () {\r\n        // eslint-disable-next-line no-useless-call\r\n        arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\r\n      });\r\n    };\r\n\r\n    var $filter = _arrayMethods(2);\r\n\r\n    _export(_export.P + _export.F * !_strictMethod([].filter, true), 'Array', {\r\n      // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\r\n      filter: function filter(callbackfn /* , thisArg */) {\r\n        return $filter(this, callbackfn, arguments[1]);\r\n      }\r\n    });\r\n\r\n    var filter = _core.Array.filter;\r\n\r\n    var $map = _arrayMethods(1);\r\n\r\n    _export(_export.P + _export.F * !_strictMethod([].map, true), 'Array', {\r\n      // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\r\n      map: function map(callbackfn /* , thisArg */) {\r\n        return $map(this, callbackfn, arguments[1]);\r\n      }\r\n    });\r\n\r\n    var map = _core.Array.map;\r\n\r\n    var _stringWs = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\r\n      '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\r\n\r\n    var space = '[' + _stringWs + ']';\r\n    var non = '\\u200b\\u0085';\r\n    var ltrim = RegExp('^' + space + space + '*');\r\n    var rtrim = RegExp(space + space + '*$');\r\n\r\n    var exporter = function (KEY, exec, ALIAS) {\r\n      var exp = {};\r\n      var FORCE = _fails(function () {\r\n        return !!_stringWs[KEY]() || non[KEY]() != non;\r\n      });\r\n      var fn = exp[KEY] = FORCE ? exec(trim) : _stringWs[KEY];\r\n      if (ALIAS) exp[ALIAS] = fn;\r\n      _export(_export.P + _export.F * FORCE, 'String', exp);\r\n    };\r\n\r\n    // 1 -> String#trimLeft\r\n    // 2 -> String#trimRight\r\n    // 3 -> String#trim\r\n    var trim = exporter.trim = function (string, TYPE) {\r\n      string = String(_defined(string));\r\n      if (TYPE & 1) string = string.replace(ltrim, '');\r\n      if (TYPE & 2) string = string.replace(rtrim, '');\r\n      return string;\r\n    };\r\n\r\n    var _stringTrim = exporter;\r\n\r\n    // 21.1.3.25 String.prototype.trim()\r\n    _stringTrim('trim', function ($trim) {\r\n      return function trim() {\r\n        return $trim(this, 3);\r\n      };\r\n    });\r\n\r\n    var trim$1 = _core.String.trim;\r\n\r\n    var injectableNavigator = typeof window !== 'undefined'\r\n        ? window.navigator\r\n        : undefined;\r\n    var injectableProcess = typeof process !== 'undefined'\r\n        ? process\r\n        : undefined;\r\n    function browserDetect (userAgent) {\r\n        var detector = new Detector(userAgent, injectableNavigator, injectableProcess);\r\n        return detector.detect();\r\n    }\r\n\r\n    return browserDetect;\r\n\r\n})));\r\n\r\n","/*\n * jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/\n * Open source under the BSD License.\n * Copyright © 2008 George McGinley Smith\n * All rights reserved.\n * https://raw.github.com/gdsmith/jquery-easing/master/LICENSE\n*/\n\n(function (factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(['jquery'], function ($) {\n\t\t\treturn factory($);\n\t\t});\n\t} else if (typeof module === \"object\" && typeof module.exports === \"object\") {\n\t\texports = factory(require('jquery'));\n\t} else {\n\t\tfactory(jQuery);\n\t}\n})(function($){\n\n// Preserve the original jQuery \"swing\" easing as \"jswing\"\n$.easing.jswing = $.easing.swing;\n\nvar pow = Math.pow,\n\tsqrt = Math.sqrt,\n\tsin = Math.sin,\n\tcos = Math.cos,\n\tPI = Math.PI,\n\tc1 = 1.70158,\n\tc2 = c1 * 1.525,\n\tc3 = c1 + 1,\n\tc4 = ( 2 * PI ) / 3,\n\tc5 = ( 2 * PI ) / 4.5;\n\n// x is the fraction of animation progress, in the range 0..1\nfunction bounceOut(x) {\n\tvar n1 = 7.5625,\n\t\td1 = 2.75;\n\tif ( x < 1/d1 ) {\n\t\treturn n1*x*x;\n\t} else if ( x < 2/d1 ) {\n\t\treturn n1*(x-=(1.5/d1))*x + 0.75;\n\t} else if ( x < 2.5/d1 ) {\n\t\treturn n1*(x-=(2.25/d1))*x + 0.9375;\n\t} else {\n\t\treturn n1*(x-=(2.625/d1))*x + 0.984375;\n\t}\n}\n\n$.extend( $.easing,\n{\n\tdef: 'easeOutQuad',\n\tswing: function (x) {\n\t\treturn $.easing[$.easing.def](x);\n\t},\n\teaseInQuad: function (x) {\n\t\treturn x * x;\n\t},\n\teaseOutQuad: function (x) {\n\t\treturn 1 - ( 1 - x ) * ( 1 - x );\n\t},\n\teaseInOutQuad: function (x) {\n\t\treturn x < 0.5 ?\n\t\t\t2 * x * x :\n\t\t\t1 - pow( -2 * x + 2, 2 ) / 2;\n\t},\n\teaseInCubic: function (x) {\n\t\treturn x * x * x;\n\t},\n\teaseOutCubic: function (x) {\n\t\treturn 1 - pow( 1 - x, 3 );\n\t},\n\teaseInOutCubic: function (x) {\n\t\treturn x < 0.5 ?\n\t\t\t4 * x * x * x :\n\t\t\t1 - pow( -2 * x + 2, 3 ) / 2;\n\t},\n\teaseInQuart: function (x) {\n\t\treturn x * x * x * x;\n\t},\n\teaseOutQuart: function (x) {\n\t\treturn 1 - pow( 1 - x, 4 );\n\t},\n\teaseInOutQuart: function (x) {\n\t\treturn x < 0.5 ?\n\t\t\t8 * x * x * x * x :\n\t\t\t1 - pow( -2 * x + 2, 4 ) / 2;\n\t},\n\teaseInQuint: function (x) {\n\t\treturn x * x * x * x * x;\n\t},\n\teaseOutQuint: function (x) {\n\t\treturn 1 - pow( 1 - x, 5 );\n\t},\n\teaseInOutQuint: function (x) {\n\t\treturn x < 0.5 ?\n\t\t\t16 * x * x * x * x * x :\n\t\t\t1 - pow( -2 * x + 2, 5 ) / 2;\n\t},\n\teaseInSine: function (x) {\n\t\treturn 1 - cos( x * PI/2 );\n\t},\n\teaseOutSine: function (x) {\n\t\treturn sin( x * PI/2 );\n\t},\n\teaseInOutSine: function (x) {\n\t\treturn -( cos( PI * x ) - 1 ) / 2;\n\t},\n\teaseInExpo: function (x) {\n\t\treturn x === 0 ? 0 : pow( 2, 10 * x - 10 );\n\t},\n\teaseOutExpo: function (x) {\n\t\treturn x === 1 ? 1 : 1 - pow( 2, -10 * x );\n\t},\n\teaseInOutExpo: function (x) {\n\t\treturn x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?\n\t\t\tpow( 2, 20 * x - 10 ) / 2 :\n\t\t\t( 2 - pow( 2, -20 * x + 10 ) ) / 2;\n\t},\n\teaseInCirc: function (x) {\n\t\treturn 1 - sqrt( 1 - pow( x, 2 ) );\n\t},\n\teaseOutCirc: function (x) {\n\t\treturn sqrt( 1 - pow( x - 1, 2 ) );\n\t},\n\teaseInOutCirc: function (x) {\n\t\treturn x < 0.5 ?\n\t\t\t( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 :\n\t\t\t( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2;\n\t},\n\teaseInElastic: function (x) {\n\t\treturn x === 0 ? 0 : x === 1 ? 1 :\n\t\t\t-pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 );\n\t},\n\teaseOutElastic: function (x) {\n\t\treturn x === 0 ? 0 : x === 1 ? 1 :\n\t\t\tpow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1;\n\t},\n\teaseInOutElastic: function (x) {\n\t\treturn x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?\n\t\t\t-( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 :\n\t\t\tpow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1;\n\t},\n\teaseInBack: function (x) {\n\t\treturn c3 * x * x * x - c1 * x * x;\n\t},\n\teaseOutBack: function (x) {\n\t\treturn 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 );\n\t},\n\teaseInOutBack: function (x) {\n\t\treturn x < 0.5 ?\n\t\t\t( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 :\n\t\t\t( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2;\n\t},\n\teaseInBounce: function (x) {\n\t\treturn 1 - bounceOut( 1 - x );\n\t},\n\teaseOutBounce: bounceOut,\n\teaseInOutBounce: function (x) {\n\t\treturn x < 0.5 ?\n\t\t\t( 1 - bounceOut( 1 - 2 * x ) ) / 2 :\n\t\t\t( 1 + bounceOut( 2 * x - 1 ) ) / 2;\n\t}\n});\n\n});\n","/*\n * jQuery Highlight plugin\n *\n * Based on highlight v3 by Johann Burkard\n * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html\n *\n * Code a little bit refactored and cleaned (in my humble opinion).\n * Most important changes:\n *  - has an option to highlight only entire words (wordsOnly - false by default),\n *  - has an option to be case sensitive (caseSensitive - false by default)\n *  - highlight element tag and class names can be specified in options\n *\n * Usage:\n *   // wrap every occurrence of text 'lorem' in content\n *   // with <span class='highlight'> (default options)\n *   $('#content').highlight('lorem');\n *\n *   // search for and highlight more terms at once\n *   // so you can save some time on traversing DOM\n *   $('#content').highlight(['lorem', 'ipsum']);\n *   $('#content').highlight('lorem ipsum');\n *\n *   // search only for entire word 'lorem'\n *   $('#content').highlight('lorem', { wordsOnly: true });\n *\n *   // search only for the entire word 'C#'\n *   // and make sure that the word boundary can also\n *   // be a 'non-word' character, as well as a regex latin1 only boundary:\n *   $('#content').highlight('C#', { wordsOnly: true , wordsBoundary: '[\\\\b\\\\W]' });\n *\n *   // don't ignore case during search of term 'lorem'\n *   $('#content').highlight('lorem', { caseSensitive: true });\n *\n *   // wrap every occurrence of term 'ipsum' in content\n *   // with <em class='important'>\n *   $('#content').highlight('ipsum', { element: 'em', className: 'important' });\n *\n *   // remove default highlight\n *   $('#content').unhighlight();\n *\n *   // remove custom highlight\n *   $('#content').unhighlight({ element: 'em', className: 'important' });\n *\n *\n * Copyright (c) 2009 Bartek Szopka\n *\n * Licensed under MIT license.\n *\n */\n\n(function(factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof exports === 'object') {\n    // Node/CommonJS\n    factory(require('jquery'));\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n})(function(jQuery) {\n  jQuery.extend({\n    highlight: function(\n      node,\n      re,\n      nodeName,\n      className,\n      callback,\n      ignoreDiacritics\n    ) {\n      if (node.nodeType === 3) {\n        var subject = ignoreDiacritics\n          ? jQuery.removeDiacritcs(node.data)\n          : node.data;\n        var match = subject.match(re);\n        if (match) {\n          // The new highlight Element Node\n          var highlight = document.createElement(nodeName || 'span');\n          highlight.className = className || 'highlight';\n          // Note that we use the captured value to find the real index\n          // of the match. This is because we do not want to include the matching word boundaries\n          var capturePos = node.data.indexOf(match[1], match.index);\n\n          // Split the node and replace the matching wordnode\n          // with the highlighted node\n          var wordNode = node.splitText(capturePos);\n          wordNode.splitText(match[1].length);\n\n          var wordClone = wordNode.cloneNode(true);\n          highlight.appendChild(wordClone);\n          wordNode.parentNode.replaceChild(highlight, wordNode);\n          if (typeof callback == 'function') {\n            callback(highlight);\n          }\n          return 1; //skip added node in parent\n        }\n      } else if (\n        node.nodeType === 1 &&\n        node.childNodes && // only element nodes that have children\n        !/(script|style)/i.test(node.tagName) && // ignore script and style nodes\n        !(\n          node.tagName === nodeName.toUpperCase() &&\n          node.className === className\n        )\n      ) {\n        // skip if already highlighted\n        for (var i = 0; i < node.childNodes.length; i++) {\n          i += jQuery.highlight(\n            node.childNodes[i],\n            re,\n            nodeName,\n            className,\n            callback,\n            ignoreDiacritics\n          );\n        }\n      }\n      return 0;\n    },\n\n    removeDiacritcs: function(word) {\n      return word\n        .replace(/[\\u00c0-\\u00c6]/g, 'A')\n        .replace(/[\\u00e0-\\u00e6]/g, 'a')\n        .replace(/[\\u00c7]/g, 'C')\n        .replace(/[\\u00e7]/g, 'c')\n        .replace(/[\\u00c8-\\u00cb]/g, 'E')\n        .replace(/[\\u00e8-\\u00eb]/g, 'e')\n        .replace(/[\\u00cc-\\u00cf]/g, 'I')\n        .replace(/[\\u00ec-\\u00ef]/g, 'i')\n        .replace(/[\\u00d1|\\u0147]/g, 'N')\n        .replace(/[\\u00f1|\\u0148]/g, 'n')\n        .replace(/[\\u00d2-\\u00d8|\\u0150]/g, 'O')\n        .replace(/[\\u00f2-\\u00f8|\\u0151]/g, 'o')\n        .replace(/[\\u0160]/g, 'S')\n        .replace(/[\\u0161]/g, 's')\n        .replace(/[\\u00d9-\\u00dc]/g, 'U')\n        .replace(/[\\u00f9-\\u00fc]/g, 'u')\n        .replace(/[\\u00dd]/g, 'Y')\n        .replace(/[\\u00fd]/g, 'y');\n    }\n  });\n\n  jQuery.fn.unhighlight = function(options) {\n    var settings = {\n      className: 'highlight',\n      element: 'span'\n    };\n\n    jQuery.extend(settings, options);\n\n    return this.find(settings.element + '.' + settings.className)\n      .each(function() {\n        var parent = this.parentNode;\n        parent.replaceChild(this.firstChild, this);\n        parent.normalize();\n      })\n      .end();\n  };\n\n  jQuery.fn.highlight = function(words, options, callback) {\n    var settings = {\n      className: 'highlight',\n      element: 'span',\n      caseSensitive: false,\n      wordsOnly: false,\n      wordsBoundary: '\\\\b',\n      ignoreDiacritics: false\n    };\n\n    jQuery.extend(settings, options);\n\n    if (typeof words === 'string') {\n      words = [words];\n    }\n    words = jQuery.grep(words, function(word) {\n      return word != '';\n    });\n    words = jQuery.map(words, function(word) {\n      if (settings.ignoreDiacritics) {\n        word = jQuery.removeDiacritcs(word);\n      }\n      return word.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n    });\n\n    if (words.length === 0) {\n      return this;\n    }\n\n    var flag = settings.caseSensitive ? '' : 'i';\n    // The capture parenthesis will make sure we can match\n    // only the matching word\n    var pattern = '(' + words.join('|') + ')';\n    if (settings.wordsOnly) {\n      pattern =\n        (settings.wordsBoundaryStart || settings.wordsBoundary) +\n        pattern +\n        (settings.wordsBoundaryEnd || settings.wordsBoundary);\n    }\n    var re = new RegExp(pattern, flag);\n\n    return this.each(function() {\n      jQuery.highlight(\n        this,\n        re,\n        settings.element,\n        settings.className,\n        callback,\n        settings.ignoreDiacritics\n      );\n    });\n  };\n});\n","/*!\n * @fileOverview TouchSwipe - jQuery Plugin\n * @version 1.6.18\n *\n * @author Matt Bryson http://www.github.com/mattbryson\n * @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin\n * @see http://labs.rampinteractive.co.uk/touchSwipe/\n * @see http://plugins.jquery.com/project/touchSwipe\n * @license\n * Copyright (c) 2010-2015 Matt Bryson\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n */\n\n/*\n *\n * Changelog\n * $Date: 2010-12-12 (Wed, 12 Dec 2010) $\n * $version: 1.0.0\n * $version: 1.0.1 - removed multibyte comments\n *\n * $Date: 2011-21-02 (Mon, 21 Feb 2011) $\n * $version: 1.1.0 \t- added allowPageScroll property to allow swiping and scrolling of page\n *\t\t\t\t\t- changed handler signatures so one handler can be used for multiple events\n * $Date: 2011-23-02 (Wed, 23 Feb 2011) $\n * $version: 1.2.0 \t- added click handler. This is fired if the user simply clicks and does not swipe. The event object and click target are passed to handler.\n *\t\t\t\t\t- If you use the http://code.google.com/p/jquery-ui-for-ipad-and-iphone/ plugin, you can also assign jQuery mouse events to children of a touchSwipe object.\n * $version: 1.2.1 \t- removed console log!\n *\n * $version: 1.2.2 \t- Fixed bug where scope was not preserved in callback methods.\n *\n * $Date: 2011-28-04 (Thurs, 28 April 2011) $\n * $version: 1.2.4 \t- Changed licence terms to be MIT or GPL inline with jQuery. Added check for support of touch events to stop non compatible browsers erroring.\n *\n * $Date: 2011-27-09 (Tues, 27 September 2011) $\n * $version: 1.2.5 \t- Added support for testing swipes with mouse on desktop browser (thanks to https://github.com/joelhy)\n *\n * $Date: 2012-14-05 (Mon, 14 May 2012) $\n * $version: 1.2.6 \t- Added timeThreshold between start and end touch, so user can ignore slow swipes (thanks to Mark Chase). Default is null, all swipes are detected\n *\n * $Date: 2012-05-06 (Tues, 05 June 2012) $\n * $version: 1.2.7 \t- Changed time threshold to have null default for backwards compatibility. Added duration param passed back in events, and refactored how time is handled.\n *\n * $Date: 2012-05-06 (Tues, 05 June 2012) $\n * $version: 1.2.8 \t- Added the possibility to return a value like null or false in the trigger callback. In that way we can control when the touch start/move should take effect or not (simply by returning in some cases return null; or return false;) This effects the ontouchstart/ontouchmove event.\n *\n * $Date: 2012-06-06 (Wed, 06 June 2012) $\n * $version: 1.3.0 \t- Refactored whole plugin to allow for methods to be executed, as well as exposed defaults for user override. Added 'enable', 'disable', and 'destroy' methods\n *\n * $Date: 2012-05-06 (Fri, 05 June 2012) $\n * $version: 1.3.1 \t- Bug fixes  - bind() with false as last argument is no longer supported in jQuery 1.6, also, if you just click, the duration is now returned correctly.\n *\n * $Date: 2012-29-07 (Sun, 29 July 2012) $\n * $version: 1.3.2\t- Added fallbackToMouseEvents option to NOT capture mouse events on non touch devices.\n * \t\t\t- Added \"all\" fingers value to the fingers property, so any combination of fingers triggers the swipe, allowing event handlers to check the finger count\n *\n * $Date: 2012-09-08 (Thurs, 9 Aug 2012) $\n * $version: 1.3.3\t- Code tidy prep for min version\n *\n * $Date: 2012-04-10 (wed, 4 Oct 2012) $\n * $version: 1.4.0\t- Added pinch support, pinchIn and pinchOut\n *\n * $Date: 2012-11-10 (Thurs, 11 Oct 2012) $\n * $version: 1.5.0\t- Added excludedElements, a jquery selector that specifies child elements that do NOT trigger swipes. By default, this is .noSwipe\n *\n * $Date: 2012-22-10 (Mon, 22 Oct 2012) $\n * $version: 1.5.1\t- Fixed bug with jQuery 1.8 and trailing comma in excludedElements\n *\t\t\t\t\t- Fixed bug with IE and eventPreventDefault()\n * $Date: 2013-01-12 (Fri, 12 Jan 2013) $\n * $version: 1.6.0\t- Fixed bugs with pinching, mainly when both pinch and swipe enabled, as well as adding time threshold for multifinger gestures, so releasing one finger beofre the other doesnt trigger as single finger gesture.\n *\t\t\t\t\t- made the demo site all static local HTML pages so they can be run locally by a developer\n *\t\t\t\t\t- added jsDoc comments and added documentation for the plugin\n *\t\t\t\t\t- code tidy\n *\t\t\t\t\t- added triggerOnTouchLeave property that will end the event when the user swipes off the element.\n * $Date: 2013-03-23 (Sat, 23 Mar 2013) $\n * $version: 1.6.1\t- Added support for ie8 touch events\n * $version: 1.6.2\t- Added support for events binding with on / off / bind in jQ for all callback names.\n *                   - Deprecated the 'click' handler in favour of tap.\n *                   - added cancelThreshold property\n *                   - added option method to update init options at runtime\n * $version 1.6.3    - added doubletap, longtap events and longTapThreshold, doubleTapThreshold property\n *\n * $Date: 2013-04-04 (Thurs, 04 April 2013) $\n * $version 1.6.4    - Fixed bug with cancelThreshold introduced in 1.6.3, where swipe status no longer fired start event, and stopped once swiping back.\n *\n * $Date: 2013-08-24 (Sat, 24 Aug 2013) $\n * $version 1.6.5    - Merged a few pull requests fixing various bugs, added AMD support.\n *\n * $Date: 2014-06-04 (Wed, 04 June 2014) $\n * $version 1.6.6 \t- Merge of pull requests.\n *    \t\t\t\t- IE10 touch support\n *    \t\t\t\t- Only prevent default event handling on valid swipe\n *    \t\t\t\t- Separate license/changelog comment\n *    \t\t\t\t- Detect if the swipe is valid at the end of the touch event.\n *    \t\t\t\t- Pass fingerdata to event handlers.\n *    \t\t\t\t- Add 'hold' gesture\n *    \t\t\t\t- Be more tolerant about the tap distance\n *    \t\t\t\t- Typos and minor fixes\n *\n * $Date: 2015-22-01 (Thurs, 22 Jan 2015) $\n * $version 1.6.7    - Added patch from https://github.com/mattbryson/TouchSwipe-Jquery-Plugin/issues/206 to fix memory leak\n *\n * $Date: 2015-2-2 (Mon, 2 Feb 2015) $\n * $version 1.6.8    - Added preventDefaultEvents option to proxy events regardless.\n *\t\t\t\t\t- Fixed issue with swipe and pinch not triggering at the same time\n *\n * $Date: 2015-9-6 (Tues, 9 June 2015) $\n * $version 1.6.9    - Added PR from jdalton/hybrid to fix pointer events\n *\t\t\t\t\t- Added scrolling demo\n *\t\t\t\t\t- Added version property to plugin\n *\n * $Date: 2015-1-10 (Wed, 1 October 2015) $\n * $version 1.6.10    - Added PR from beatspace to fix tap events\n * $version 1.6.11    - Added PRs from indri-indri ( Doc tidyup), kkirsche ( Bower tidy up ), UziTech (preventDefaultEvents fixes )\n *\t\t\t\t\t - Allowed setting multiple options via .swipe(\"options\", options_hash) and more simply .swipe(options_hash) or exisitng instances\n * $version 1.6.12    - Fixed bug with multi finger releases above 2 not triggering events\n *\n * $Date: 2015-12-18 (Fri, 18 December 2015) $\n * $version 1.6.13    - Added PRs\n *                    - Fixed #267 allowPageScroll not working correctly\n * $version 1.6.14    - Fixed #220 / #248 doubletap not firing with swipes, #223 commonJS compatible\n * $version 1.6.15    - More bug fixes\n *\n * $Date: 2016-04-29 (Fri, 29 April 2016) $\n * $version 1.6.16    - Swipes with 0 distance now allow default events to trigger.  So tapping any form elements or A tags will allow default interaction, but swiping will trigger a swipe.\n *                       Removed the a, input, select etc from the excluded Children list as the 0 distance tap solves that issue.\n * $Date: 2016-05-19  (Fri, 29 April 2016) $\n * $version 1.6.17     - Fixed context issue when calling instance methods via $(\"selector\").swipe(\"method\");\n * $version 1.6.18     - now honors fallbackToMouseEvents=false for MS Pointer events when a Mouse is used.\n * \n * $Date: 2018-09-17  (Mon, 17 September 2018) $\n * $version 1.6.19     - replaced jQuery bind with on, replaced deprecated `navigator.pointerEvents` with `window.PointerEvents`\n\n */\n\n/**\n * See (http://jquery.com/).\n * @name $\n * @class\n * See the jQuery Library  (http://jquery.com/) for full details.  This just\n * documents the function and classes that are added to jQuery by this plug-in.\n */\n\n/**\n * See (http://jquery.com/)\n * @name fn\n * @class\n * See the jQuery Library  (http://jquery.com/) for full details.  This just\n * documents the function and classes that are added to jQuery by this plug-in.\n * @memberOf $\n */\n\n\n(function(factory) {\n  if (typeof define === 'function' && define.amd && define.amd.jQuery) {\n    // AMD. Register as anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module !== 'undefined' && module.exports) {\n    // CommonJS Module\n    factory(require(\"jquery\"));\n  } else {\n    // Browser globals.\n    factory(jQuery);\n  }\n}(function($) {\n  \"use strict\";\n\n  //Constants\n  var VERSION = \"1.6.18\",\n    LEFT = \"left\",\n    RIGHT = \"right\",\n    UP = \"up\",\n    DOWN = \"down\",\n    IN = \"in\",\n    OUT = \"out\",\n\n    NONE = \"none\",\n    AUTO = \"auto\",\n\n    SWIPE = \"swipe\",\n    PINCH = \"pinch\",\n    TAP = \"tap\",\n    DOUBLE_TAP = \"doubletap\",\n    LONG_TAP = \"longtap\",\n    HOLD = \"hold\",\n\n    HORIZONTAL = \"horizontal\",\n    VERTICAL = \"vertical\",\n\n    ALL_FINGERS = \"all\",\n\n    DOUBLE_TAP_THRESHOLD = 10,\n\n    PHASE_START = \"start\",\n    PHASE_MOVE = \"move\",\n    PHASE_END = \"end\",\n    PHASE_CANCEL = \"cancel\",\n\n    SUPPORTS_TOUCH = 'ontouchstart' in window,\n\n    SUPPORTS_POINTER_IE10 = window.navigator.msPointerEnabled && !window.PointerEvent && !SUPPORTS_TOUCH,\n\n    SUPPORTS_POINTER = (window.PointerEvent || window.navigator.msPointerEnabled) && !SUPPORTS_TOUCH,\n\n    PLUGIN_NS = 'TouchSwipe';\n\n\n\n  /**\n  * The default configuration, and available options to configure touch swipe with.\n  * You can set the default values by updating any of the properties prior to instantiation.\n  * @name $.fn.swipe.defaults\n  * @namespace\n  * @property {int} [fingers=1] The number of fingers to detect in a swipe. Any swipes that do not meet this requirement will NOT trigger swipe handlers.\n  * @property {int} [threshold=75] The number of pixels that the user must move their finger by before it is considered a swipe.\n  * @property {int} [cancelThreshold=null] The number of pixels that the user must move their finger back from the original swipe direction to cancel the gesture.\n  * @property {int} [pinchThreshold=20] The number of pixels that the user must pinch their finger by before it is considered a pinch.\n  * @property {int} [maxTimeThreshold=null] Time, in milliseconds, between touchStart and touchEnd must NOT exceed in order to be considered a swipe.\n  * @property {int} [fingerReleaseThreshold=250] Time in milliseconds between releasing multiple fingers.  If 2 fingers are down, and are released one after the other, if they are within this threshold, it counts as a simultaneous release.\n  * @property {int} [longTapThreshold=500] Time in milliseconds between tap and release for a long tap\n  * @property {int} [doubleTapThreshold=200] Time in milliseconds between 2 taps to count as a double tap\n  * @property {function} [swipe=null] A handler to catch all swipes. See {@link $.fn.swipe#event:swipe}\n  * @property {function} [swipeLeft=null] A handler that is triggered for \"left\" swipes. See {@link $.fn.swipe#event:swipeLeft}\n  * @property {function} [swipeRight=null] A handler that is triggered for \"right\" swipes. See {@link $.fn.swipe#event:swipeRight}\n  * @property {function} [swipeUp=null] A handler that is triggered for \"up\" swipes. See {@link $.fn.swipe#event:swipeUp}\n  * @property {function} [swipeDown=null] A handler that is triggered for \"down\" swipes. See {@link $.fn.swipe#event:swipeDown}\n  * @property {function} [swipeStatus=null] A handler triggered for every phase of the swipe. See {@link $.fn.swipe#event:swipeStatus}\n  * @property {function} [pinchIn=null] A handler triggered for pinch in events. See {@link $.fn.swipe#event:pinchIn}\n  * @property {function} [pinchOut=null] A handler triggered for pinch out events. See {@link $.fn.swipe#event:pinchOut}\n  * @property {function} [pinchStatus=null] A handler triggered for every phase of a pinch. See {@link $.fn.swipe#event:pinchStatus}\n  * @property {function} [tap=null] A handler triggered when a user just taps on the item, rather than swipes it. If they do not move, tap is triggered, if they do move, it is not.\n  * @property {function} [doubleTap=null] A handler triggered when a user double taps on the item. The delay between taps can be set with the doubleTapThreshold property. See {@link $.fn.swipe.defaults#doubleTapThreshold}\n  * @property {function} [longTap=null] A handler triggered when a user long taps on the item. The delay between start and end can be set with the longTapThreshold property. See {@link $.fn.swipe.defaults#longTapThreshold}\n  * @property (function) [hold=null] A handler triggered when a user reaches longTapThreshold on the item. See {@link $.fn.swipe.defaults#longTapThreshold}\n  * @property {boolean} [triggerOnTouchEnd=true] If true, the swipe events are triggered when the touch end event is received (user releases finger).  If false, it will be triggered on reaching the threshold, and then cancel the touch event automatically.\n  * @property {boolean} [triggerOnTouchLeave=false] If true, then when the user leaves the swipe object, the swipe will end and trigger appropriate handlers.\n  * @property {string|undefined} [allowPageScroll='auto'] How the browser handles page scrolls when the user is swiping on a touchSwipe object. See {@link $.fn.swipe.pageScroll}.  <br/><br/>\n                    <code>\"auto\"</code> : all undefined swipes will cause the page to scroll in that direction. <br/>\n                    <code>\"none\"</code> : the page will not scroll when user swipes. <br/>\n                    <code>\"horizontal\"</code> : will force page to scroll on horizontal swipes. <br/>\n                    <code>\"vertical\"</code> : will force page to scroll on vertical swipes. <br/>\n  * @property {boolean} [fallbackToMouseEvents=true] If true mouse events are used when run on a non touch device, false will stop swipes being triggered by mouse events on non touch devices.\n  * @property {string} [excludedElements=\".noSwipe\"] A jquery selector that specifies child elements that do NOT trigger swipes. By default this excludes elements with the class .noSwipe .\n  * @property {boolean} [preventDefaultEvents=true] by default default events are cancelled, so the page doesn't move.  You can disable this so both native events fire as well as your handlers.\n\n  */\n  var defaults = {\n    fingers: 1,\n    threshold: 75,\n    cancelThreshold: null,\n    pinchThreshold: 20,\n    maxTimeThreshold: null,\n    fingerReleaseThreshold: 250,\n    longTapThreshold: 500,\n    doubleTapThreshold: 200,\n    swipe: null,\n    swipeLeft: null,\n    swipeRight: null,\n    swipeUp: null,\n    swipeDown: null,\n    swipeStatus: null,\n    pinchIn: null,\n    pinchOut: null,\n    pinchStatus: null,\n    click: null, //Deprecated since 1.6.2\n    tap: null,\n    doubleTap: null,\n    longTap: null,\n    hold: null,\n    triggerOnTouchEnd: true,\n    triggerOnTouchLeave: false,\n    allowPageScroll: \"auto\",\n    fallbackToMouseEvents: true,\n    excludedElements: \".noSwipe\",\n    preventDefaultEvents: true\n  };\n\n\n\n  /**\n   * Applies TouchSwipe behaviour to one or more jQuery objects.\n   * The TouchSwipe plugin can be instantiated via this method, or methods within\n   * TouchSwipe can be executed via this method as per jQuery plugin architecture.\n   * An existing plugin can have its options changed simply by re calling .swipe(options)\n   * @see TouchSwipe\n   * @class\n   * @param {Mixed} method If the current DOMNode is a TouchSwipe object, and <code>method</code> is a TouchSwipe method, then\n   * the <code>method</code> is executed, and any following arguments are passed to the TouchSwipe method.\n   * If <code>method</code> is an object, then the TouchSwipe class is instantiated on the current DOMNode, passing the\n   * configuration properties defined in the object. See TouchSwipe\n   *\n   */\n  $.fn.swipe = function(method) {\n    var $this = $(this),\n      plugin = $this.data(PLUGIN_NS);\n\n    //Check if we are already instantiated and trying to execute a method\n    if (plugin && typeof method === 'string') {\n      if (plugin[method]) {\n        return plugin[method].apply(plugin, Array.prototype.slice.call(arguments, 1));\n      } else {\n        $.error('Method ' + method + ' does not exist on jQuery.swipe');\n      }\n    }\n\n    //Else update existing plugin with new options hash\n    else if (plugin && typeof method === 'object') {\n      plugin['option'].apply(plugin, arguments);\n    }\n\n    //Else not instantiated and trying to pass init object (or nothing)\n    else if (!plugin && (typeof method === 'object' || !method)) {\n      return init.apply(this, arguments);\n    }\n\n    return $this;\n  };\n\n  /**\n   * The version of the plugin\n   * @readonly\n   */\n  $.fn.swipe.version = VERSION;\n\n\n\n  //Expose our defaults so a user could override the plugin defaults\n  $.fn.swipe.defaults = defaults;\n\n  /**\n   * The phases that a touch event goes through.  The <code>phase</code> is passed to the event handlers.\n   * These properties are read only, attempting to change them will not alter the values passed to the event handlers.\n   * @namespace\n   * @readonly\n   * @property {string} PHASE_START Constant indicating the start phase of the touch event. Value is <code>\"start\"</code>.\n   * @property {string} PHASE_MOVE Constant indicating the move phase of the touch event. Value is <code>\"move\"</code>.\n   * @property {string} PHASE_END Constant indicating the end phase of the touch event. Value is <code>\"end\"</code>.\n   * @property {string} PHASE_CANCEL Constant indicating the cancel phase of the touch event. Value is <code>\"cancel\"</code>.\n   */\n  $.fn.swipe.phases = {\n    PHASE_START: PHASE_START,\n    PHASE_MOVE: PHASE_MOVE,\n    PHASE_END: PHASE_END,\n    PHASE_CANCEL: PHASE_CANCEL\n  };\n\n  /**\n   * The direction constants that are passed to the event handlers.\n   * These properties are read only, attempting to change them will not alter the values passed to the event handlers.\n   * @namespace\n   * @readonly\n   * @property {string} LEFT Constant indicating the left direction. Value is <code>\"left\"</code>.\n   * @property {string} RIGHT Constant indicating the right direction. Value is <code>\"right\"</code>.\n   * @property {string} UP Constant indicating the up direction. Value is <code>\"up\"</code>.\n   * @property {string} DOWN Constant indicating the down direction. Value is <code>\"cancel\"</code>.\n   * @property {string} IN Constant indicating the in direction. Value is <code>\"in\"</code>.\n   * @property {string} OUT Constant indicating the out direction. Value is <code>\"out\"</code>.\n   */\n  $.fn.swipe.directions = {\n    LEFT: LEFT,\n    RIGHT: RIGHT,\n    UP: UP,\n    DOWN: DOWN,\n    IN: IN,\n    OUT: OUT\n  };\n\n  /**\n   * The page scroll constants that can be used to set the value of <code>allowPageScroll</code> option\n   * These properties are read only\n   * @namespace\n   * @readonly\n   * @see $.fn.swipe.defaults#allowPageScroll\n   * @property {string} NONE Constant indicating no page scrolling is allowed. Value is <code>\"none\"</code>.\n   * @property {string} HORIZONTAL Constant indicating horizontal page scrolling is allowed. Value is <code>\"horizontal\"</code>.\n   * @property {string} VERTICAL Constant indicating vertical page scrolling is allowed. Value is <code>\"vertical\"</code>.\n   * @property {string} AUTO Constant indicating either horizontal or vertical will be allowed, depending on the swipe handlers registered. Value is <code>\"auto\"</code>.\n   */\n  $.fn.swipe.pageScroll = {\n    NONE: NONE,\n    HORIZONTAL: HORIZONTAL,\n    VERTICAL: VERTICAL,\n    AUTO: AUTO\n  };\n\n  /**\n   * Constants representing the number of fingers used in a swipe.  These are used to set both the value of <code>fingers</code> in the\n   * options object, as well as the value of the <code>fingers</code> event property.\n   * These properties are read only, attempting to change them will not alter the values passed to the event handlers.\n   * @namespace\n   * @readonly\n   * @see $.fn.swipe.defaults#fingers\n   * @property {string} ONE Constant indicating 1 finger is to be detected / was detected. Value is <code>1</code>.\n   * @property {string} TWO Constant indicating 2 fingers are to be detected / were detected. Value is <code>2</code>.\n   * @property {string} THREE Constant indicating 3 finger are to be detected / were detected. Value is <code>3</code>.\n   * @property {string} FOUR Constant indicating 4 finger are to be detected / were detected. Not all devices support this. Value is <code>4</code>.\n   * @property {string} FIVE Constant indicating 5 finger are to be detected / were detected. Not all devices support this. Value is <code>5</code>.\n   * @property {string} ALL Constant indicating any combination of finger are to be detected.  Value is <code>\"all\"</code>.\n   */\n  $.fn.swipe.fingers = {\n    ONE: 1,\n    TWO: 2,\n    THREE: 3,\n    FOUR: 4,\n    FIVE: 5,\n    ALL: ALL_FINGERS\n  };\n\n  /**\n   * Initialise the plugin for each DOM element matched\n   * This creates a new instance of the main TouchSwipe class for each DOM element, and then\n   * saves a reference to that instance in the elements data property.\n   * @internal\n   */\n  function init(options) {\n    //Prep and extend the options\n    if (options && (options.allowPageScroll === undefined && (options.swipe !== undefined || options.swipeStatus !== undefined))) {\n      options.allowPageScroll = NONE;\n    }\n\n    //Check for deprecated options\n    //Ensure that any old click handlers are assigned to the new tap, unless we have a tap\n    if (options.click !== undefined && options.tap === undefined) {\n      options.tap = options.click;\n    }\n\n    if (!options) {\n      options = {};\n    }\n\n    //pass empty object so we dont modify the defaults\n    options = $.extend({}, $.fn.swipe.defaults, options);\n\n    //For each element instantiate the plugin\n    return this.each(function() {\n      var $this = $(this);\n\n      //Check we havent already initialised the plugin\n      var plugin = $this.data(PLUGIN_NS);\n\n      if (!plugin) {\n        plugin = new TouchSwipe(this, options);\n        $this.data(PLUGIN_NS, plugin);\n      }\n    });\n  }\n\n  /**\n   * Main TouchSwipe Plugin Class.\n   * Do not use this to construct your TouchSwipe object, use the jQuery plugin method $.fn.swipe(); {@link $.fn.swipe}\n   * @private\n   * @name TouchSwipe\n   * @param {DOMNode} element The HTML DOM object to apply to plugin to\n   * @param {Object} options The options to configure the plugin with.  @link {$.fn.swipe.defaults}\n   * @see $.fh.swipe.defaults\n   * @see $.fh.swipe\n   * @class\n   */\n  function TouchSwipe(element, options) {\n\n    //take a local/instacne level copy of the options - should make it this.options really...\n    var options = $.extend({}, options);\n\n    var useTouchEvents = (SUPPORTS_TOUCH || SUPPORTS_POINTER || !options.fallbackToMouseEvents),\n      START_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerDown' : 'pointerdown') : 'touchstart') : 'mousedown',\n      MOVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerMove' : 'pointermove') : 'touchmove') : 'mousemove',\n      END_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerUp' : 'pointerup') : 'touchend') : 'mouseup',\n      LEAVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? 'mouseleave' : null) : 'mouseleave', //we manually detect leave on touch devices, so null event here\n      CANCEL_EV = (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerCancel' : 'pointercancel') : 'touchcancel');\n\n\n\n    //touch properties\n    var distance = 0,\n      direction = null,\n      currentDirection = null,\n      duration = 0,\n      startTouchesDistance = 0,\n      endTouchesDistance = 0,\n      pinchZoom = 1,\n      pinchDistance = 0,\n      pinchDirection = 0,\n      maximumsMap = null;\n\n\n\n    //jQuery wrapped element for this instance\n    var $element = $(element);\n\n    //Current phase of th touch cycle\n    var phase = \"start\";\n\n    // the current number of fingers being used.\n    var fingerCount = 0;\n\n    //track mouse points / delta\n    var fingerData = {};\n\n    //track times\n    var startTime = 0,\n      endTime = 0,\n      previousTouchEndTime = 0,\n      fingerCountAtRelease = 0,\n      doubleTapStartTime = 0;\n\n    //Timeouts\n    var singleTapTimeout = null,\n      holdTimeout = null;\n\n    // Add gestures to all swipable areas if supported\n    try {\n      $element.on(START_EV, touchStart);\n      $element.on(CANCEL_EV, touchCancel);\n    } catch (e) {\n      $.error('events not supported ' + START_EV + ',' + CANCEL_EV + ' on jQuery.swipe');\n    }\n\n    //\n    //Public methods\n    //\n\n    /**\n     * re-enables the swipe plugin with the previous configuration\n     * @function\n     * @name $.fn.swipe#enable\n     * @return {DOMNode} The Dom element that was registered with TouchSwipe\n     * @example $(\"#element\").swipe(\"enable\");\n     */\n    this.enable = function() {\n      //Incase we are already enabled, clean up...\n      this.disable();\n      $element.on(START_EV, touchStart);\n      $element.on(CANCEL_EV, touchCancel);\n      return $element;\n    };\n\n    /**\n     * disables the swipe plugin\n     * @function\n     * @name $.fn.swipe#disable\n     * @return {DOMNode} The Dom element that is now registered with TouchSwipe\n     * @example $(\"#element\").swipe(\"disable\");\n     */\n    this.disable = function() {\n      removeListeners();\n      return $element;\n    };\n\n    /**\n     * Destroy the swipe plugin completely. To use any swipe methods, you must re initialise the plugin.\n     * @function\n     * @name $.fn.swipe#destroy\n     * @example $(\"#element\").swipe(\"destroy\");\n     */\n    this.destroy = function() {\n      removeListeners();\n      $element.data(PLUGIN_NS, null);\n      $element = null;\n    };\n\n\n    /**\n     * Allows run time updating of the swipe configuration options.\n     * @function\n     * @name $.fn.swipe#option\n     * @param {String} property The option property to get or set, or a has of multiple options to set\n     * @param {Object} [value] The value to set the property to\n     * @return {Object} If only a property name is passed, then that property value is returned. If nothing is passed the current options hash is returned.\n     * @example $(\"#element\").swipe(\"option\", \"threshold\"); // return the threshold\n     * @example $(\"#element\").swipe(\"option\", \"threshold\", 100); // set the threshold after init\n     * @example $(\"#element\").swipe(\"option\", {threshold:100, fingers:3} ); // set multiple properties after init\n     * @example $(\"#element\").swipe({threshold:100, fingers:3} ); // set multiple properties after init - the \"option\" method is optional!\n     * @example $(\"#element\").swipe(\"option\"); // Return the current options hash\n     * @see $.fn.swipe.defaults\n     *\n     */\n    this.option = function(property, value) {\n\n      if (typeof property === 'object') {\n        options = $.extend(options, property);\n      } else if (options[property] !== undefined) {\n        if (value === undefined) {\n          return options[property];\n        } else {\n          options[property] = value;\n        }\n      } else if (!property) {\n        return options;\n      } else {\n        $.error('Option ' + property + ' does not exist on jQuery.swipe.options');\n      }\n\n      return null;\n    }\n\n\n\n    //\n    // Private methods\n    //\n\n    //\n    // EVENTS\n    //\n    /**\n     * Event handler for a touch start event.\n     * Stops the default click event from triggering and stores where we touched\n     * @inner\n     * @param {object} jqEvent The normalised jQuery event object.\n     */\n    function touchStart(jqEvent) {\n\n      //If we already in a touch event (a finger already in use) then ignore subsequent ones..\n      if (getTouchInProgress()) {\n        return;\n      }\n\n      //Check if this element matches any in the excluded elements selectors,  or its parent is excluded, if so, DON'T swipe\n      if ($(jqEvent.target).closest(options.excludedElements, $element).length > 0) {\n        return;\n      }\n\n      //As we use Jquery bind for events, we need to target the original event object\n      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\n      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;\n\n\n      //If we have a pointer event, whoes type is 'mouse' and we have said NO mouse events, then dont do anything.\n      if(event.pointerType && event.pointerType==\"mouse\" && options.fallbackToMouseEvents==false) {\n        return;\n      };\n\n      var ret,\n        touches = event.touches,\n        evt = touches ? touches[0] : event;\n\n      phase = PHASE_START;\n\n      //If we support touches, get the finger count\n      if (touches) {\n        // get the total number of fingers touching the screen\n        fingerCount = touches.length;\n      }\n      //Else this is the desktop, so stop the browser from dragging content\n      else if (options.preventDefaultEvents !== false) {\n        jqEvent.preventDefault(); //call this on jq event so we are cross browser\n      }\n\n      //clear vars..\n      distance = 0;\n      direction = null;\n      currentDirection=null;\n      pinchDirection = null;\n      duration = 0;\n      startTouchesDistance = 0;\n      endTouchesDistance = 0;\n      pinchZoom = 1;\n      pinchDistance = 0;\n      maximumsMap = createMaximumsData();\n      cancelMultiFingerRelease();\n\n      //Create the default finger data\n      createFingerData(0, evt);\n\n      // check the number of fingers is what we are looking for, or we are capturing pinches\n      if (!touches || (fingerCount === options.fingers || options.fingers === ALL_FINGERS) || hasPinches()) {\n        // get the coordinates of the touch\n        startTime = getTimeStamp();\n\n        if (fingerCount == 2) {\n          //Keep track of the initial pinch distance, so we can calculate the diff later\n          //Store second finger data as start\n          createFingerData(1, touches[1]);\n          startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start);\n        }\n\n        if (options.swipeStatus || options.pinchStatus) {\n          ret = triggerHandler(event, phase);\n        }\n      } else {\n        //A touch with more or less than the fingers we are looking for, so cancel\n        ret = false;\n      }\n\n      //If we have a return value from the users handler, then return and cancel\n      if (ret === false) {\n        phase = PHASE_CANCEL;\n        triggerHandler(event, phase);\n        return ret;\n      } else {\n        if (options.hold) {\n          holdTimeout = setTimeout($.proxy(function() {\n            //Trigger the event\n            $element.trigger('hold', [event.target]);\n            //Fire the callback\n            if (options.hold) {\n              ret = options.hold.call($element, event, event.target);\n            }\n          }, this), options.longTapThreshold);\n        }\n\n        setTouchInProgress(true);\n      }\n\n      return null;\n    };\n\n\n\n    /**\n     * Event handler for a touch move event.\n     * If we change fingers during move, then cancel the event\n     * @inner\n     * @param {object} jqEvent The normalised jQuery event object.\n     */\n    function touchMove(jqEvent) {\n\n      //As we use Jquery bind for events, we need to target the original event object\n      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\n      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;\n\n      //If we are ending, cancelling, or within the threshold of 2 fingers being released, don't track anything..\n      if (phase === PHASE_END || phase === PHASE_CANCEL || inMultiFingerRelease())\n        return;\n\n      var ret,\n        touches = event.touches,\n        evt = touches ? touches[0] : event;\n\n\n      //Update the  finger data\n      var currentFinger = updateFingerData(evt);\n      endTime = getTimeStamp();\n\n      if (touches) {\n        fingerCount = touches.length;\n      }\n\n      if (options.hold) {\n        clearTimeout(holdTimeout);\n      }\n\n      phase = PHASE_MOVE;\n\n      //If we have 2 fingers get Touches distance as well\n      if (fingerCount == 2) {\n\n        //Keep track of the initial pinch distance, so we can calculate the diff later\n        //We do this here as well as the start event, in case they start with 1 finger, and the press 2 fingers\n        if (startTouchesDistance == 0) {\n          //Create second finger if this is the first time...\n          createFingerData(1, touches[1]);\n\n          startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start);\n        } else {\n          //Else just update the second finger\n          updateFingerData(touches[1]);\n\n          endTouchesDistance = calculateTouchesDistance(fingerData[0].end, fingerData[1].end);\n          pinchDirection = calculatePinchDirection(fingerData[0].end, fingerData[1].end);\n        }\n\n        pinchZoom = calculatePinchZoom(startTouchesDistance, endTouchesDistance);\n        pinchDistance = Math.abs(startTouchesDistance - endTouchesDistance);\n      }\n\n      if ((fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !touches || hasPinches()) {\n\n        //The overall direction of the swipe. From start to now.\n        direction = calculateDirection(currentFinger.start, currentFinger.end);\n\n        //The immediate direction of the swipe, direction between the last movement and this one.\n        currentDirection = calculateDirection(currentFinger.last, currentFinger.end);\n\n        //Check if we need to prevent default event (page scroll / pinch zoom) or not\n        validateDefaultEvent(jqEvent, currentDirection);\n\n        //Distance and duration are all off the main finger\n        distance = calculateDistance(currentFinger.start, currentFinger.end);\n        duration = calculateDuration();\n\n        //Cache the maximum distance we made in this direction\n        setMaxDistance(direction, distance);\n\n        //Trigger status handler\n        ret = triggerHandler(event, phase);\n\n\n        //If we trigger end events when threshold are met, or trigger events when touch leaves element\n        if (!options.triggerOnTouchEnd || options.triggerOnTouchLeave) {\n\n          var inBounds = true;\n\n          //If checking if we leave the element, run the bounds check (we can use touchleave as its not supported on webkit)\n          if (options.triggerOnTouchLeave) {\n            var bounds = getbounds(this);\n            inBounds = isInBounds(currentFinger.end, bounds);\n          }\n\n          //Trigger end handles as we swipe if thresholds met or if we have left the element if the user has asked to check these..\n          if (!options.triggerOnTouchEnd && inBounds) {\n            phase = getNextPhase(PHASE_MOVE);\n          }\n          //We end if out of bounds here, so set current phase to END, and check if its modified\n          else if (options.triggerOnTouchLeave && !inBounds) {\n            phase = getNextPhase(PHASE_END);\n          }\n\n          if (phase == PHASE_CANCEL || phase == PHASE_END) {\n            triggerHandler(event, phase);\n          }\n        }\n      } else {\n        phase = PHASE_CANCEL;\n        triggerHandler(event, phase);\n      }\n\n      if (ret === false) {\n        phase = PHASE_CANCEL;\n        triggerHandler(event, phase);\n      }\n    }\n\n\n\n\n    /**\n     * Event handler for a touch end event.\n     * Calculate the direction and trigger events\n     * @inner\n     * @param {object} jqEvent The normalised jQuery event object.\n     */\n    function touchEnd(jqEvent) {\n      //As we use Jquery bind for events, we need to target the original event object\n      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\n      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent,\n        touches = event.touches;\n\n      //If we are still in a touch with the device wait a fraction and see if the other finger comes up\n      //if it does within the threshold, then we treat it as a multi release, not a single release and end the touch / swipe\n      if (touches) {\n        if (touches.length && !inMultiFingerRelease()) {\n          startMultiFingerRelease(event);\n          return true;\n        } else if (touches.length && inMultiFingerRelease()) {\n          return true;\n        }\n      }\n\n      //If a previous finger has been released, check how long ago, if within the threshold, then assume it was a multifinger release.\n      //This is used to allow 2 fingers to release fractionally after each other, whilst maintaining the event as containing 2 fingers, not 1\n      if (inMultiFingerRelease()) {\n        fingerCount = fingerCountAtRelease;\n      }\n\n      //Set end of swipe\n      endTime = getTimeStamp();\n\n      //Get duration incase move was never fired\n      duration = calculateDuration();\n\n      //If we trigger handlers at end of swipe OR, we trigger during, but they didnt trigger and we are still in the move phase\n      if (didSwipeBackToCancel() || !validateSwipeDistance()) {\n        phase = PHASE_CANCEL;\n        triggerHandler(event, phase);\n      } else if (options.triggerOnTouchEnd || (options.triggerOnTouchEnd === false && phase === PHASE_MOVE)) {\n        //call this on jq event so we are cross browser\n        if (options.preventDefaultEvents !== false && jqEvent.cancelable !== false) {\n          jqEvent.preventDefault();\n        }\n        phase = PHASE_END;\n        triggerHandler(event, phase);\n      }\n      //Special cases - A tap should always fire on touch end regardless,\n      //So here we manually trigger the tap end handler by itself\n      //We dont run trigger handler as it will re-trigger events that may have fired already\n      else if (!options.triggerOnTouchEnd && hasTap()) {\n        //Trigger the pinch events...\n        phase = PHASE_END;\n        triggerHandlerForGesture(event, phase, TAP);\n      } else if (phase === PHASE_MOVE) {\n        phase = PHASE_CANCEL;\n        triggerHandler(event, phase);\n      }\n\n      setTouchInProgress(false);\n\n      return null;\n    }\n\n\n\n    /**\n     * Event handler for a touch cancel event.\n     * Clears current vars\n     * @inner\n     */\n    function touchCancel() {\n      // reset the variables back to default values\n      fingerCount = 0;\n      endTime = 0;\n      startTime = 0;\n      startTouchesDistance = 0;\n      endTouchesDistance = 0;\n      pinchZoom = 1;\n\n      //If we were in progress of tracking a possible multi touch end, then re set it.\n      cancelMultiFingerRelease();\n\n      setTouchInProgress(false);\n    }\n\n\n    /**\n     * Event handler for a touch leave event.\n     * This is only triggered on desktops, in touch we work this out manually\n     * as the touchleave event is not supported in webkit\n     * @inner\n     */\n    function touchLeave(jqEvent) {\n      //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\n      var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;\n\n      //If we have the trigger on leave property set....\n      if (options.triggerOnTouchLeave) {\n        phase = getNextPhase(PHASE_END);\n        triggerHandler(event, phase);\n      }\n    }\n\n    /**\n     * Removes all listeners that were associated with the plugin\n     * @inner\n     */\n    function removeListeners() {\n      $element.off(START_EV, touchStart);\n      $element.off(CANCEL_EV, touchCancel);\n      $element.off(MOVE_EV, touchMove);\n      $element.off(END_EV, touchEnd);\n\n      //we only have leave events on desktop, we manually calculate leave on touch as its not supported in webkit\n      if (LEAVE_EV) {\n        $element.off(LEAVE_EV, touchLeave);\n      }\n\n      setTouchInProgress(false);\n    }\n\n\n    /**\n     * Checks if the time and distance thresholds have been met, and if so then the appropriate handlers are fired.\n     */\n    function getNextPhase(currentPhase) {\n\n      var nextPhase = currentPhase;\n\n      // Ensure we have valid swipe (under time and over distance  and check if we are out of bound...)\n      var validTime = validateSwipeTime();\n      var validDistance = validateSwipeDistance();\n      var didCancel = didSwipeBackToCancel();\n\n      //If we have exceeded our time, then cancel\n      if (!validTime || didCancel) {\n        nextPhase = PHASE_CANCEL;\n      }\n      //Else if we are moving, and have reached distance then end\n      else if (validDistance && currentPhase == PHASE_MOVE && (!options.triggerOnTouchEnd || options.triggerOnTouchLeave)) {\n        nextPhase = PHASE_END;\n      }\n      //Else if we have ended by leaving and didn't reach distance, then cancel\n      else if (!validDistance && currentPhase == PHASE_END && options.triggerOnTouchLeave) {\n        nextPhase = PHASE_CANCEL;\n      }\n\n      return nextPhase;\n    }\n\n\n    /**\n     * Trigger the relevant event handler\n     * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, \"left\", \"right\", \"up\", or \"down\"\n     * @param {object} event the original event object\n     * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases}\n     * @inner\n     */\n    function triggerHandler(event, phase) {\n\n\n\n      var ret,\n        touches = event.touches;\n\n      // SWIPE GESTURES\n      if (didSwipe() || hasSwipes()) {\n          ret = triggerHandlerForGesture(event, phase, SWIPE);\n      }\n\n      // PINCH GESTURES (if the above didn't cancel)\n      if ((didPinch() || hasPinches()) && ret !== false) {\n          ret = triggerHandlerForGesture(event, phase, PINCH);\n      }\n\n      // CLICK / TAP (if the above didn't cancel)\n      if (didDoubleTap() && ret !== false) {\n        //Trigger the tap events...\n        ret = triggerHandlerForGesture(event, phase, DOUBLE_TAP);\n      }\n\n      // CLICK / TAP (if the above didn't cancel)\n      else if (didLongTap() && ret !== false) {\n        //Trigger the tap events...\n        ret = triggerHandlerForGesture(event, phase, LONG_TAP);\n      }\n\n      // CLICK / TAP (if the above didn't cancel)\n      else if (didTap() && ret !== false) {\n        //Trigger the tap event..\n        ret = triggerHandlerForGesture(event, phase, TAP);\n      }\n\n\n\n      // If we are cancelling the gesture, then manually trigger the reset handler\n      if (phase === PHASE_CANCEL) {\n\n        touchCancel(event);\n      }\n\n\n\n\n      // If we are ending the gesture, then manually trigger the reset handler IF all fingers are off\n      if (phase === PHASE_END) {\n        //If we support touch, then check that all fingers are off before we cancel\n        if (touches) {\n          if (!touches.length) {\n            touchCancel(event);\n          }\n        } else {\n          touchCancel(event);\n        }\n      }\n\n      return ret;\n    }\n\n\n\n    /**\n     * Trigger the relevant event handler\n     * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, \"left\", \"right\", \"up\", or \"down\"\n     * @param {object} event the original event object\n     * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases}\n     * @param {string} gesture the gesture to trigger a handler for : PINCH or SWIPE {@link $.fn.swipe.gestures}\n     * @return Boolean False, to indicate that the event should stop propagation, or void.\n     * @inner\n     */\n    function triggerHandlerForGesture(event, phase, gesture) {\n\n      var ret;\n\n      //SWIPES....\n      if (gesture == SWIPE) {\n        //Trigger status every time..\n        $element.trigger('swipeStatus', [phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData, currentDirection]);\n\n        if (options.swipeStatus) {\n          ret = options.swipeStatus.call($element, event, phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData, currentDirection);\n          //If the status cancels, then dont run the subsequent event handlers..\n          if (ret === false) return false;\n        }\n\n        if (phase == PHASE_END && validateSwipe()) {\n\n          //Cancel any taps that were in progress...\n          clearTimeout(singleTapTimeout);\n          clearTimeout(holdTimeout);\n\n          $element.trigger('swipe', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\n\n          if (options.swipe) {\n            ret = options.swipe.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\n            //If the status cancels, then dont run the subsequent event handlers..\n            if (ret === false) return false;\n          }\n\n          //trigger direction specific event handlers\n          switch (direction) {\n            case LEFT:\n              $element.trigger('swipeLeft', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\n\n              if (options.swipeLeft) {\n                ret = options.swipeLeft.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\n              }\n              break;\n\n            case RIGHT:\n              $element.trigger('swipeRight', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\n\n              if (options.swipeRight) {\n                ret = options.swipeRight.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\n              }\n              break;\n\n            case UP:\n              $element.trigger('swipeUp', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\n\n              if (options.swipeUp) {\n                ret = options.swipeUp.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\n              }\n              break;\n\n            case DOWN:\n              $element.trigger('swipeDown', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\n\n              if (options.swipeDown) {\n                ret = options.swipeDown.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\n              }\n              break;\n          }\n        }\n      }\n\n\n      //PINCHES....\n      if (gesture == PINCH) {\n        $element.trigger('pinchStatus', [phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);\n\n        if (options.pinchStatus) {\n          ret = options.pinchStatus.call($element, event, phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);\n          //If the status cancels, then dont run the subsequent event handlers..\n          if (ret === false) return false;\n        }\n\n        if (phase == PHASE_END && validatePinch()) {\n\n          switch (pinchDirection) {\n            case IN:\n              $element.trigger('pinchIn', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);\n\n              if (options.pinchIn) {\n                ret = options.pinchIn.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);\n              }\n              break;\n\n            case OUT:\n              $element.trigger('pinchOut', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);\n\n              if (options.pinchOut) {\n                ret = options.pinchOut.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);\n              }\n              break;\n          }\n        }\n      }\n\n      if (gesture == TAP) {\n        if (phase === PHASE_CANCEL || phase === PHASE_END) {\n\n          clearTimeout(singleTapTimeout);\n          clearTimeout(holdTimeout);\n\n          //If we are also looking for doubelTaps, wait incase this is one...\n          if (hasDoubleTap() && !inDoubleTap()) {\n            doubleTapStartTime = getTimeStamp();\n\n            //Now wait for the double tap timeout, and trigger this single tap\n            //if its not cancelled by a double tap\n            singleTapTimeout = setTimeout($.proxy(function() {\n              doubleTapStartTime = null;\n              $element.trigger('tap', [event.target]);\n\n              if (options.tap) {\n                ret = options.tap.call($element, event, event.target);\n              }\n            }, this), options.doubleTapThreshold);\n\n          } else {\n            doubleTapStartTime = null;\n            $element.trigger('tap', [event.target]);\n            if (options.tap) {\n              ret = options.tap.call($element, event, event.target);\n            }\n          }\n        }\n      } else if (gesture == DOUBLE_TAP) {\n        if (phase === PHASE_CANCEL || phase === PHASE_END) {\n          clearTimeout(singleTapTimeout);\n          clearTimeout(holdTimeout);\n          doubleTapStartTime = null;\n          $element.trigger('doubletap', [event.target]);\n\n          if (options.doubleTap) {\n            ret = options.doubleTap.call($element, event, event.target);\n          }\n        }\n      } else if (gesture == LONG_TAP) {\n        if (phase === PHASE_CANCEL || phase === PHASE_END) {\n          clearTimeout(singleTapTimeout);\n          doubleTapStartTime = null;\n\n          $element.trigger('longtap', [event.target]);\n          if (options.longTap) {\n            ret = options.longTap.call($element, event, event.target);\n          }\n        }\n      }\n\n      return ret;\n    }\n\n\n    //\n    // GESTURE VALIDATION\n    //\n\n    /**\n     * Checks the user has swipe far enough\n     * @return Boolean if <code>threshold</code> has been set, return true if the threshold was met, else false.\n     * If no threshold was set, then we return true.\n     * @inner\n     */\n    function validateSwipeDistance() {\n      var valid = true;\n      //If we made it past the min swipe distance..\n      if (options.threshold !== null) {\n        valid = distance >= options.threshold;\n      }\n\n      return valid;\n    }\n\n    /**\n     * Checks the user has swiped back to cancel.\n     * @return Boolean if <code>cancelThreshold</code> has been set, return true if the cancelThreshold was met, else false.\n     * If no cancelThreshold was set, then we return true.\n     * @inner\n     */\n    function didSwipeBackToCancel() {\n      var cancelled = false;\n      if (options.cancelThreshold !== null && direction !== null) {\n        cancelled = (getMaxDistance(direction) - distance) >= options.cancelThreshold;\n      }\n\n      return cancelled;\n    }\n\n    /**\n     * Checks the user has pinched far enough\n     * @return Boolean if <code>pinchThreshold</code> has been set, return true if the threshold was met, else false.\n     * If no threshold was set, then we return true.\n     * @inner\n     */\n    function validatePinchDistance() {\n      if (options.pinchThreshold !== null) {\n        return pinchDistance >= options.pinchThreshold;\n      }\n      return true;\n    }\n\n    /**\n     * Checks that the time taken to swipe meets the minimum / maximum requirements\n     * @return Boolean\n     * @inner\n     */\n    function validateSwipeTime() {\n      var result;\n      //If no time set, then return true\n      if (options.maxTimeThreshold) {\n        if (duration >= options.maxTimeThreshold) {\n          result = false;\n        } else {\n          result = true;\n        }\n      } else {\n        result = true;\n      }\n\n      return result;\n    }\n\n\n    /**\n     * Checks direction of the swipe and the value allowPageScroll to see if we should allow or prevent the default behaviour from occurring.\n     * This will essentially allow page scrolling or not when the user is swiping on a touchSwipe object.\n     * @param {object} jqEvent The normalised jQuery representation of the event object.\n     * @param {string} direction The direction of the event. See {@link $.fn.swipe.directions}\n     * @see $.fn.swipe.directions\n     * @inner\n     */\n    function validateDefaultEvent(jqEvent, direction) {\n\n      //If the option is set, allways allow the event to bubble up (let user handle weirdness)\n      if (options.preventDefaultEvents === false) {\n        return;\n      }\n\n      if (options.allowPageScroll === NONE) {\n        jqEvent.preventDefault();\n      } else {\n        var auto = options.allowPageScroll === AUTO;\n\n        switch (direction) {\n          case LEFT:\n            if ((options.swipeLeft && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) {\n              jqEvent.preventDefault();\n            }\n            break;\n\n          case RIGHT:\n            if ((options.swipeRight && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) {\n              jqEvent.preventDefault();\n            }\n            break;\n\n          case UP:\n            if ((options.swipeUp && auto) || (!auto && options.allowPageScroll != VERTICAL)) {\n              jqEvent.preventDefault();\n            }\n            break;\n\n          case DOWN:\n            if ((options.swipeDown && auto) || (!auto && options.allowPageScroll != VERTICAL)) {\n              jqEvent.preventDefault();\n            }\n            break;\n\n          case NONE:\n\n            break;\n        }\n      }\n    }\n\n\n    // PINCHES\n    /**\n     * Returns true of the current pinch meets the thresholds\n     * @return Boolean\n     * @inner\n     */\n    function validatePinch() {\n      var hasCorrectFingerCount = validateFingers();\n      var hasEndPoint = validateEndPoint();\n      var hasCorrectDistance = validatePinchDistance();\n      return hasCorrectFingerCount && hasEndPoint && hasCorrectDistance;\n\n    }\n\n    /**\n     * Returns true if any Pinch events have been registered\n     * @return Boolean\n     * @inner\n     */\n    function hasPinches() {\n      //Enure we dont return 0 or null for false values\n      return !!(options.pinchStatus || options.pinchIn || options.pinchOut);\n    }\n\n    /**\n     * Returns true if we are detecting pinches, and have one\n     * @return Boolean\n     * @inner\n     */\n    function didPinch() {\n      //Enure we dont return 0 or null for false values\n      return !!(validatePinch() && hasPinches());\n    }\n\n\n\n\n    // SWIPES\n    /**\n     * Returns true if the current swipe meets the thresholds\n     * @return Boolean\n     * @inner\n     */\n    function validateSwipe() {\n      //Check validity of swipe\n      var hasValidTime = validateSwipeTime();\n      var hasValidDistance = validateSwipeDistance();\n      var hasCorrectFingerCount = validateFingers();\n      var hasEndPoint = validateEndPoint();\n      var didCancel = didSwipeBackToCancel();\n\n      // if the user swiped more than the minimum length, perform the appropriate action\n      // hasValidDistance is null when no distance is set\n      var valid = !didCancel && hasEndPoint && hasCorrectFingerCount && hasValidDistance && hasValidTime;\n\n      return valid;\n    }\n\n    /**\n     * Returns true if any Swipe events have been registered\n     * @return Boolean\n     * @inner\n     */\n    function hasSwipes() {\n      //Enure we dont return 0 or null for false values\n      return !!(options.swipe || options.swipeStatus || options.swipeLeft || options.swipeRight || options.swipeUp || options.swipeDown);\n    }\n\n\n    /**\n     * Returns true if we are detecting swipes and have one\n     * @return Boolean\n     * @inner\n     */\n    function didSwipe() {\n      //Enure we dont return 0 or null for false values\n      return !!(validateSwipe() && hasSwipes());\n    }\n\n    /**\n     * Returns true if we have matched the number of fingers we are looking for\n     * @return Boolean\n     * @inner\n     */\n    function validateFingers() {\n      //The number of fingers we want were matched, or on desktop we ignore\n      return ((fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !SUPPORTS_TOUCH);\n    }\n\n    /**\n     * Returns true if we have an end point for the swipe\n     * @return Boolean\n     * @inner\n     */\n    function validateEndPoint() {\n      //We have an end value for the finger\n      return fingerData[0].end.x !== 0;\n    }\n\n    // TAP / CLICK\n    /**\n     * Returns true if a click / tap events have been registered\n     * @return Boolean\n     * @inner\n     */\n    function hasTap() {\n      //Enure we dont return 0 or null for false values\n      return !!(options.tap);\n    }\n\n    /**\n     * Returns true if a double tap events have been registered\n     * @return Boolean\n     * @inner\n     */\n    function hasDoubleTap() {\n      //Enure we dont return 0 or null for false values\n      return !!(options.doubleTap);\n    }\n\n    /**\n     * Returns true if any long tap events have been registered\n     * @return Boolean\n     * @inner\n     */\n    function hasLongTap() {\n      //Enure we dont return 0 or null for false values\n      return !!(options.longTap);\n    }\n\n    /**\n     * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past.\n     * @return Boolean\n     * @inner\n     */\n    function validateDoubleTap() {\n      if (doubleTapStartTime == null) {\n        return false;\n      }\n      var now = getTimeStamp();\n      return (hasDoubleTap() && ((now - doubleTapStartTime) <= options.doubleTapThreshold));\n    }\n\n    /**\n     * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past.\n     * @return Boolean\n     * @inner\n     */\n    function inDoubleTap() {\n      return validateDoubleTap();\n    }\n\n\n    /**\n     * Returns true if we have a valid tap\n     * @return Boolean\n     * @inner\n     */\n    function validateTap() {\n      return ((fingerCount === 1 || !SUPPORTS_TOUCH) && (isNaN(distance) || distance < options.threshold));\n    }\n\n    /**\n     * Returns true if we have a valid long tap\n     * @return Boolean\n     * @inner\n     */\n    function validateLongTap() {\n      //slight threshold on moving finger\n      return ((duration > options.longTapThreshold) && (distance < DOUBLE_TAP_THRESHOLD));\n    }\n\n    /**\n     * Returns true if we are detecting taps and have one\n     * @return Boolean\n     * @inner\n     */\n    function didTap() {\n      //Enure we dont return 0 or null for false values\n      return !!(validateTap() && hasTap());\n    }\n\n\n    /**\n     * Returns true if we are detecting double taps and have one\n     * @return Boolean\n     * @inner\n     */\n    function didDoubleTap() {\n      //Enure we dont return 0 or null for false values\n      return !!(validateDoubleTap() && hasDoubleTap());\n    }\n\n    /**\n     * Returns true if we are detecting long taps and have one\n     * @return Boolean\n     * @inner\n     */\n    function didLongTap() {\n      //Enure we dont return 0 or null for false values\n      return !!(validateLongTap() && hasLongTap());\n    }\n\n\n\n\n    // MULTI FINGER TOUCH\n    /**\n     * Starts tracking the time between 2 finger releases, and keeps track of how many fingers we initially had up\n     * @inner\n     */\n    function startMultiFingerRelease(event) {\n      previousTouchEndTime = getTimeStamp();\n      fingerCountAtRelease = event.touches.length + 1;\n    }\n\n    /**\n     * Cancels the tracking of time between 2 finger releases, and resets counters\n     * @inner\n     */\n    function cancelMultiFingerRelease() {\n      previousTouchEndTime = 0;\n      fingerCountAtRelease = 0;\n    }\n\n    /**\n     * Checks if we are in the threshold between 2 fingers being released\n     * @return Boolean\n     * @inner\n     */\n    function inMultiFingerRelease() {\n\n      var withinThreshold = false;\n\n      if (previousTouchEndTime) {\n        var diff = getTimeStamp() - previousTouchEndTime\n        if (diff <= options.fingerReleaseThreshold) {\n          withinThreshold = true;\n        }\n      }\n\n      return withinThreshold;\n    }\n\n\n    /**\n     * gets a data flag to indicate that a touch is in progress\n     * @return Boolean\n     * @inner\n     */\n    function getTouchInProgress() {\n      //strict equality to ensure only true and false are returned\n      return !!($element.data(PLUGIN_NS + '_intouch') === true);\n    }\n\n    /**\n     * Sets a data flag to indicate that a touch is in progress\n     * @param {boolean} val The value to set the property to\n     * @inner\n     */\n    function setTouchInProgress(val) {\n\n      //If destroy is called in an event handler, we have no el, and we have already cleaned up, so return.\n      if(!$element) { return; }\n\n      //Add or remove event listeners depending on touch status\n      if (val === true) {\n        $element.on(MOVE_EV, touchMove);\n        $element.on(END_EV, touchEnd);\n\n        //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit\n        if (LEAVE_EV) {\n          $element.on(LEAVE_EV, touchLeave);\n        }\n      } else {\n\n        $element.off(MOVE_EV, touchMove, false);\n        $element.off(END_EV, touchEnd, false);\n\n        //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit\n        if (LEAVE_EV) {\n          $element.off(LEAVE_EV, touchLeave, false);\n        }\n      }\n\n\n      //strict equality to ensure only true and false can update the value\n      $element.data(PLUGIN_NS + '_intouch', val === true);\n    }\n\n\n    /**\n     * Creates the finger data for the touch/finger in the event object.\n     * @param {int} id The id to store the finger data under (usually the order the fingers were pressed)\n     * @param {object} evt The event object containing finger data\n     * @return finger data object\n     * @inner\n     */\n    function createFingerData(id, evt) {\n      var f = {\n        start: {\n          x: 0,\n          y: 0\n        },\n        last: {\n          x: 0,\n          y: 0\n        },\n        end: {\n          x: 0,\n          y: 0\n        }\n      };\n      f.start.x = f.last.x = f.end.x = evt.pageX || evt.clientX;\n      f.start.y = f.last.y = f.end.y = evt.pageY || evt.clientY;\n      fingerData[id] = f;\n      return f;\n    }\n\n    /**\n     * Updates the finger data for a particular event object\n     * @param {object} evt The event object containing the touch/finger data to upadte\n     * @return a finger data object.\n     * @inner\n     */\n    function updateFingerData(evt) {\n      var id = evt.identifier !== undefined ? evt.identifier : 0;\n      var f = getFingerData(id);\n\n      if (f === null) {\n        f = createFingerData(id, evt);\n      }\n\n      f.last.x = f.end.x;\n      f.last.y = f.end.y;\n\n      f.end.x = evt.pageX || evt.clientX;\n      f.end.y = evt.pageY || evt.clientY;\n\n      return f;\n    }\n\n    /**\n     * Returns a finger data object by its event ID.\n     * Each touch event has an identifier property, which is used\n     * to track repeat touches\n     * @param {int} id The unique id of the finger in the sequence of touch events.\n     * @return a finger data object.\n     * @inner\n     */\n    function getFingerData(id) {\n      return fingerData[id] || null;\n    }\n\n\n    /**\n     * Sets the maximum distance swiped in the given direction.\n     * If the new value is lower than the current value, the max value is not changed.\n     * @param {string}  direction The direction of the swipe\n     * @param {int}  distance The distance of the swipe\n     * @inner\n     */\n    function setMaxDistance(direction, distance) {\n      if(direction==NONE) return;\n      distance = Math.max(distance, getMaxDistance(direction));\n      maximumsMap[direction].distance = distance;\n    }\n\n    /**\n     * gets the maximum distance swiped in the given direction.\n     * @param {string}  direction The direction of the swipe\n     * @return int  The distance of the swipe\n     * @inner\n     */\n    function getMaxDistance(direction) {\n      if (maximumsMap[direction]) return maximumsMap[direction].distance;\n      return undefined;\n    }\n\n    /**\n     * Creats a map of directions to maximum swiped values.\n     * @return Object A dictionary of maximum values, indexed by direction.\n     * @inner\n     */\n    function createMaximumsData() {\n      var maxData = {};\n      maxData[LEFT] = createMaximumVO(LEFT);\n      maxData[RIGHT] = createMaximumVO(RIGHT);\n      maxData[UP] = createMaximumVO(UP);\n      maxData[DOWN] = createMaximumVO(DOWN);\n\n      return maxData;\n    }\n\n    /**\n     * Creates a map maximum swiped values for a given swipe direction\n     * @param {string} The direction that these values will be associated with\n     * @return Object Maximum values\n     * @inner\n     */\n    function createMaximumVO(dir) {\n      return {\n        direction: dir,\n        distance: 0\n      }\n    }\n\n\n    //\n    // MATHS / UTILS\n    //\n\n    /**\n     * Calculate the duration of the swipe\n     * @return int\n     * @inner\n     */\n    function calculateDuration() {\n      return endTime - startTime;\n    }\n\n    /**\n     * Calculate the distance between 2 touches (pinch)\n     * @param {point} startPoint A point object containing x and y co-ordinates\n     * @param {point} endPoint A point object containing x and y co-ordinates\n     * @return int;\n     * @inner\n     */\n    function calculateTouchesDistance(startPoint, endPoint) {\n      var diffX = Math.abs(startPoint.x - endPoint.x);\n      var diffY = Math.abs(startPoint.y - endPoint.y);\n\n      return Math.round(Math.sqrt(diffX * diffX + diffY * diffY));\n    }\n\n    /**\n     * Calculate the zoom factor between the start and end distances\n     * @param {int} startDistance Distance (between 2 fingers) the user started pinching at\n     * @param {int} endDistance Distance (between 2 fingers) the user ended pinching at\n     * @return float The zoom value from 0 to 1.\n     * @inner\n     */\n    function calculatePinchZoom(startDistance, endDistance) {\n      var percent = (endDistance / startDistance) * 1;\n      return percent.toFixed(2);\n    }\n\n\n    /**\n     * Returns the pinch direction, either IN or OUT for the given points\n     * @return string Either {@link $.fn.swipe.directions.IN} or {@link $.fn.swipe.directions.OUT}\n     * @see $.fn.swipe.directions\n     * @inner\n     */\n    function calculatePinchDirection() {\n      if (pinchZoom < 1) {\n        return OUT;\n      } else {\n        return IN;\n      }\n    }\n\n\n    /**\n     * Calculate the length / distance of the swipe\n     * @param {point} startPoint A point object containing x and y co-ordinates\n     * @param {point} endPoint A point object containing x and y co-ordinates\n     * @return int\n     * @inner\n     */\n    function calculateDistance(startPoint, endPoint) {\n      return Math.round(Math.sqrt(Math.pow(endPoint.x - startPoint.x, 2) + Math.pow(endPoint.y - startPoint.y, 2)));\n    }\n\n    /**\n     * Calculate the angle of the swipe\n     * @param {point} startPoint A point object containing x and y co-ordinates\n     * @param {point} endPoint A point object containing x and y co-ordinates\n     * @return int\n     * @inner\n     */\n    function calculateAngle(startPoint, endPoint) {\n      var x = startPoint.x - endPoint.x;\n      var y = endPoint.y - startPoint.y;\n      var r = Math.atan2(y, x); //radians\n      var angle = Math.round(r * 180 / Math.PI); //degrees\n\n      //ensure value is positive\n      if (angle < 0) {\n        angle = 360 - Math.abs(angle);\n      }\n\n      return angle;\n    }\n\n    /**\n     * Calculate the direction of the swipe\n     * This will also call calculateAngle to get the latest angle of swipe\n     * @param {point} startPoint A point object containing x and y co-ordinates\n     * @param {point} endPoint A point object containing x and y co-ordinates\n     * @return string Either {@link $.fn.swipe.directions.LEFT} / {@link $.fn.swipe.directions.RIGHT} / {@link $.fn.swipe.directions.DOWN} / {@link $.fn.swipe.directions.UP}\n     * @see $.fn.swipe.directions\n     * @inner\n     */\n    function calculateDirection(startPoint, endPoint) {\n\n      if( comparePoints(startPoint, endPoint) ) {\n        return NONE;\n      }\n\n      var angle = calculateAngle(startPoint, endPoint);\n\n      if ((angle <= 45) && (angle >= 0)) {\n        return LEFT;\n      } else if ((angle <= 360) && (angle >= 315)) {\n        return LEFT;\n      } else if ((angle >= 135) && (angle <= 225)) {\n        return RIGHT;\n      } else if ((angle > 45) && (angle < 135)) {\n        return DOWN;\n      } else {\n        return UP;\n      }\n    }\n\n\n    /**\n     * Returns a MS time stamp of the current time\n     * @return int\n     * @inner\n     */\n    function getTimeStamp() {\n      var now = new Date();\n      return now.getTime();\n    }\n\n\n\n    /**\n     * Returns a bounds object with left, right, top and bottom properties for the element specified.\n     * @param {DomNode} The DOM node to get the bounds for.\n     */\n    function getbounds(el) {\n      el = $(el);\n      var offset = el.offset();\n\n      var bounds = {\n        left: offset.left,\n        right: offset.left + el.outerWidth(),\n        top: offset.top,\n        bottom: offset.top + el.outerHeight()\n      }\n\n      return bounds;\n    }\n\n\n    /**\n     * Checks if the point object is in the bounds object.\n     * @param {object} point A point object.\n     * @param {int} point.x The x value of the point.\n     * @param {int} point.y The x value of the point.\n     * @param {object} bounds The bounds object to test\n     * @param {int} bounds.left The leftmost value\n     * @param {int} bounds.right The righttmost value\n     * @param {int} bounds.top The topmost value\n     * @param {int} bounds.bottom The bottommost value\n     */\n    function isInBounds(point, bounds) {\n      return (point.x > bounds.left && point.x < bounds.right && point.y > bounds.top && point.y < bounds.bottom);\n    };\n\n    /**\n     * Checks if the two points are equal\n     * @param {object} point A point object.\n     * @param {object} point B point object.\n     * @return true of the points match\n     */\n    function comparePoints(pointA, pointB) {\n      return (pointA.x == pointB.x && pointA.y == pointB.y);\n    }\n\n\n  }\n\n\n\n\n  /**\n   * A catch all handler that is triggered for all swipe directions.\n   * @name $.fn.swipe#swipe\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user swiped\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {object} fingerData The coordinates of fingers in event\n   * @param {string} currentDirection The current direction the user is swiping.\n   */\n\n\n\n\n  /**\n   * A handler that is triggered for \"left\" swipes.\n   * @name $.fn.swipe#swipeLeft\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user swiped\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {object} fingerData The coordinates of fingers in event\n   * @param {string} currentDirection The current direction the user is swiping.\n   */\n\n  /**\n   * A handler that is triggered for \"right\" swipes.\n   * @name $.fn.swipe#swipeRight\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user swiped\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {object} fingerData The coordinates of fingers in event\n   * @param {string} currentDirection The current direction the user is swiping.\n   */\n\n  /**\n   * A handler that is triggered for \"up\" swipes.\n   * @name $.fn.swipe#swipeUp\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user swiped\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {object} fingerData The coordinates of fingers in event\n   * @param {string} currentDirection The current direction the user is swiping.\n   */\n\n  /**\n   * A handler that is triggered for \"down\" swipes.\n   * @name $.fn.swipe#swipeDown\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user swiped\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {object} fingerData The coordinates of fingers in event\n   * @param {string} currentDirection The current direction the user is swiping.\n   */\n\n  /**\n   * A handler triggered for every phase of the swipe. This handler is constantly fired for the duration of the pinch.\n   * This is triggered regardless of swipe thresholds.\n   * @name $.fn.swipe#swipeStatus\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {string} phase The phase of the swipe event. See {@link $.fn.swipe.phases}\n   * @param {string} direction The direction the user swiped in. This is null if the user has yet to move. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user swiped. This is 0 if the user has yet to move.\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {object} fingerData The coordinates of fingers in event\n   * @param {string} currentDirection The current direction the user is swiping.\n   */\n\n  /**\n   * A handler triggered for pinch in events.\n   * @name $.fn.swipe#pinchIn\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user pinched\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {int} zoom The zoom/scale level the user pinched too, 0-1.\n   * @param {object} fingerData The coordinates of fingers in event\n   */\n\n  /**\n   * A handler triggered for pinch out events.\n   * @name $.fn.swipe#pinchOut\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user pinched\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {int} zoom The zoom/scale level the user pinched too, 0-1.\n   * @param {object} fingerData The coordinates of fingers in event\n   */\n\n  /**\n   * A handler triggered for all pinch events. This handler is constantly fired for the duration of the pinch. This is triggered regardless of thresholds.\n   * @name $.fn.swipe#pinchStatus\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}\n   * @param {int} distance The distance the user pinched\n   * @param {int} duration The duration of the swipe in milliseconds\n   * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\n   * @param {int} zoom The zoom/scale level the user pinched too, 0-1.\n   * @param {object} fingerData The coordinates of fingers in event\n   */\n\n  /**\n   * A click handler triggered when a user simply clicks, rather than swipes on an element.\n   * This is deprecated since version 1.6.2, any assignment to click will be assigned to the tap handler.\n   * You cannot use <code>on</code> to bind to this event as the default jQ <code>click</code> event will be triggered.\n   * Use the <code>tap</code> event instead.\n   * @name $.fn.swipe#click\n   * @event\n   * @deprecated since version 1.6.2, please use {@link $.fn.swipe#tap} instead\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {DomObject} target The element clicked on.\n   */\n\n  /**\n   * A click / tap handler triggered when a user simply clicks or taps, rather than swipes on an element.\n   * @name $.fn.swipe#tap\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {DomObject} target The element clicked on.\n   */\n\n  /**\n   * A double tap handler triggered when a user double clicks or taps on an element.\n   * You can set the time delay for a double tap with the {@link $.fn.swipe.defaults#doubleTapThreshold} property.\n   * Note: If you set both <code>doubleTap</code> and <code>tap</code> handlers, the <code>tap</code> event will be delayed by the <code>doubleTapThreshold</code>\n   * as the script needs to check if its a double tap.\n   * @name $.fn.swipe#doubleTap\n   * @see  $.fn.swipe.defaults#doubleTapThreshold\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {DomObject} target The element clicked on.\n   */\n\n  /**\n   * A long tap handler triggered once a tap has been release if the tap was longer than the longTapThreshold.\n   * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property.\n   * @name $.fn.swipe#longTap\n   * @see  $.fn.swipe.defaults#longTapThreshold\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {DomObject} target The element clicked on.\n   */\n\n  /**\n   * A hold tap handler triggered as soon as the longTapThreshold is reached\n   * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property.\n   * @name $.fn.swipe#hold\n   * @see  $.fn.swipe.defaults#longTapThreshold\n   * @event\n   * @default null\n   * @param {EventObject} event The original event object\n   * @param {DomObject} target The element clicked on.\n   */\n\n}));\n","/*! loglevel - v1.8.0 - https://github.com/pimterry/loglevel - (c) 2021 Tim Perry - licensed MIT */\n!function(a,b){\"use strict\";\"function\"==typeof define&&define.amd?define(b):\"object\"==typeof module&&module.exports?module.exports=b():a.log=b()}(this,function(){\"use strict\";function a(a,b){var c=a[b];if(\"function\"==typeof c.bind)return c.bind(a);try{return Function.prototype.bind.call(c,a)}catch(b){return function(){return Function.prototype.apply.apply(c,[a,arguments])}}}function b(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function c(c){return\"debug\"===c&&(c=\"log\"),typeof console!==i&&(\"trace\"===c&&j?b:void 0!==console[c]?a(console,c):void 0!==console.log?a(console,\"log\"):h)}function d(a,b){for(var c=0;c<k.length;c++){var d=k[c];this[d]=c<a?h:this.methodFactory(d,a,b)}this.log=this.debug}function e(a,b,c){return function(){typeof console!==i&&(d.call(this,b,c),this[a].apply(this,arguments))}}function f(a,b,d){return c(a)||e.apply(this,arguments)}function g(a,b,c){function e(a){var b=(k[a]||\"silent\").toUpperCase();if(typeof window!==i&&m){try{return void(window.localStorage[m]=b)}catch(a){}try{window.document.cookie=encodeURIComponent(m)+\"=\"+b+\";\"}catch(a){}}}function g(){var a;if(typeof window!==i&&m){try{a=window.localStorage[m]}catch(a){}if(typeof a===i)try{var b=window.document.cookie,c=b.indexOf(encodeURIComponent(m)+\"=\");-1!==c&&(a=/^([^;]+)/.exec(b.slice(c))[1])}catch(a){}return void 0===l.levels[a]&&(a=void 0),a}}function h(){if(typeof window!==i&&m){try{return void window.localStorage.removeItem(m)}catch(a){}try{window.document.cookie=encodeURIComponent(m)+\"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\"}catch(a){}}}var j,l=this;b=null==b?\"WARN\":b;var m=\"loglevel\";\"string\"==typeof a?m+=\":\"+a:\"symbol\"==typeof a&&(m=void 0),l.name=a,l.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},l.methodFactory=c||f,l.getLevel=function(){return j},l.setLevel=function(b,c){if(\"string\"==typeof b&&void 0!==l.levels[b.toUpperCase()]&&(b=l.levels[b.toUpperCase()]),!(\"number\"==typeof b&&b>=0&&b<=l.levels.SILENT))throw\"log.setLevel() called with invalid level: \"+b;if(j=b,!1!==c&&e(b),d.call(l,b,a),typeof console===i&&b<l.levels.SILENT)return\"No console available for logging\"},l.setDefaultLevel=function(a){b=a,g()||l.setLevel(a,!1)},l.resetLevel=function(){l.setLevel(b,!1),h()},l.enableAll=function(a){l.setLevel(l.levels.TRACE,a)},l.disableAll=function(a){l.setLevel(l.levels.SILENT,a)};var n=g();null==n&&(n=b),l.setLevel(n,!1)}var h=function(){},i=\"undefined\",j=typeof window!==i&&typeof window.navigator!==i&&/Trident\\/|MSIE /.test(window.navigator.userAgent),k=[\"trace\",\"debug\",\"info\",\"warn\",\"error\"],l=new g,m={};l.getLogger=function(a){if(\"symbol\"!=typeof a&&\"string\"!=typeof a||\"\"===a)throw new TypeError(\"You must supply a name when creating a logger.\");var b=m[a];return b||(b=m[a]=new g(a,l.getLevel(),l.methodFactory)),b};var n=typeof window!==i?window.log:void 0;return l.noConflict=function(){return typeof window!==i&&window.log===l&&(window.log=n),l},l.getLoggers=function(){return m},l.default=l,l});","/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox's early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener(\"resize\", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement(\"source\");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === \"PICTURE\") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += \",100vw\";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll(\"picture > img, img[srcset][sizes]\");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia(\"(orientation: landscape)\");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || \"\")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"DOMContentLoaded\", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n *  License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t\"use strict\";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( \"picture\" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( \"img\" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: \"\"\n\t};\n\tvar srcAttr = \"data-pfsrc\";\n\tvar srcsetAttr = srcAttr + \"set\";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = \"currentSrc\";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = \"position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)\";\n\tvar fsCss = \"font-size:100%!important;\";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t\"in\": 96\n\t};\n\tvar anchor = document.createElement( \"a\" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-\"g\" Regexes\n\n\t// (Don't use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t    regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t    regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t    regexTrailingCommas = /[,]+$/,\n\t    regexNonNegativeInteger = /^\\d+$/,\n\n\t    // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t    // Must include at least one digit.\n\t    // According to spec tests any decimal point must be followed by a digit.\n\t    // No leading plus sign is allowed.)\n\t    // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t    regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( \"on\" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === \"\\u0020\" || // space\n\t\t        c === \"\\u0009\" || // horizontal tab\n\t\t        c === \"\\u000A\" || // new line\n\t\t        c === \"\\u000C\" || // form feed\n\t\t        c === \"\\u000D\");  // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn \"return \" + replace((css || \"\").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, \"&&\",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, \"||\",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, \"e.$1>=\",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, \"e.$1<=\",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, \"($1)\",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, \"($1 * e.$2)\",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, \"\"\n\t\t\t) + \";\";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function(\"e\", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === 'h' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || \"100vw\" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === \"IMG\" ) {\n\t\t\t\toptions.elements =  [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements =  null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = \"src\";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ \"image/jpeg\" ] = true;\n\ttypes[ \"image/gif\" ] = true;\n\ttypes[ \"image/png\" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr's lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn \"pending\";\n\t}\n\n\t// test svg support\n\ttypes[ \"image/svg+xml\" ] = document.implementation.hasFeature( \"http://www.w3.org/TR/SVG11/feature#Image\", \"1.1\" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join(\"-\");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === \"saveData\" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== \"pending\" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don't use qsa here, because IE8 sometimes doesn't like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( \"source\" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( \"srcset\" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( \"media\" ),\n\t\t\t\t\ttype: source.getAttribute( \"type\" ),\n\t\t\t\t\tsizes: source.getAttribute( \"sizes\" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell |  MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what \"set\" argument is here. Maybe choose a more\n\t// descriptive & more searchable name.  Since passing the \"set\" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t    match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t    url,\n\t\t    descriptors,\n\t\t    currentDescriptor,\n\t\t    state,\n\t\t    c,\n\n\t\t    // 2. Let position be a pointer into input, initially pointing at the start\n\t\t    //    of the string.\n\t\t    pos = 0,\n\n\t\t    // 3. Let candidates be an initially empty source set.\n\t\t    candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it's only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t    w, d, h, i,\n\t\t\t    candidate = {},\n\t\t\t    desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t//  Do the following depending on the value of state.\n\t\t\t\t//  For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t//  that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t  // Space character\n\t\t\t\t  // If current descriptor is not empty, append current descriptor to\n\t\t\t\t  // descriptors and let current descriptor be the empty string.\n\t\t\t\t  // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t//    characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t//    were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t//    and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t//         more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell |  MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value <img sizes=\"here\">\n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * <source-size-list> = <source-size># [ , <source-size-value> ]? | <source-size-value>\n\t * <source-size> = <media-condition> <source-size-value>\n\t * <source-size-value> = <length>\n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. \"(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw\"\n\t * or \"(min-width: 30em), calc(30vw - 15px)\" or just \"30vw\"\n\t *\n\t * Returns the first valid <css-length> with a media condition that evaluates to true,\n\t * or \"100vw\" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for <number> type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t//  (Toy CSS parser. The goals here are:\n\t\t//  1) expansive test coverage without the weight of a full CSS parser.\n\t\t//  2) Avoiding regex wherever convenient.\n\t\t//  Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t//  Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = \"\";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === \"\") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === \"*\") && (str[pos + 1] === \"/\")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = \" \";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === \"(\") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === \")\") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === \",\") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === \"/\") && (str.charAt(pos + 1) === \"*\") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// \"-0 is equivalent to 0 and is not a negative number.\" which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === \"0\") || (s === \"-0\") || (s === \"+0\")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element's\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive <whitespace-token>s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won't push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// <source-size-value>, let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive <whitespace-token>s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// <media-condition>. If it does not parse correctly, or it does parse\n\t\t\t// correctly but the <media-condition> evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(\" \");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn \"100vw\";\n\t}\n\n\t// namespace\n\tpf.ns = (\"pf\" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = \"srcset\" in image;\n\tpf.supSizes = \"sizes\" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = \"data:,a\";\n\t\t\timage2.src = \"data:,a\";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement(\"img\"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does't expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = \"data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==\";\n\t\t\tvar width1 = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n\t\t\tvar img = document.createElement(\"img\");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute(\"sizes\", \"9px\");\n\n\t\t\timg.srcset = width1 + \" 1w,\" + width2 + \" 9w\";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = \"picture>img,img[srcset]\";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR  || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types =  types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( \"querySelector\" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( \"(min-width: 0.1em)\" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || \"\" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( \"div\" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t//                           or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. \"images/pic-medium.png 1x, images/pic-medium-2x.png 2x\" or\n\t *     \"images/pic-medium.png 400w, images/pic-medium-2x.png 800w\" or\n\t *     \"images/pic-small.png\"\n\t * Get an array of image candidates in the form of\n\t *      {url: \"/foo/bar.png\", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn't downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is \"best\", \"better\" or \"okay\",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let's improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don't want to take too much different code paths\n\t\tif ( bestCandidate.set.type === \"image/svg+xml\" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + \"px\";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === \"pending\" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === \"PICTURE\";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, \"src\" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, \"srcset\" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, \"sizes\" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || \"\");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += \", \" + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = \"\";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) ||  element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute(\"src\");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that's awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || \"\";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === \"loading\" ? 200 :  999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, \"resize\", debounce(onResize, 99 ) );\n\t\t\ton( document, \"readystatechange\", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === \"function\") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD support\n\t\tdefine( \"picturefill\", function() { return picturefill; } );\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ \"image/webp\" ] = detectTypeSupport(\"image/webp\", \"data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==\" );\n\t}\n\n} )( window, document );\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(factory());\n}(this, (function () { 'use strict';\n\n/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n  var constructor = this.constructor;\n  return this.then(\n    function(value) {\n      // @ts-ignore\n      return constructor.resolve(callback()).then(function() {\n        return value;\n      });\n    },\n    function(reason) {\n      // @ts-ignore\n      return constructor.resolve(callback()).then(function() {\n        // @ts-ignore\n        return constructor.reject(reason);\n      });\n    }\n  );\n}\n\nfunction allSettled(arr) {\n  var P = this;\n  return new P(function(resolve, reject) {\n    if (!(arr && typeof arr.length !== 'undefined')) {\n      return reject(\n        new TypeError(\n          typeof arr +\n            ' ' +\n            arr +\n            ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n        )\n      );\n    }\n    var args = Array.prototype.slice.call(arr);\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n\n    function res(i, val) {\n      if (val && (typeof val === 'object' || typeof val === 'function')) {\n        var then = val.then;\n        if (typeof then === 'function') {\n          then.call(\n            val,\n            function(val) {\n              res(i, val);\n            },\n            function(e) {\n              args[i] = { status: 'rejected', reason: e };\n              if (--remaining === 0) {\n                resolve(args);\n              }\n            }\n          );\n          return;\n        }\n      }\n      args[i] = { status: 'fulfilled', value: val };\n      if (--remaining === 0) {\n        resolve(args);\n      }\n    }\n\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n}\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n  return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n  return function() {\n    fn.apply(thisArg, arguments);\n  };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n  if (!(this instanceof Promise))\n    throw new TypeError('Promises must be constructed via new');\n  if (typeof fn !== 'function') throw new TypeError('not a function');\n  /** @type {!number} */\n  this._state = 0;\n  /** @type {!boolean} */\n  this._handled = false;\n  /** @type {Promise|undefined} */\n  this._value = undefined;\n  /** @type {!Array<!Function>} */\n  this._deferreds = [];\n\n  doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n  while (self._state === 3) {\n    self = self._value;\n  }\n  if (self._state === 0) {\n    self._deferreds.push(deferred);\n    return;\n  }\n  self._handled = true;\n  Promise._immediateFn(function() {\n    var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n    if (cb === null) {\n      (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n      return;\n    }\n    var ret;\n    try {\n      ret = cb(self._value);\n    } catch (e) {\n      reject(deferred.promise, e);\n      return;\n    }\n    resolve(deferred.promise, ret);\n  });\n}\n\nfunction resolve(self, newValue) {\n  try {\n    // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n    if (newValue === self)\n      throw new TypeError('A promise cannot be resolved with itself.');\n    if (\n      newValue &&\n      (typeof newValue === 'object' || typeof newValue === 'function')\n    ) {\n      var then = newValue.then;\n      if (newValue instanceof Promise) {\n        self._state = 3;\n        self._value = newValue;\n        finale(self);\n        return;\n      } else if (typeof then === 'function') {\n        doResolve(bind(then, newValue), self);\n        return;\n      }\n    }\n    self._state = 1;\n    self._value = newValue;\n    finale(self);\n  } catch (e) {\n    reject(self, e);\n  }\n}\n\nfunction reject(self, newValue) {\n  self._state = 2;\n  self._value = newValue;\n  finale(self);\n}\n\nfunction finale(self) {\n  if (self._state === 2 && self._deferreds.length === 0) {\n    Promise._immediateFn(function() {\n      if (!self._handled) {\n        Promise._unhandledRejectionFn(self._value);\n      }\n    });\n  }\n\n  for (var i = 0, len = self._deferreds.length; i < len; i++) {\n    handle(self, self._deferreds[i]);\n  }\n  self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n  this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n  this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n  var done = false;\n  try {\n    fn(\n      function(value) {\n        if (done) return;\n        done = true;\n        resolve(self, value);\n      },\n      function(reason) {\n        if (done) return;\n        done = true;\n        reject(self, reason);\n      }\n    );\n  } catch (ex) {\n    if (done) return;\n    done = true;\n    reject(self, ex);\n  }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n  return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n  // @ts-ignore\n  var prom = new this.constructor(noop);\n\n  handle(this, new Handler(onFulfilled, onRejected, prom));\n  return prom;\n};\n\nPromise.prototype['finally'] = finallyConstructor;\n\nPromise.all = function(arr) {\n  return new Promise(function(resolve, reject) {\n    if (!isArray(arr)) {\n      return reject(new TypeError('Promise.all accepts an array'));\n    }\n\n    var args = Array.prototype.slice.call(arr);\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n\n    function res(i, val) {\n      try {\n        if (val && (typeof val === 'object' || typeof val === 'function')) {\n          var then = val.then;\n          if (typeof then === 'function') {\n            then.call(\n              val,\n              function(val) {\n                res(i, val);\n              },\n              reject\n            );\n            return;\n          }\n        }\n        args[i] = val;\n        if (--remaining === 0) {\n          resolve(args);\n        }\n      } catch (ex) {\n        reject(ex);\n      }\n    }\n\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n};\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n  if (value && typeof value === 'object' && value.constructor === Promise) {\n    return value;\n  }\n\n  return new Promise(function(resolve) {\n    resolve(value);\n  });\n};\n\nPromise.reject = function(value) {\n  return new Promise(function(resolve, reject) {\n    reject(value);\n  });\n};\n\nPromise.race = function(arr) {\n  return new Promise(function(resolve, reject) {\n    if (!isArray(arr)) {\n      return reject(new TypeError('Promise.race accepts an array'));\n    }\n\n    for (var i = 0, len = arr.length; i < len; i++) {\n      Promise.resolve(arr[i]).then(resolve, reject);\n    }\n  });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n  // @ts-ignore\n  (typeof setImmediate === 'function' &&\n    function(fn) {\n      // @ts-ignore\n      setImmediate(fn);\n    }) ||\n  function(fn) {\n    setTimeoutFunc(fn, 0);\n  };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n  if (typeof console !== 'undefined' && console) {\n    console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n  }\n};\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n  // the only reliable means to get the global object is\n  // `Function('return this')()`\n  // However, this causes CSP violations in Chrome apps.\n  if (typeof self !== 'undefined') {\n    return self;\n  }\n  if (typeof window !== 'undefined') {\n    return window;\n  }\n  if (typeof global !== 'undefined') {\n    return global;\n  }\n  throw new Error('unable to locate global object');\n})();\n\n// Expose the polyfill if Promise is undefined or set to a\n// non-function value. The latter can be due to a named HTMLElement\n// being exposed by browsers for legacy reasons.\n// https://github.com/taylorhakes/promise-polyfill/issues/114\nif (typeof globalNS['Promise'] !== 'function') {\n  globalNS['Promise'] = Promise;\n} else {\n  if (!globalNS.Promise.prototype['finally']) {\n    globalNS.Promise.prototype['finally'] = finallyConstructor;\n  } \n  if (!globalNS.Promise.allSettled) {\n    globalNS.Promise.allSettled = allSettled;\n  }\n}\n\n})));\n","/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Append an array of jQuery nodes to a given element.\n  Utils.appendMany = function ($element, $nodes) {\n    // jQuery 1.7.x does not support $.fn.append() with an array\n    // Fall back to a jQuery object collection using $.fn.add()\n    if ($.fn.jquery.substr(0, 3) === '1.7') {\n      var $jqNodes = $();\n\n      $.map($nodes, function (node) {\n        $jqNodes = $jqNodes.add(node);\n      });\n\n      $nodes = $jqNodes;\n    }\n\n    $element.append($nodes);\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id.\n    // If an id already exists, it simply returns it.\n\n    var select2Id = element.getAttribute('data-select2-id');\n    if (select2Id == null) {\n      // If element has id, use it.\n      if (element.id) {\n        select2Id = element.id;\n        element.setAttribute('data-select2-id', select2Id);\n      } else {\n        element.setAttribute('data-select2-id', ++id);\n        select2Id = id.toString();\n      }\n    }\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option[aria-selected]');\n\n    var $selected = $options.filter('[aria-selected=true]');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = $.map(selected, function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option[aria-selected]');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && $.inArray(id, selectedIds) > -1)) {\n          $option.attr('aria-selected', 'true');\n        } else {\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.className = 'select2-results__option';\n\n    var attrs = {\n      'role': 'option',\n      'aria-selected': 'false'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      delete attrs['aria-selected'];\n      attrs['aria-disabled'] = 'true';\n    }\n\n    if (data.id == null) {\n      delete attrs['aria-selected'];\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n      delete attrs['aria-selected'];\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      var $label = $(label);\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.attr('aria-selected') == 'true') {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element.addClass('select2-results__option--highlighted');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.attr('aria-selected') === 'true') {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('[aria-selected]');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\n          '&times;' +\n        '</span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      $selection.append(formatted);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    Utils.appendMany($rendered, $selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n  '../utils'\n], function (Utils) {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder.addClass('select2-selection__placeholder')\n                .removeClass('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<span class=\"select2-selection__clear\" title=\"' + removeAll() +'\">' +\n        '&times;' +\n      '</span>'\n    );\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.find('.select2-selection__rendered').prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<li class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</li>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$searchContainer\n          .prev('.select2-selection__choice');\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__rendered')\n                   .append(this.$searchContainer);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '';\n\n    if (this.$search.attr('placeholder') !== '') {\n      width = this.$selection.find('.select2-selection__rendered').width();\n    } else {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if ($.inArray(name, relayEvents) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if ($.inArray(name, preventableEvents) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var data = [];\n    var self = this;\n\n    this.$element.find(':selected').each(function () {\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      data.push(option);\n    });\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if ($(data.element).is('option')) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if ($.inArray(id, val) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if ($(data.element).is('option')) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && $.inArray(id, val) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      var $option = $(this);\n\n      if (!$option.is('option') && !$option.is('optgroup')) {\n        return;\n      }\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    Utils.appendMany(this.$element, $options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var $option = $(option);\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $option;\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    if ($option.is('option')) {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if ($option.is('optgroup')) {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if ($.inArray(item.id, existingIds) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        Utils.appendMany($option, $children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !$.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if ($.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    var term = $.trim(params.term);\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if ($.inArray(termChar, separators) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer.removeClass('select2-search--hide');\n        } else {\n          self.$searchContainer.addClass('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown.removeClass('select2');\n    $dropdown.addClass('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown\n        .removeClass('select2-dropdown--below select2-dropdown--above')\n        .addClass('select2-dropdown--' + newDirection);\n      this.$container\n        .removeClass('select2-container--below select2-container--above')\n        .addClass('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n  'require',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n\n  './i18n/en'\n], function ($, require,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n\n      if (options.query != null) {\n        var Query = require(options.amdBase + 'compat/query');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Query\n        );\n      }\n\n      if (options.initSelection != null) {\n        var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          InitSelection\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (\n        options.dropdownCssClass != null ||\n        options.dropdownCss != null ||\n        options.adaptDropdownCssClass != null\n      ) {\n        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (\n        options.containerCssClass != null ||\n        options.containerCss != null ||\n        options.adaptContainerCssClass != null\n      ) {\n        var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          ContainerCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if ($.trim(params.term) === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdBase: './',\n      amdLanguageBase: './i18n/',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!$.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'require',\n  'jquery',\n  './defaults',\n  './utils'\n], function (require, $, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n\n    if ($element && $element.is('input')) {\n      var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n      this.options.dataAdapter = Utils.Decorate(\n        this.options.dataAdapter,\n        InputCompat\n      );\n    }\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if ($.inArray(key, excludedData) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element.addClass('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    if (this.$element[0].attachEvent) {\n      this.$element[0].attachEvent('onpropertychange', this._syncA);\n    }\n\n    var observer = window.MutationObserver ||\n      window.WebKitMutationObserver ||\n      window.MozMutationObserver\n    ;\n\n    if (observer != null) {\n      this._observer = new observer(function (mutations) {\n        self._syncA();\n        self._syncS(null, mutations);\n      });\n      this._observer.observe(this.$element[0], {\n        attributes: true,\n        childList: true,\n        subtree: false\n      });\n    } else if (this.$element[0].addEventListener) {\n      this.$element[0].addEventListener(\n        'DOMAttrModified',\n        self._syncA,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeInserted',\n        self._syncS,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeRemoved',\n        self._syncS,\n        false\n      );\n    }\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if ($.inArray(name, nonRelayEvents) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container.addClass('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container.removeClass('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container.removeClass('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container.addClass('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container.removeClass('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (evt, mutations) {\n    var changed = false;\n    var self = this;\n\n    // Ignore any mutation events raised for elements that aren't options or\n    // optgroups. This handles the case when the select element is destroyed\n    if (\n      evt && evt.target && (\n        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n      )\n    ) {\n      return;\n    }\n\n    if (!mutations) {\n      // If mutation events aren't supported, then we can only assume that the\n      // change affected the selections\n      changed = true;\n    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          changed = true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      changed = true;\n    } else if ($.isArray(mutations)) {\n      $.each(mutations, function(evt, mutation) {\n        if (self._isChangeMutation(evt, mutation)) {\n          // We've found a change mutation.\n          // Let's escape from the loop and continue\n          changed = true;\n          return false;\n        }\n      });\n    }\n    return changed;\n  };\n\n  Select2.prototype._syncSubtree = function (evt, mutations) {\n    var changed = this._isChangeMutation(evt, mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container.hasClass('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container.hasClass('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container.addClass('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if ($.isArray(newVal)) {\n      newVal = $.map(newVal, function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    if (this.$element[0].detachEvent) {\n      this.$element[0].detachEvent('onpropertychange', this._syncA);\n    }\n\n    if (this._observer != null) {\n      this._observer.disconnect();\n      this._observer = null;\n    } else if (this.$element[0].removeEventListener) {\n      this.$element[0]\n        .removeEventListener('DOMAttrModified', this._syncA, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeInserted', this._syncS, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeRemoved', this._syncS, false);\n    }\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element.removeClass('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('select2/compat/utils',[\n  'jquery'\n], function ($) {\n  function syncCssClasses ($dest, $src, adapter) {\n    var classes, replacements = [], adapted;\n\n    classes = $.trim($dest.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Save all Select2 classes\n        if (this.indexOf('select2-') === 0) {\n          replacements.push(this);\n        }\n      });\n    }\n\n    classes = $.trim($src.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Only adapt non-Select2 classes\n        if (this.indexOf('select2-') !== 0) {\n          adapted = adapter(this);\n\n          if (adapted != null) {\n            replacements.push(adapted);\n          }\n        }\n      });\n    }\n\n    $dest.attr('class', replacements.join(' '));\n  }\n\n  return {\n    syncCssClasses: syncCssClasses\n  };\n});\n\nS2.define('select2/compat/containerCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _containerAdapter (clazz) {\n    return null;\n  }\n\n  function ContainerCSS () { }\n\n  ContainerCSS.prototype.render = function (decorated) {\n    var $container = decorated.call(this);\n\n    var containerCssClass = this.options.get('containerCssClass') || '';\n\n    if ($.isFunction(containerCssClass)) {\n      containerCssClass = containerCssClass(this.$element);\n    }\n\n    var containerCssAdapter = this.options.get('adaptContainerCssClass');\n    containerCssAdapter = containerCssAdapter || _containerAdapter;\n\n    if (containerCssClass.indexOf(':all:') !== -1) {\n      containerCssClass = containerCssClass.replace(':all:', '');\n\n      var _cssAdapter = containerCssAdapter;\n\n      containerCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var containerCss = this.options.get('containerCss') || {};\n\n    if ($.isFunction(containerCss)) {\n      containerCss = containerCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\n\n    $container.css(containerCss);\n    $container.addClass(containerCssClass);\n\n    return $container;\n  };\n\n  return ContainerCSS;\n});\n\nS2.define('select2/compat/dropdownCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _dropdownAdapter (clazz) {\n    return null;\n  }\n\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if ($.isFunction(dropdownCssClass)) {\n      dropdownCssClass = dropdownCssClass(this.$element);\n    }\n\n    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\n    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      var _cssAdapter = dropdownCssAdapter;\n\n      dropdownCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var dropdownCss = this.options.get('dropdownCss') || {};\n\n    if ($.isFunction(dropdownCss)) {\n      dropdownCss = dropdownCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\n\n    $dropdown.css(dropdownCss);\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/compat/initSelection',[\n  'jquery'\n], function ($) {\n  function InitSelection (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `initSelection` option has been deprecated in favor' +\n        ' of a custom data adapter that overrides the `current` method. ' +\n        'This method is now called multiple times instead of a single ' +\n        'time when the instance is initialized. Support will be removed ' +\n        'for the `initSelection` option in future versions of Select2'\n      );\n    }\n\n    this.initSelection = options.get('initSelection');\n    this._isInitialized = false;\n\n    decorated.call(this, $element, options);\n  }\n\n  InitSelection.prototype.current = function (decorated, callback) {\n    var self = this;\n\n    if (this._isInitialized) {\n      decorated.call(this, callback);\n\n      return;\n    }\n\n    this.initSelection.call(null, this.$element, function (data) {\n      self._isInitialized = true;\n\n      if (!$.isArray(data)) {\n        data = [data];\n      }\n\n      callback(data);\n    });\n  };\n\n  return InitSelection;\n});\n\nS2.define('select2/compat/inputData',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function InputData (decorated, $element, options) {\n    this._currentData = [];\n    this._valueSeparator = options.get('valueSeparator') || ',';\n\n    if ($element.prop('type') === 'hidden') {\n      if (options.get('debug') && console && console.warn) {\n        console.warn(\n          'Select2: Using a hidden input with Select2 is no longer ' +\n          'supported and may stop working in the future. It is recommended ' +\n          'to use a `<select>` element instead.'\n        );\n      }\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  InputData.prototype.current = function (_, callback) {\n    function getSelected (data, selectedIds) {\n      var selected = [];\n\n      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {\n        data.selected = true;\n        selected.push(data);\n      } else {\n        data.selected = false;\n      }\n\n      if (data.children) {\n        selected.push.apply(selected, getSelected(data.children, selectedIds));\n      }\n\n      return selected;\n    }\n\n    var selected = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      selected.push.apply(\n        selected,\n        getSelected(\n          data,\n          this.$element.val().split(\n            this._valueSeparator\n          )\n        )\n      );\n    }\n\n    callback(selected);\n  };\n\n  InputData.prototype.select = function (_, data) {\n    if (!this.options.get('multiple')) {\n      this.current(function (allData) {\n        $.map(allData, function (data) {\n          data.selected = false;\n        });\n      });\n\n      this.$element.val(data.id);\n      this.$element.trigger('input').trigger('change');\n    } else {\n      var value = this.$element.val();\n      value += this._valueSeparator + data.id;\n\n      this.$element.val(value);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  InputData.prototype.unselect = function (_, data) {\n    var self = this;\n\n    data.selected = false;\n\n    this.current(function (allData) {\n      var values = [];\n\n      for (var d = 0; d < allData.length; d++) {\n        var item = allData[d];\n\n        if (data.id == item.id) {\n          continue;\n        }\n\n        values.push(item.id);\n      }\n\n      self.$element.val(values.join(self._valueSeparator));\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  InputData.prototype.query = function (_, params, callback) {\n    var results = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      var matches = this.matches(params, data);\n\n      if (matches !== null) {\n        results.push(matches);\n      }\n    }\n\n    callback({\n      results: results\n    });\n  };\n\n  InputData.prototype.addOptions = function (_, $options) {\n    var options = $.map($options, function ($option) {\n      return Utils.GetData($option[0], 'data');\n    });\n\n    this._currentData.push.apply(this._currentData, options);\n  };\n\n  return InputData;\n});\n\nS2.define('select2/compat/matcher',[\n  'jquery'\n], function ($) {\n  function oldMatcher (matcher) {\n    function wrappedMatcher (params, data) {\n      var match = $.extend(true, {}, data);\n\n      if (params.term == null || $.trim(params.term) === '') {\n        return match;\n      }\n\n      if (data.children) {\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          // Check if the child object matches\n          // The old matcher returned a boolean true or false\n          var doesMatch = matcher(params.term, child.text, child);\n\n          // If the child didn't match, pop it off\n          if (!doesMatch) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        if (match.children.length > 0) {\n          return match;\n        }\n      }\n\n      if (matcher(params.term, data.text, data)) {\n        return match;\n      }\n\n      return null;\n    }\n\n    return wrappedMatcher;\n  }\n\n  return oldMatcher;\n});\n\nS2.define('select2/compat/query',[\n\n], function () {\n  function Query (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `query` option has been deprecated in favor of a ' +\n        'custom data adapter that overrides the `query` method. Support ' +\n        'will be removed for the `query` option in future versions of ' +\n        'Select2.'\n      );\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Query.prototype.query = function (_, params, callback) {\n    params.callback = callback;\n\n    var query = this.options.get('query');\n\n    query.call(null, params);\n  };\n\n  return Query;\n});\n\nS2.define('select2/dropdown/attachContainer',[\n\n], function () {\n  function AttachContainer (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  AttachContainer.prototype.position =\n    function (decorated, $dropdown, $container) {\n    var $dropdownContainer = $container.find('.dropdown-wrapper');\n    $dropdownContainer.append($dropdown);\n\n    $dropdown.addClass('select2-dropdown--below');\n    $container.addClass('select2-container--below');\n  };\n\n  return AttachContainer;\n});\n\nS2.define('select2/dropdown/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n    'blur',\n    'change',\n    'click',\n    'dblclick',\n    'focus',\n    'focusin',\n    'focusout',\n    'input',\n    'keydown',\n    'keyup',\n    'keypress',\n    'mousedown',\n    'mouseenter',\n    'mouseleave',\n    'mousemove',\n    'mouseover',\n    'mouseup',\n    'search',\n    'touchend',\n    'touchstart'\n    ];\n\n    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\nS2.define('select2/selection/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n      'blur',\n      'change',\n      'click',\n      'dblclick',\n      'focus',\n      'focusin',\n      'focusout',\n      'input',\n      'keydown',\n      'keyup',\n      'keypress',\n      'mousedown',\n      'mouseenter',\n      'mouseleave',\n      'mousemove',\n      'mouseover',\n      'mouseup',\n      'search',\n      'touchend',\n      'touchstart'\n    ];\n\n    this.$selection.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\n/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n    if ( typeof S2.define === 'function' && S2.define.amd ) {\n        // AMD. Register as an anonymous module.\n        S2.define('jquery-mousewheel',['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node/CommonJS style for Browserify\n        module.exports = factory;\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n\n    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n        slice  = Array.prototype.slice,\n        nullLowestDeltaTimeout, lowestDelta;\n\n    if ( $.event.fixHooks ) {\n        for ( var i = toFix.length; i; ) {\n            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n        }\n    }\n\n    var special = $.event.special.mousewheel = {\n        version: '3.1.12',\n\n        setup: function() {\n            if ( this.addEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.addEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = handler;\n            }\n            // Store the line height and page height for this particular element\n            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n        },\n\n        teardown: function() {\n            if ( this.removeEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.removeEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = null;\n            }\n            // Clean up the data we added to the element\n            $.removeData(this, 'mousewheel-line-height');\n            $.removeData(this, 'mousewheel-page-height');\n        },\n\n        getLineHeight: function(elem) {\n            var $elem = $(elem),\n                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n            if (!$parent.length) {\n                $parent = $('body');\n            }\n            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n        },\n\n        getPageHeight: function(elem) {\n            return $(elem).height();\n        },\n\n        settings: {\n            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n            normalizeOffset: true  // calls getBoundingClientRect for each event\n        }\n    };\n\n    $.fn.extend({\n        mousewheel: function(fn) {\n            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n        },\n\n        unmousewheel: function(fn) {\n            return this.unbind('mousewheel', fn);\n        }\n    });\n\n\n    function handler(event) {\n        var orgEvent   = event || window.event,\n            args       = slice.call(arguments, 1),\n            delta      = 0,\n            deltaX     = 0,\n            deltaY     = 0,\n            absDelta   = 0,\n            offsetX    = 0,\n            offsetY    = 0;\n        event = $.event.fix(orgEvent);\n        event.type = 'mousewheel';\n\n        // Old school scrollwheel delta\n        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }\n        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }\n        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }\n        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n            deltaX = deltaY * -1;\n            deltaY = 0;\n        }\n\n        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n        delta = deltaY === 0 ? deltaX : deltaY;\n\n        // New school wheel delta (wheel event)\n        if ( 'deltaY' in orgEvent ) {\n            deltaY = orgEvent.deltaY * -1;\n            delta  = deltaY;\n        }\n        if ( 'deltaX' in orgEvent ) {\n            deltaX = orgEvent.deltaX;\n            if ( deltaY === 0 ) { delta  = deltaX * -1; }\n        }\n\n        // No change actually happened, no reason to go any further\n        if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n        // Need to convert lines and pages to pixels if we aren't already in pixels\n        // There are three delta modes:\n        //   * deltaMode 0 is by pixels, nothing to do\n        //   * deltaMode 1 is by lines\n        //   * deltaMode 2 is by pages\n        if ( orgEvent.deltaMode === 1 ) {\n            var lineHeight = $.data(this, 'mousewheel-line-height');\n            delta  *= lineHeight;\n            deltaY *= lineHeight;\n            deltaX *= lineHeight;\n        } else if ( orgEvent.deltaMode === 2 ) {\n            var pageHeight = $.data(this, 'mousewheel-page-height');\n            delta  *= pageHeight;\n            deltaY *= pageHeight;\n            deltaX *= pageHeight;\n        }\n\n        // Store lowest absolute delta to normalize the delta values\n        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n        if ( !lowestDelta || absDelta < lowestDelta ) {\n            lowestDelta = absDelta;\n\n            // Adjust older deltas if necessary\n            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n                lowestDelta /= 40;\n            }\n        }\n\n        // Adjust older deltas if necessary\n        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n            // Divide all the things by 40!\n            delta  /= 40;\n            deltaX /= 40;\n            deltaY /= 40;\n        }\n\n        // Get a whole, normalized value for the deltas\n        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);\n        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n        // Normalise offsetX and offsetY properties\n        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n            var boundingRect = this.getBoundingClientRect();\n            offsetX = event.clientX - boundingRect.left;\n            offsetY = event.clientY - boundingRect.top;\n        }\n\n        // Add information to the event object\n        event.deltaX = deltaX;\n        event.deltaY = deltaY;\n        event.deltaFactor = lowestDelta;\n        event.offsetX = offsetX;\n        event.offsetY = offsetY;\n        // Go ahead and set deltaMode to 0 since we converted to pixels\n        // Although this is a little odd since we overwrite the deltaX/Y\n        // properties with normalized deltas.\n        event.deltaMode = 0;\n\n        // Add event and delta to the front of the arguments\n        args.unshift(event, delta, deltaX, deltaY);\n\n        // Clearout lowestDelta after sometime to better\n        // handle multiple device types that give different\n        // a different lowestDelta\n        // Ex: trackpad = 3 and mouse wheel = 120\n        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n        return ($.event.dispatch || $.event.handle).apply(this, args);\n    }\n\n    function nullLowestDelta() {\n        lowestDelta = null;\n    }\n\n    function shouldAdjustOldDeltas(orgEvent, absDelta) {\n        // If this is an older event and the delta is divisable by 120,\n        // then we are assuming that the browser is treating this as an\n        // older mouse wheel event and that we should divide the deltas\n        // by 40 to try and get a more usable deltaFactor.\n        // Side note, this actually impacts the reported scroll distance\n        // in older browsers and can cause scrolling to be slower than native.\n        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n    }\n\n}));\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if ($.inArray(options, thisMethods) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n","/**\n * polyfill for document.scrollingElement\n * https://github.com/yangg/scrolling-element\n */\n(function () {\n  if (document.scrollingElement) {\n    return\n  }\n  var element = null\n  function scrollingElement () {\n    if (element) {\n      return element\n    } else if (document.body.scrollTop) {\n      // speed up if scrollTop > 0\n      return (element = document.body)\n    }\n    var iframe = document.createElement('iframe')\n    iframe.style.height = '1px'\n    document.documentElement.appendChild(iframe)\n    var doc = iframe.contentWindow.document\n    doc.write('<!DOCTYPE html><div style=\"height:9999em\">x</div>')\n    doc.close()\n    var isCompliant = doc.documentElement.scrollHeight > doc.body.scrollHeight\n    iframe.parentNode.removeChild(iframe)\n    return (element = isCompliant ? document.documentElement : document.body)\n  }\n  Object.defineProperty(document, 'scrollingElement', {\n    get: scrollingElement\n  })\n})()\n","/*!\n * modernizr v3.12.0\n * Build https://modernizr.com/download?-passiveeventlisteners-dontmin\n *\n * Copyright (c)\n *  Faruk Ates\n *  Paul Irish\n *  Alex Sexton\n *  Ryan Seddon\n *  Patrick Kettner\n *  Stu Cox\n *  Richard Herrera\n *  Veeck\n\n * MIT License\n */\n\n/*\n * Modernizr tests which native CSS3 and HTML5 features are available in the\n * current UA and makes the results available to you in two ways: as properties on\n * a global `Modernizr` object, and as classes on the `<html>` element. This\n * information allows you to progressively enhance your pages with a granular level\n * of control over the experience.\n*/\n\n;(function(scriptGlobalObject, window, document, undefined){\n\n  var tests = [];\n  \n\n  /**\n   * ModernizrProto is the constructor for Modernizr\n   *\n   * @class\n   * @access public\n   */\n  var ModernizrProto = {\n    _version: '3.12.0',\n\n    // Any settings that don't work as separate modules\n    // can go in here as configuration.\n    _config: {\n      'classPrefix': '',\n      'enableClasses': true,\n      'enableJSClass': true,\n      'usePrefixes': true\n    },\n\n    // Queue of tests\n    _q: [],\n\n    // Stub these for people who are listening\n    on: function(test, cb) {\n      // I don't really think people should do this, but we can\n      // safe guard it a bit.\n      // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.\n      // This is in case people listen to synchronous tests. I would leave it out,\n      // but the code to *disallow* sync tests in the real version of this\n      // function is actually larger than this.\n      var self = this;\n      setTimeout(function() {\n        cb(self[test]);\n      }, 0);\n    },\n\n    addTest: function(name, fn, options) {\n      tests.push({name: name, fn: fn, options: options});\n    },\n\n    addAsyncTest: function(fn) {\n      tests.push({name: null, fn: fn});\n    }\n  };\n\n  \n\n  // Fake some of Object.create so we can force non test results to be non \"own\" properties.\n  var Modernizr = function() {};\n  Modernizr.prototype = ModernizrProto;\n\n  // Leak modernizr globally when you `require` it rather than force it here.\n  // Overwrite name so constructor name is nicer :D\n  Modernizr = new Modernizr();\n\n  \n\n  var classes = [];\n  \n\n  /**\n   * is returns a boolean if the typeof an obj is exactly type.\n   *\n   * @access private\n   * @function is\n   * @param {*} obj - A thing we want to check the type of\n   * @param {string} type - A string to compare the typeof against\n   * @returns {boolean} true if the typeof the first parameter is exactly the specified type, false otherwise\n   */\n  function is(obj, type) {\n    return typeof obj === type;\n  }\n\n  ;\n\n  /**\n   * Run through all tests and detect their support in the current UA.\n   *\n   * @access private\n   * @returns {void}\n   */\n  function testRunner() {\n    var featureNames;\n    var feature;\n    var aliasIdx;\n    var result;\n    var nameIdx;\n    var featureName;\n    var featureNameSplit;\n\n    for (var featureIdx in tests) {\n      if (tests.hasOwnProperty(featureIdx)) {\n        featureNames = [];\n        feature = tests[featureIdx];\n        // run the test, throw the return value into the Modernizr,\n        // then based on that boolean, define an appropriate className\n        // and push it into an array of classes we'll join later.\n        //\n        // If there is no name, it's an 'async' test that is run,\n        // but not directly added to the object. That should\n        // be done with a post-run addTest call.\n        if (feature.name) {\n          featureNames.push(feature.name.toLowerCase());\n\n          if (feature.options && feature.options.aliases && feature.options.aliases.length) {\n            // Add all the aliases into the names list\n            for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) {\n              featureNames.push(feature.options.aliases[aliasIdx].toLowerCase());\n            }\n          }\n        }\n\n        // Run the test, or use the raw value if it's not a function\n        result = is(feature.fn, 'function') ? feature.fn() : feature.fn;\n\n        // Set each of the names on the Modernizr object\n        for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {\n          featureName = featureNames[nameIdx];\n          // Support dot properties as sub tests. We don't do checking to make sure\n          // that the implied parent tests have been added. You must call them in\n          // order (either in the test, or make the parent test a dependency).\n          //\n          // Cap it to TWO to make the logic simple and because who needs that kind of subtesting\n          // hashtag famous last words\n          featureNameSplit = featureName.split('.');\n\n          if (featureNameSplit.length === 1) {\n            Modernizr[featureNameSplit[0]] = result;\n          } else {\n            // cast to a Boolean, if not one already or if it doesnt exist yet (like inputtypes)\n            if (!Modernizr[featureNameSplit[0]] || Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {\n              Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);\n            }\n\n            Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;\n          }\n\n          classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));\n        }\n      }\n    }\n  }\n  ;\n/*!\n{\n  \"property\": \"passiveeventlisteners\",\n  \"caniuse\": \"passive-event-listener\",\n  \"tags\": [\"dom\"],\n  \"authors\": [\"Rick Byers\"],\n  \"name\": \"Passive event listeners\",\n  \"notes\": [{\n    \"name\": \"WHATWG Spec\",\n    \"href\": \"https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive\"\n  }, {\n    \"name\": \"WICG explainer\",\n    \"href\": \"https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\"\n  }]\n}\n!*/\n/* DOC\nDetects support for the passive option to addEventListener.\n*/\n\n  Modernizr.addTest('passiveeventlisteners', function() {\n    var supportsPassiveOption = false;\n    try {\n      var opts = Object.defineProperty({}, 'passive', {\n        get: function() {\n          supportsPassiveOption = true;\n          return;\n        }\n      });\n      var noop = function () {};\n      window.addEventListener('testPassiveEventSupport', noop, opts);\n      window.removeEventListener('testPassiveEventSupport', noop, opts);\n    } catch (e) {}\n    return supportsPassiveOption;\n  });\n\n\n  // Run each test\n  testRunner();\n\n  delete ModernizrProto.addTest;\n  delete ModernizrProto.addAsyncTest;\n\n  // Run the things that are supposed to run after the tests\n  for (var i = 0; i < Modernizr._q.length; i++) {\n    Modernizr._q[i]();\n  }\n\n  // Leak Modernizr namespace\n  scriptGlobalObject.Modernizr = Modernizr;\n\n\n;\n\n})(window, window, document);\n","/*!\n\n   Flowplayer Commercial v7.2.7 (Tuesday, 23. January 2018 12:17PM) | flowplayer.com/license\n\n*/\n/*! (C) WebReflection Mit Style License */\n(function(e){function g(e,t,n,r){for(var i,s=n.slice(),o=w(t,e),u=0,a=s.length;u<a;u++){handler=s[u],typeof handler==\"object\"&&typeof handler.handleEvent==\"function\"?handler.handleEvent(o):handler.call(e,o);if(o.stoppedImmediatePropagation)break}return i=!o.stoppedPropagation,r&&i&&e.parentNode?e.parentNode.dispatchEvent(o):!o.defaultPrevented}function y(e,t){return{configurable:!0,get:e,set:t}}function b(e,t,n){var r=f(t||e,n);u(e,\"textContent\",y(function(){return r.get.call(this)},function(e){r.set.call(this,e)}))}function w(e,t){return e.currentTarget=t,e.eventPhase=e.target===e.currentTarget?2:3,e}function E(e,t){var n=e.length;while(n--&&e[n]!==t);return n}function S(){if(this.tagName===\"BR\")return\"\\n\";var e=this.firstChild,t=[];while(e)e.nodeType!==8&&e.nodeType!==7&&t.push(e.textContent),e=e.nextSibling;return t.join(\"\")}function x(e){return e.nodeType!==9&&document.documentElement.contains(e)}function T(e){!n&&d.test(document.readyState)&&(n=!n,document.detachEvent(r,T),e=document.createEvent(\"Event\"),e.initEvent(i,!0,!0),document.dispatchEvent(e))}function N(e){var t;while(t=this.lastChild)this.removeChild(t);e!=null&&this.appendChild(document.createTextNode(e))}function C(t,n){return n||(n=e.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(document.createEvent)return;var t=!0,n=!1,r=\"onreadystatechange\",i=\"DOMContentLoaded\",s=\"__IE8__\"+Math.random(),o=e.Object,u=o.defineProperty||function(e,t,n){e[t]=n.value},a=o.defineProperties||function(t,n){for(var r in n)if(l.call(n,r))try{u(t,r,n[r])}catch(i){e.console&&console.log(r+\" failed on object:\",t,i.message)}},f=o.getOwnPropertyDescriptor,l=o.prototype.hasOwnProperty,c=e.Element.prototype,h=e.Text.prototype,p=/^[a-z]+$/,d=/loaded|complete/,v={},m=document.createElement(\"div\");b(e.HTMLCommentElement.prototype,c,\"nodeValue\"),b(e.HTMLScriptElement.prototype,null,\"text\"),b(h,null,\"nodeValue\"),b(e.HTMLTitleElement.prototype,null,\"text\"),u(e.HTMLStyleElement.prototype,\"textContent\",function(e){return y(function(){return e.get.call(this.styleSheet)},function(t){e.set.call(this.styleSheet,t)})}(f(e.CSSStyleSheet.prototype,\"cssText\"))),a(c,{textContent:{get:S,set:N},firstElementChild:{get:function(){for(var e=this.childNodes||[],t=0,n=e.length;t<n;t++)if(e[t].nodeType==1)return e[t]}},lastElementChild:{get:function(){for(var e=this.childNodes||[],t=e.length;t--;)if(e[t].nodeType==1)return e[t]}},previousElementSibling:{get:function(){var e=this.previousSibling;while(e&&e.nodeType!=1)e=e.previousSibling;return e}},nextElementSibling:{get:function(){var e=this.nextSibling;while(e&&e.nodeType!=1)e=e.nextSibling;return e}},childElementCount:{get:function(){for(var e=0,t=this.childNodes||[],n=t.length;n--;e+=t[n].nodeType==1);return e}},addEventListener:{value:function(e,t,n){var r=this,i=\"on\"+e,o=r[s]||u(r,s,{value:{}})[s],a=o[i]||(o[i]={}),f=a.h||(a.h=[]),c;if(!l.call(a,\"w\")){a.w=function(e){return e[s]||g(r,C(r,e),f,!1)};if(!l.call(v,i))if(p.test(e))try{c=document.createEventObject(),c[s]=!0,r.nodeType!=9&&r.parentNode==null&&m.appendChild(r),r.fireEvent(i,c),v[i]=!0}catch(c){v[i]=!1;while(m.hasChildNodes())m.removeChild(m.firstChild)}else v[i]=!1;(a.n=v[i])&&r.attachEvent(i,a.w)}E(f,t)<0&&f[n?\"unshift\":\"push\"](t)}},dispatchEvent:{value:function(e){var t=this,n=\"on\"+e.type,r=t[s],i=r&&r[n],o=!!i,u;return e.target||(e.target=t),o?i.n?t.fireEvent(n,e):g(t,e,i.h,!0):(u=t.parentNode)?u.dispatchEvent(e):!0,!e.defaultPrevented}},removeEventListener:{value:function(e,t,n){var r=this,i=\"on\"+e,o=r[s],u=o&&o[i],a=u&&u.h,f=a?E(a,t):-1;-1<f&&a.splice(f,1)}}}),a(h,{addEventListener:{value:c.addEventListener},dispatchEvent:{value:c.dispatchEvent},removeEventListener:{value:c.removeEventListener}}),a(e.XMLHttpRequest.prototype,{addEventListener:{value:function(e,t,n){var r=this,i=\"on\"+e,o=r[s]||u(r,s,{value:{}})[s],a=o[i]||(o[i]={}),f=a.h||(a.h=[]);E(f,t)<0&&(r[i]||(r[i]=function(){var t=document.createEvent(\"Event\");t.initEvent(e,!0,!0),r.dispatchEvent(t)}),f[n?\"unshift\":\"push\"](t))}},dispatchEvent:{value:function(e){var t=this,n=\"on\"+e.type,r=t[s],i=r&&r[n],o=!!i;return o&&(i.n?t.fireEvent(n,e):g(t,e,i.h,!0))}},removeEventListener:{value:c.removeEventListener}}),a(e.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(e,t,n){this.type=e,this.bubbles=!!t,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),a(e.HTMLDocument.prototype,{textContent:{get:function(){return this.nodeType===11?S.call(this):null},set:function(e){this.nodeType===11&&N.call(this,e)}},addEventListener:{value:function(n,s,o){var u=this;c.addEventListener.call(u,n,s,o),t&&n===i&&!d.test(u.readyState)&&(t=!1,u.attachEvent(r,T),e==top&&function a(e){try{u.documentElement.doScroll(\"left\"),T()}catch(t){setTimeout(a,50)}}())}},dispatchEvent:{value:c.dispatchEvent},removeEventListener:{value:c.removeEventListener},createEvent:{value:function(e){var t;if(e!==\"Event\")throw new Error(\"unsupported \"+e);return t=document.createEventObject(),t.timeStamp=(new Date).getTime(),t}}}),a(e.Window.prototype,{getComputedStyle:{value:function(){function i(e){this._=e}function s(){}var e=/^(?:[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/,t=/^(top|right|bottom|left)$/,n=/\\-([a-z])/g,r=function(e,t){return t.toUpperCase()};return i.prototype.getPropertyValue=function(i){var s=this._,o=s.style,u=s.currentStyle,a=s.runtimeStyle,f,l,c;return i=(i===\"float\"?\"style-float\":i).replace(n,r),f=u?u[i]:o[i],e.test(f)&&!t.test(i)&&(l=o.left,c=a&&a.left,c&&(a.left=u.left),o.left=i===\"fontSize\"?\"1em\":f,f=o.pixelLeft+\"px\",o.left=l,c&&(a.left=c)),f==null?f:f+\"\"||\"auto\"},s.prototype.getPropertyValue=function(){return null},function(e,t){return t?new s(e):new i(e)}}()},addEventListener:{value:function(t,n,r){var i=e,o=\"on\"+t,u;i[o]||(i[o]=function(e){return g(i,C(i,e),u,!1)}),u=i[o][s]||(i[o][s]=[]),E(u,n)<0&&u[r?\"unshift\":\"push\"](n)}},dispatchEvent:{value:function(t){var n=e[\"on\"+t.type];return n?n.call(e,t)!==!1&&!t.defaultPrevented:!0}},removeEventListener:{value:function(t,n,r){var i=\"on\"+t,u=(e[i]||o)[s],a=u?E(u,n):-1;-1<a&&u.splice(a,1)}}})})(this);\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.flowplayer = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){\n'use strict';\nvar common = module.exports = {},\n    ClassList = _dereq_('class-list'),\n    $ = window.jQuery,\n    punycode = _dereq_('punycode'),\n    computedStyle = _dereq_('computed-style');\n\ncommon.noop = function() {};\ncommon.identity = function(i) { return i; };\n\ncommon.removeNode = function(el) {\n  if (!el || !el.parentNode) return;\n  el.parentNode.removeChild(el);\n};\n\ncommon.find = function(query, ctx) {\n  if ($) return $(query, ctx).toArray();\n  ctx = ctx || document;\n  return Array.prototype.map.call(ctx.querySelectorAll(query), function(el) { return el; });\n};\n\ncommon.text = function(el, txt) {\n  el[('innerText' in el) ? 'innerText' : 'textContent'] = txt;\n};\n\ncommon.findDirect = function(query, ctx) {\n  return common.find(query, ctx).filter(function(node) {\n    return node.parentNode === ctx;\n  });\n};\n\ncommon.hasClass = function(el, kls) {\n  if (typeof el.className !== 'string') return false;\n  return ClassList(el).contains(kls);\n};\n\ncommon.isSameDomain = function(url) {\n  var w = window.location,\n      a = common.createElement('a', { href: url });\n  return w.hostname === a.hostname &&\n         w.protocol === a.protocol &&\n         w.port === a.port;\n};\n\ncommon.css = function(el, property, value) {\n  if (typeof property === 'object') {\n    return Object.keys(property).forEach(function(key) {\n      common.css(el, key, property[key]);\n    });\n  }\n  if (typeof value !== 'undefined') {\n    if (value === '') return el ? el.style.removeProperty(property)  : undefined;\n    return el ? el.style.setProperty(property, value) : undefined;\n  }\n  return el ? computedStyle(el, property) : undefined;\n};\n\ncommon.createElement = function(tag, attributes, innerHTML) {\n  try {\n    var el = document.createElement(tag);\n    for (var key in attributes) {\n      if (!attributes.hasOwnProperty(key)) continue;\n      if (key === 'css') {\n        common.css(el, attributes[key]);\n      } else {\n        common.attr(el, key, attributes[key]);\n      }\n    }\n    if (innerHTML) el.innerHTML = innerHTML;\n    return el;\n  } catch (e) {\n    if (!$) throw e;\n    return $('<' + tag + '>' + innerHTML + '</' + tag + '>').attr(attributes)[0];\n  }\n};\n\ncommon.toggleClass = function(el, cls, flag) {\n  if (!el) return;\n  var classes = ClassList(el);\n  if (typeof flag === 'undefined') classes.toggle(cls);\n  else if (flag) classes.add(cls);\n  else if (!flag) classes.remove(cls);\n};\n\ncommon.addClass = function(el, cls) {\n  return common.toggleClass(el, cls, true);\n};\n\ncommon.removeClass = function(el, cls) {\n  return common.toggleClass(el, cls, false);\n};\n\ncommon.append = function(par, child) {\n  par.appendChild(child);\n  return par;\n};\n\ncommon.appendTo = function(child, par) {\n  common.append(par, child);\n  return child;\n};\n\ncommon.prepend = function(par, child) {\n  par.insertBefore(child, par.firstChild);\n};\n\n\n// Inserts `el` after `child` that is child of `par`\ncommon.insertAfter = function(par, child, el) {\n  if (child == common.lastChild(par)) par.appendChild(el);\n  var childIndex = Array.prototype.indexOf.call(par.children, child);\n  par.insertBefore(el, par.children[childIndex + 1]);\n};\n\ncommon.html = function(elms, val) {\n  elms = elms.length ? elms : [elms];\n  elms.forEach(function(elm) {\n    elm.innerHTML = val;\n  });\n};\n\n\ncommon.attr = function(el, key, val) {\n  if (key === 'class') key = 'className';\n  if (common.hasOwnOrPrototypeProperty(el, key)) {\n    try {\n      el[key] = val;\n    } catch (e) { // Most likely IE not letting set property\n      if ($) {\n        $(el).attr(key, val);\n      } else {\n        throw e;\n      }\n    }\n  } else {\n    if (val === false) {\n      el.removeAttribute(key);\n    } else {\n      el.setAttribute(key, val);\n    }\n  }\n  return el;\n};\n\ncommon.prop = function(el, key, val) {\n  if (typeof val === 'undefined') {\n    return el && el[key];\n  }\n  el[key] = val;\n};\n\ncommon.offset = function(el) {\n  var ret = el.getBoundingClientRect();\n  if (el.offsetWidth / el.offsetHeight > el.clientWidth / el.clientHeight) { // https://github.com/flowplayer/flowplayer/issues/757\n    ret = {\n      left: ret.left * 100,\n      right: ret.right * 100,\n      top: ret.top * 100,\n      bottom: ret.bottom * 100,\n      width: ret.width * 100,\n      height: ret.height * 100\n    };\n  }\n  return ret;\n};\n\ncommon.width = function(el, val) {\n  /*jshint -W093 */\n  if (val) return el.style.width = (''+val).replace(/px$/, '') + 'px';\n  var ret = common.offset(el).width;\n  return typeof ret === 'undefined' ? el.offsetWidth : ret;\n};\n\ncommon.height = function(el, val) {\n  /*jshint -W093 */\n  if (val) return el.style.height = (''+val).replace(/px$/, '') + 'px';\n  var ret = common.offset(el).height;\n  return typeof ret === 'undefined' ? el.offsetHeight : ret;\n};\n\ncommon.lastChild = function(el) {\n  return el.children[el.children.length - 1];\n};\n\ncommon.hasParent = function(el, parentSelector) {\n  var parent = el.parentElement;\n  while (parent) {\n    if (typeof parentSelector !== 'string') {\n      // is an element\n      if (parent === parentSelector) return true;\n    } else {\n      if (common.matches(parent, parentSelector)) return true;\n    }\n    parent = parent.parentElement;\n  }\n  return false;\n};\n\ncommon.createAbsoluteUrl = function(url) {\n  return common.createElement('a', {href: url}).href; // This won't work on IE7\n};\n\ncommon.xhrGet = function(url, successCb, errorCb) {\n  var xhr = new XMLHttpRequest();\n  xhr.onreadystatechange = function() {\n    if (this.readyState !== 4) return;\n    if (this.status >= 400) return errorCb();\n    successCb(this.responseText);\n  };\n  xhr.open('get', url, true);\n  xhr.send();\n};\n\ncommon.pick = function(obj, props) {\n  var ret = {};\n  props.forEach(function(prop) {\n    if (obj.hasOwnProperty(prop)) ret[prop] = obj[prop];\n  });\n  return ret;\n};\n\ncommon.hostname = function(host) {\n  return punycode.toUnicode(host || window.location.hostname);\n};\n\n//Hacks\ncommon.browser = {\n  webkit: 'WebkitAppearance' in document.documentElement.style\n};\n\ncommon.getPrototype = function(el) {\n  /* jshint proto:true */\n  if (!Object.getPrototypeOf) return el.__proto__;\n  return Object.getPrototypeOf(el);\n};\n\ncommon.hasOwnOrPrototypeProperty = function(obj, prop) {\n  var o = obj;\n  while (o) {\n    if (Object.prototype.hasOwnProperty.call(o, prop)) return true;\n    o = common.getPrototype(o);\n  }\n  return false;\n};\n\n\n// Polyfill for Element.matches\n// adapted from https://developer.mozilla.org/en/docs/Web/API/Element/matches\ncommon.matches = function(elem, selector) {\n  var proto = Element.prototype,\n      fn = proto.matches ||\n          proto.matchesSelector ||\n          proto.mozMatchesSelector ||\n          proto.msMatchesSelector ||\n          proto.oMatchesSelector ||\n          proto.webkitMatchesSelector ||\n          function (selector) {\n            var element = this,\n                matches = (element.document || element.ownerDocument).querySelectorAll(selector),\n                i = 0;\n            while (matches[i] && matches[i] !== element) {\n              i++;\n            }\n\n            return matches[i] ? true : false;\n      };\n  return fn.call(elem, selector);\n};\n\n\n// Polyfill for CSSStyleDeclaration\n// from https://github.com/shawnbot/aight\n(function(CSSSDProto) {\n\n  function getAttribute(property) {\n    return property.replace(/-[a-z]/g, function(bit) {\n      return bit[1].toUpperCase();\n    });\n  }\n\n  // patch CSSStyleDeclaration.prototype using IE8's methods\n  if (typeof CSSSDProto.setAttribute !== \"undefined\") {\n    CSSSDProto.setProperty = function(property, value) {\n      return this.setAttribute(getAttribute(property), String(value) /*, important */ );\n    };\n    CSSSDProto.getPropertyValue = function(property) {\n      return this.getAttribute(getAttribute(property)) || null;\n    };\n    CSSSDProto.removeProperty = function(property) {\n      var value = this.getPropertyValue(property);\n      this.removeAttribute(getAttribute(property));\n      return value;\n    };\n  }\n\n})(window.CSSStyleDeclaration.prototype);\n\n},{\"class-list\":36,\"computed-style\":37,\"punycode\":44}],2:[function(_dereq_,module,exports){\n'use strict';\nvar common = _dereq_('../common');\n\n// movie required in opts\nmodule.exports = function embed(swf, flashvars, wmode, bgColor) {\n   wmode = wmode || \"opaque\";\n\n   var id = \"obj\" + (\"\" + Math.random()).slice(2, 15),\n       tag = '<object class=\"fp-engine\" id=\"' + id+ '\" name=\"' + id + '\" ',\n       msie = navigator.userAgent.indexOf('MSIE') > -1;\n\n   tag += msie ? 'classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\">' :\n      ' data=\"' + swf  + '\" type=\"application/x-shockwave-flash\">';\n\n   var opts = {\n      width: \"100%\",\n      height: \"100%\",\n      allowscriptaccess: \"always\",\n      wmode: wmode,\n      quality: \"high\",\n      flashvars: \"\",\n\n      // https://github.com/flowplayer/flowplayer/issues/13#issuecomment-9369919\n      movie: swf + (msie ? \"?\" + id : \"\"),\n      name: id\n   };\n\n   if (wmode !== 'transparent') opts.bgcolor = bgColor || '#333333';\n\n   // flashvars\n   Object.keys(flashvars).forEach(function(key) {\n      opts.flashvars += key + \"=\" + flashvars[key] + \"&\";\n   });\n\n   // parameters\n   Object.keys(opts).forEach(function(key) {\n      tag += '<param name=\"' + key + '\" value=\"'+ opts[key] +'\"/>';\n   });\n\n   tag += \"</object>\";\n   var el = common.createElement('div', {}, tag);\n   return common.find('object', el);\n\n};\n\n\n// Flash is buggy allover\nif (window.attachEvent) {\n   window.attachEvent(\"onbeforeunload\", function() {\n      window.__flash_savedUnloadHandler = window.__flash_unloadHandler = function() {};\n   });\n}\n\n\n},{\"../common\":1}],3:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    common = _dereq_('../common'),\n    embed = _dereq_('./embed'),\n    extend = _dereq_('extend-object'),\n    bean = _dereq_('bean'),\n    engineImpl;\n\nengineImpl = function flashEngine(player, root) {\n\n   var conf = player.conf,\n      loadVideo,\n      callbackId,\n      api;\n\n   var suspended, timeouts = [];\n\n   var engine = {\n      engineName: engineImpl.engineName,\n\n      pick: function(sources) {\n\n        var source = extend({}, (function() {\n          if (flowplayer.support.flashVideo) {\n            var selectedSource;\n            for (var i = 0, source; i < sources.length; i++) {\n               source = sources[i];\n               if (/mp4|flv|flash/i.test(source.type)) selectedSource = source;\n               if (player.conf.swfHls && /mpegurl/i.test(source.type)) selectedSource = source;\n               if (selectedSource && !/mp4/i.test(selectedSource.type)) return selectedSource;\n               // Did not find any source or source was video/mp4, let's try find more\n            }\n            return selectedSource; // Accept the fact we don't have anything or just an MP4\n          }\n        })());\n        if (!source) return;\n        if (source.src && !isAbsolute(source.src) && !player.conf.rtmp && !source.rtmp) source.src = common.createAbsoluteUrl(source.src);\n        return source;\n      },\n\n      suspendEngine: function() {\n        suspended = true;\n      },\n      resumeEngine: function() {\n        suspended = false;\n      },\n\n      load: function(video) {\n         loadVideo = video;\n         timeouts.forEach(function(t) { clearTimeout(t); });\n\n         function escapeURL(url) {\n            return url.replace(/&amp;/g, '%26').replace(/&/g, '%26').replace(/=/g, '%3D');\n         }\n\n         var html5Tag = common.findDirect('video', root)[0] || common.find('.fp-player > video', root)[0],\n            url = video.src,\n            is_absolute = isAbsolute(url);\n\n         var removeTag = function() {\n            common.removeNode(html5Tag);\n         };\n         var hasSupportedSource = function(sources) {\n            return sources.some(function(src) {\n               return !!html5Tag.canPlayType(src.type);\n            });\n         };\n         if (flowplayer.support.video &&\n            common.prop(html5Tag, 'autoplay') &&\n            hasSupportedSource(video.sources)) bean.one(html5Tag, 'timeupdate', removeTag);\n         else removeTag();\n\n         // convert to absolute\n         var rtmp = video.rtmp || conf.rtmp;\n         if (!is_absolute && !rtmp) url = common.createAbsoluteUrl(url);\n\n         if (api && isHLS(video) && api.data !== common.createAbsoluteUrl(conf.swfHls)) engine.unload();\n\n         if (api) {\n            ['live', 'preload', 'loop'].forEach(function(prop) {\n              if (!video.hasOwnProperty(prop)) return;\n              api.__set(prop, video[prop]);\n            });\n            Object.keys(video.flashls || {}).forEach(function(key) {\n              api.__set('hls_' + key, video.flashls[key]);\n            });\n            var providerChangeNeeded = false;\n            if (!is_absolute && rtmp) api.__set('rtmp', rtmp.url || rtmp);\n            else {\n              var oldRtmp = api.__get('rtmp');\n              providerChangeNeeded = !!oldRtmp;\n              api.__set('rtmp', null);\n            }\n            api.__play(url, providerChangeNeeded || video.rtmp && video.rtmp !== conf.rtmp);\n\n         } else {\n\n            callbackId = \"fpCallback\" + (\"\" + Math.random()).slice(3, 15);\n            url = escapeURL(url);\n\n            var opts = {\n               hostname: conf.embedded ? common.hostname(conf.hostname) : common.hostname(location.hostname),\n               url: url,\n               callback: callbackId\n            };\n            if (root.getAttribute('data-origin')) {\n               opts.origin = root.getAttribute('data-origin');\n            }\n\n            // optional conf\n            ['proxy', 'key', 'autoplay', 'preload', 'subscribe', 'live', 'loop', 'debug', 'splash', 'poster', 'rtmpt'].forEach(function(key) {\n              if (conf.hasOwnProperty(key)) opts[key] = conf[key];\n              if (video.hasOwnProperty(key)) opts[key] = video[key];\n              if ((conf.rtmp || {}).hasOwnProperty(key)) opts[key] = (conf.rtmp || {})[key];\n              if ((video.rtmp || {}).hasOwnProperty(key)) opts[key] = (video.rtmp || {})[key];\n            });\n            if (conf.splash) opts.autoplay = true;\n            if (conf.rtmp) opts.rtmp = conf.rtmp.url || conf.rtmp;\n            if (video.rtmp) opts.rtmp = video.rtmp.url || video.rtmp;\n            Object.keys(video.flashls || {}).forEach(function(key) {\n              var val = video.flashls[key];\n              opts['hls_' + key] = val;\n            });\n\n            var hlsQualities = typeof video.hlsQualities !== 'undefined' ? video.hlsQualities : conf.hlsQualities;\n            if (typeof hlsQualities !== 'undefined') opts.hlsQualities = hlsQualities ? encodeURIComponent(JSON.stringify(hlsQualities)) : hlsQualities;\n            // bufferTime, bufferTimeMax might be 0\n            if (conf.bufferTime !== undefined) opts.bufferTime = conf.bufferTime;\n            if (conf.bufferTimeMax !== undefined) opts.bufferTimeMax = conf.bufferTimeMax;\n\n            if (is_absolute) delete opts.rtmp;\n\n            // issues #376\n            if (opts.rtmp) {\n               opts.rtmp = escapeURL(opts.rtmp);\n            }\n\n            // issues #733, 906\n            var bgColor = conf.bgcolor || common.css(root, 'background-color') ||'', bg;\n            if (bgColor.indexOf('rgb') === 0) {\n              bg = toHex(bgColor);\n            } else if (bgColor.indexOf('#') === 0) {\n              bg = toLongHex(bgColor);\n            }\n\n            // issues #387\n            opts.initialVolume = player.volumeLevel;\n\n            var swfUrl = isHLS(video) ? conf.swfHls : conf.swf;\n\n            api = embed(swfUrl, opts, conf.wmode, bg)[0];\n\n            var container = common.find('.fp-player', root)[0];\n\n            common.prepend(container, api);\n\n            player.off('quality.flashengine').on('quality.flashengine', function(ev, _api, quality) {\n              var hlsQualities =\n                typeof player.video.hlsQualities !== 'undefined' ?\n                  player.video.hlsQualities :\n                    player.conf.hlsQualities;\n              if (!hlsQualities) return;\n              try {\n                api.__quality(quality);\n              } catch (e) {\n                // VOD / RTMP engine does not support quality\n                player.debug('Error changing quality in flash engine', e);\n              }\n            });\n\n            // throw error if no loading occurs\n            setTimeout(function() {\n               try {\n                  if (!api.PercentLoaded()) {\n                     return player.trigger(\"error\", [player, { code: 7, url: conf.swf }]);\n                  }\n               } catch (e) {}\n            }, 5000);\n\n            // detect disabled flash\n            //\n            timeouts.push(setTimeout(function() {\n              if (typeof api.PercentLoaded === 'undefined') {\n                player.trigger('flashdisabled', [player]);\n              }\n            }, 15000));\n            timeouts.push(setTimeout(function() {\n              if (typeof api.PercentLoaded === 'undefined') {\n                player.trigger('flashdisabled', [player, false]);\n              }\n            }, 500));\n\n            player.off('resume.flashhack').on('resume.flashhack', function() {\n              var timer = setTimeout(function() {\n                var currentTime = api.__status().time;\n                var timer2 = setTimeout(function() {\n                  if (player.playing && !player.loading && api.__status().time === currentTime) {\n                    player.trigger('flashdisabled', [player]);\n                  }\n                }, 400);\n                timeouts.push(timer2);\n                player.one('seek.flashhack pause.flashhack load.flashack', function() { clearTimeout(timer2); });\n              }, 800);\n              timeouts.push(timer);\n              player.one('progress', function() {\n                clearTimeout(timer);\n              });\n            });\n\n\n            api.pollInterval = setInterval(function () {\n               if (!api || suspended) return;\n               var status = api.__status ? api.__status() : null;\n\n               if (!status) return;\n\n               if (player.conf.live || player.live || video.live) {\n                 video.seekOffset = status.seekOffset;\n                 video.duration = status.duration + status.seekOffset;\n               }\n\n               if (player.playing && status.time && status.time !== player.video.time) player.trigger(\"progress\", [player, status.time]);\n\n               video.buffer = status.buffer / video.bytes * video.duration;\n               player.trigger(\"buffer\", [player, video.buffer]);\n\n               if (!video.buffered && status.time > 0) {\n                  video.buffered = true;\n                  player.trigger(\"buffered\", [player]);\n               }\n\n            }, 250);\n\n            // listen\n            window[callbackId] = function(type, arg) {\n               var video = loadVideo;\n\n               if (conf.debug) {\n                 if (type.indexOf('debug') === 0 && arg && arg.length) {\n                   console.log.apply(console, ['-- ' + type].concat(arg));\n                 }\n                 else console.log(\"--\", type, arg);\n               }\n\n               var event = {\n                 type: type\n               };\n\n               switch (type) {\n\n                  // RTMP sends a lot of finish events in vain\n                  // case \"finish\": if (conf.rtmp) return;\n                  case \"ready\": arg = extend(video, arg); break;\n                  case \"click\": event.flash = true; break;\n                  case \"keydown\": event.which = arg; break;\n                  case \"seek\": video.time = arg; break;\n                  case \"status\":\n                     player.trigger(\"progress\", [player, arg.time]);\n\n                     if (arg.buffer < video.bytes && !video.buffered) {\n                        video.buffer = arg.buffer / video.bytes * video.duration;\n                        player.trigger(\"buffer\", video.buffer);\n                     } else if (!video.buffered) {\n                        video.buffered = true;\n                        player.trigger(\"buffered\");\n                     }\n\n                     break;\n                 case \"metadata\":\n                   var str = atob(arg);\n                   arg = {\n                     key: str.substr(10, 4),\n                     data: str.substr(21)\n                   }\n                   break;\n               }\n               if (type === 'click' || type === 'keydown') {\n                 event.target = root;\n                 bean.fire(root, type, [event]);\n               }\n               else if (type != 'buffered' && type !== 'unload') {\n                  // add some delay so that player is truly ready after an event\n                  setTimeout(function() { player.trigger(event, [player, arg]); }, 1);\n               } else if (type === 'unload') {\n                 player.trigger(event, [player, arg]);\n               }\n\n            };\n\n         }\n\n      },\n\n      // not supported yet\n      speed: common.noop,\n\n\n      unload: function() {\n         if (api && api.__unload) api.__unload();\n         try {\n           if (callbackId && window[callbackId])delete window[callbackId];\n         } catch (e) {}\n         common.find(\"object\", root).forEach(common.removeNode);\n         api = 0;\n         player.off('.flashengine');\n         player.off('.flashhack');\n         clearInterval(api.pollInterval);\n         timeouts.forEach(function(t) { clearTimeout(t); });\n      }\n\n   };\n\n   ['pause','resume','seek','volume'].forEach(function(name) {\n\n      engine[name] = function(arg) {\n         try {\n           if (player.ready) {\n\n              if (arg === undefined) {\n                 api[\"__\" + name]();\n\n              } else {\n                 api[\"__\" + name](arg);\n              }\n\n           }\n         } catch (e) {\n           if (typeof api[\"__\" + name] === 'undefined') { //flash lost it's methods\n             return player.trigger('flashdisabled', [player]);\n           }\n           throw e;\n         }\n      };\n\n   });\n\n   function toHex(bg) {\n     function hex(x) {\n       return (\"0\" + parseInt(x).toString(16)).slice(-2);\n     }\n\n     bg = bg.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\n     if (!bg) return;\n\n     return '#' + hex(bg[1]) + hex(bg[2]) + hex(bg[3]);\n   }\n\n   function toLongHex(bg) {\n     if (bg.length === 7) return bg;\n     var a = bg.split('').slice(1);\n     return '#' + a.map(function(i) {\n       return i + i;\n     }).join('');\n   }\n\n   function isHLS(video) {\n     return /application\\/x-mpegurl/i.test(video.type);\n   }\n\n   return engine;\n\n};\n\n\nengineImpl.engineName = 'flash';\nengineImpl.canPlay = function(type, conf) {\n  return flowplayer.support.flashVideo && /video\\/(mp4|flash|flv)/i.test(type) || flowplayer.support.flashVideo && conf.swfHls && /mpegurl/i.test(type);\n};\nflowplayer.engines.push(engineImpl);\n\n\n\nfunction isAbsolute(url) {\n  return /^https?:/.test(url);\n}\n\n},{\"../common\":1,\"../flowplayer\":31,\"./embed\":2,\"bean\":34,\"extend-object\":39}],4:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer')\n  , support = flowplayer.support\n  , common = flowplayer.common\n  , bean = flowplayer.bean\n  , html5factory = _dereq_('./html5-factory');\n\n\n\nfunction canPlay(type) {\n  if (typeof window.Hls === 'undefined') return false;\n  return /mpegurl/.test(type) && window.Hls.isSupported();\n}\n\nvar engine;\n\nengine = function(player, root) {\n\n  var Hls = window.Hls\n    , lastSelectedLevel\n    , lastSource;\n\n  function hlsjsExt(video, api, engineApi) {\n    var conf = flowplayer.extend({\n      recoverMediaError: true\n    }, player.conf.hlsjs, video.hlsjs);\n    if (player.engine.hls) player.engine.hls.destroy();\n    var hls = player.engine.hls = new Hls(conf);\n    engine.extensions.forEach(function(ext) {\n      ext({\n        hls: hls,\n        player: player,\n        root: root,\n        videoTag: api\n      });\n    });\n    hls.loadSource(video.src);\n\n    // API overriders\n    engineApi.resume = function() {\n      if (player.live && !player.dvr) api.currentTime = hls.liveSyncPosition || 0;\n      api.play();\n    };\n\n    engineApi.seek = function(seekTo) {\n      try {\n        if (player.live || player.dvr) {\n          api.currentTime = Math.min(\n            seekTo,\n            (hls.liveSyncPosition || api.duration - conf.livePositionOffset)\n          );\n        }\n        else api.currentTime = seekTo;\n      } catch (e) {\n        player.debug('Failed to seek to ', seekTo, e);\n      }\n    };\n\n    if (conf.bufferWhilePaused === false) {\n      player.on('pause', function() {\n        hls.stopLoad();\n        player.one('resume', function() {\n          hls.startLoad();\n        });\n      });\n    }\n\n    // Quality selection\n    player.on('quality', function(_ev, _api, q) {\n      hls.nextLevel = lastSelectedLevel = q;\n    });\n\n    // HLS.js error handling\n    var recoverMediaErrorDate\n      , swapAudioCodecDate;\n    var recover = function(isNetworkError) {\n      player.debug('hlsjs - recovery');\n\n      common.removeClass(root, 'is-paused');\n      common.addClass(root, 'is-seeking');\n\n      bean.one(api, 'seeked', function() {\n        if (api.paused) {\n          common.removeClass(root, 'is-poster');\n          player.poster = false;\n          api.play();\n        }\n        common.removeClass(root, 'is-seeking');\n      });\n\n\n      if (isNetworkError) return hls.startLoad();\n      var now = performance.now();\n      if (!recoverMediaErrorDate || now - recoverMediaErrorDate > 3000) {\n        recoverMediaErrorDate = performance.now();\n        hls.recoverMediaError();\n      } else if (!swapAudioCodecDate || (now - swapAudioCodecDate) > 3000) {\n        swapAudioCodecDate = performance.now();\n        hls.swapAudioCodec();\n        hls.recoverMediaError();\n      }\n    };\n\n\n    hls.on(Hls.Events.MANIFEST_PARSED, function(_, data) {\n      var hlsQualities = video.hlsQualities || player.conf.hlsQualities\n        , confQualities\n        , qualityLabels = {}\n        , levels = data.levels;\n\n      if (hlsQualities === false) return hls.attachMedia(api);\n      if (hlsQualities === 'drive') switch (levels.length) {\n        case 4:\n          confQualities = [1, 2, 3];\n          break;\n        case 5:\n          confQualities = [1, 2, 3, 4];\n          break;\n        case 6:\n          confQualities = [1, 3, 4, 5];\n          break;\n        case 7:\n          confQualities = [1, 3, 5, 6];\n          break;\n        case 8:\n          confQualities = [1, 3, 6, 7];\n          break;\n        default:\n          if (levels.length < 3 || (levels[0].height && levels[2].height && levels[0].height === levels[2].height)) {\n            confQualities = [];\n          } else {\n            confQualities = [1, 2];\n          }\n          break;\n      }\n\n      video.qualities = [{\n        value: -1,\n        label: 'Auto'\n      }]\n\n      if (Array.isArray(hlsQualities)) {\n        var confAutoQuality = hlsQualities.find(function(q) { return q === -1 || q.level && q.level === -1; });\n        if (!confAutoQuality) video.qualities = [];\n        else video.qualities[0].label = typeof confAutoQuality !== 'number' ? confAutoQuality.label : video.qualities[0].label;\n        confQualities = hlsQualities.map(function(q) {\n          if (typeof q.level !== 'undefined') qualityLabels[q.level] = q.label;\n          return typeof q.level !== 'undefined' ? q.level : q;\n        });\n      }\n\n      var initialLevel = -2;\n\n      video.qualities = video.qualities.concat(levels.map(function(level, i) {\n        if (confQualities && confQualities.indexOf(i) === -1) return false;\n        var label = qualityLabels[i] || (Math.min(level.width, level.height) + 'p');\n        if (!qualityLabels[i] && hlsQualities !== 'drive') label += ' (' + Math.round(level.bitrate / 1000) + 'k)';\n        if (i === lastSelectedLevel) initialLevel = i;\n\n        return {\n          value: i,\n          label: label\n        };\n      })).filter(common.identity);\n\n\n      var currentLevel = video.quality = initialLevel === -2 ?  video.qualities[0].value || -1 : initialLevel;\n\n      if (currentLevel !== hls.currentLevel) hls.currentLevel = currentLevel;\n\n      // End quality selection\n\n      hls.attachMedia(api);\n\n      if (lastSource && video.src !== lastSource) api.play();\n      lastSource = video.src;\n    });\n    \n    hls.on(Hls.Events.ERROR, function(ev, data) {\n      if (!data.fatal) return;\n      if (conf.recoverNetworkError && data.type === Hls.ErrorTypes.NETWORK_ERROR) recover(true);\n      else if (conf.recoverMediaError && data.type === Hls.ErrorTypes.MEDIA_ERROR) recover(false);\n      else {\n        var code = 5;\n        if (data.type === Hls.ErrorTypes.NETWORK_ERROR) code = 2;\n        if (data.type === Hls.ErrorTypes.MEDIA_ERROR) code = 3;\n        hls.destroy();\n        player.trigger('error', [player, { code: code }]);\n      }\n    });\n\n    player.one('unload', function() {\n      hls.destroy();\n    });\n\n    return {\n      handlers: {\n        error: function(e, videoTag) {\n          var errorCode = videoTag.error && videoTag.error.code;\n          if (conf.recoverMediaError && errorCode === 3 || !errorCode) {\n            e.preventDefault();\n            recover(false);\n            return true;\n          }\n          if (conf.recoverNetworkError && errorCode === 2) {\n            e.preventDefault();\n            recover(true);\n            return true;\n          }\n        }\n      }\n    };\n  }\n  return html5factory('hlsjs-lite', player, root, canPlay, hlsjsExt);\n};\n\n\nengine.canPlay = function(type, conf) {\n  if (conf.hlsjs === false || (conf.clip && conf.clip.hlsjs === false)) return false;\n  if (support.browser.safari && !(conf.clip && conf.clip.hlsjs || conf.hlsjs || {}).safari) return false;\n  return flowplayer.support.video && canPlay(type);\n};\n\nengine.engineName = 'hlsjs-lite';\n\nengine.plugin = function(extension) {\n  engine.extensions.push(extension);\n}\n\nengine.extensions = [];\n\nflowplayer.engines.push(engine);\n\n},{\"../flowplayer\":31,\"./html5-factory\":5}],5:[function(_dereq_,module,exports){\n/*eslint indent: [\"error\", 2]*/\n/*eslint quotes: [\"error\", \"single\"]*/\n\nvar flowplayer = _dereq_('../flowplayer')\n  , common = flowplayer.common\n  , support = flowplayer.support\n  , bean = flowplayer.bean\n  , extend = flowplayer.extend;\n\nvar desktopSafari = support.browser.safari && !support.iOS;\n// HTML5 --> Flowplayer event\nvar EVENTS = {\n  ended: 'finish',\n  pause: 'pause',\n  play: 'resume',\n  timeupdate: 'progress',\n  volumechange: 'volume',\n  ratechange: 'speed',\n  seeked: 'seek',\n  loadedmetadata: !desktopSafari ? 'ready' : 0,\n  canplaythrough: desktopSafari ? 'ready' : 0,\n  durationchange: 'ready',\n  error: 'error',\n  dataunavailable: 'error',\n  webkitendfullscreen: !flowplayer.support.inlineVideo && 'unload',\n  progress: 'buffer'\n};\n\n\nfunction html5factory(engineName, player, root, canPlay, ext) {\n  var api = common.findDirect('video', root)[0] || common.find('.fp-player > video', root)[0]\n    , conf = player.conf\n    , timer\n    , volumeLevel\n    , self;\n  return self = {\n    engineName: engineName,\n\n    pick: function(sources) {\n      var source = support.video && sources.filter(function(s) {\n        return canPlay(s.type);\n      })[0];\n\n      if (!source) return;\n      if (typeof source.src === 'string') source.src = common.createAbsoluteUrl(source.src);\n      return source;\n    },\n\n    load: function(video) {\n      var container = common.find('.fp-player', root)[0]\n        , created = false;\n\n      if (!api) {\n        api = document.createElement('video');\n        common.prepend(container, api);\n        api.autoplay = !!conf.splash;\n        created = true;\n      }\n      common.addClass(api, 'fp-engine');\n      common.find('track', api).forEach(common.removeNode);\n      api.preload = 'none';\n\n      if (!conf.nativesubtitles) common.attr(api, 'crossorigin', false);\n\n      if (!conf.disableInline) {\n        api.setAttribute('webkit-playsinline', 'true');\n        api.setAttribute('playsinline', 'true');\n      }\n\n      if (!support.inlineVideo) {\n        common.css(api, {\n          position: 'absolute',\n          top: '-9999em'\n        });\n      }\n\n      if (support.subtitles && conf.nativesubtitles && video.subtitles && video.subtitles.length) {\n        common.addClass(api, 'native-subtitles');\n        var subtitles = video.subtitles;\n        var setMode = function(mode) {\n          var tracks = api.textTracks;\n          if (!tracks.length) return;\n          tracks[0].mode = mode;\n        };\n        if (subtitles.some(function(st) { return !common.isSameDomain(st.src); })) common.attr(api, 'crossorigin', 'anonymous');\n        if (typeof api.textTracks.addEventListener === 'function') api.textTracks.addEventListener('addtrack', function() {\n          setMode('disabled');\n          setMode('showing');\n        });\n        subtitles.forEach(function(st) {\n          api.appendChild(common.createElement('track', {\n            kind: 'subtitles',\n            srclang: st.srclang || 'en',\n            label: st.label || 'en',\n            src: st.src,\n            'default': st['default']\n          }));\n        });\n      }\n\n      // IE does not fire delegated timeupdate events\n      bean.off(api, 'timeupdate', common.noop);\n      bean.on(api, 'timeupdate', common.noop);\n\n      common.prop(api, 'loop', false);\n      player.off('.loophack');\n      if (video.loop || conf.loop) {\n        player.on('finish.loophack', function() { player.resume(); });\n      }\n\n      if (typeof volumeLevel !== 'undefined') {\n        api.volume = volumeLevel;\n      }\n\n      var extra = ext(video, api, self);\n      if (conf.autoplay || conf.splash || video.autoplay) {\n        player.debug('Autoplay / Splash setup, try to start video');\n        api.load();\n        var play = function () {\n          try {\n            var p = api.play();\n            if (p && p.catch) {\n              var recoverAutoplay = function(err) {\n                if (err.name === 'AbortError' && err.code === 20) {\n                  if (!created) return api.play().catch(recoverAutoplay);\n                  else return;\n                }\n                if (!conf.mutedAutoplay) throw new Error('Unable to autoplay');\n                player.debug('Play errored, trying muted', err);\n                player.mute(true, true);\n                return api.play();\n              }\n              p.catch(recoverAutoplay).catch(function() {\n                conf.autoplay = false;\n                player.mute(false, true); // Restore volume as playback failed\n                player.trigger('stop', [player]);\n              });\n            }\n          } catch(e) {\n            player.debug('play() error thrown', e);\n          }\n        };\n        if (api.readyState > 0) play();\n        else bean.one(api, 'canplay', play);\n      }\n\n      self._listeners = listen(api, common.find('source', api).concat(api), video, extra) || self._listeners;\n\n      if (conf.autoplay || conf.splash || video.autoplay) return; // No preload check needed\n      var preloadCheck = function() {\n        if (!isInViewport(root)) return;\n        player.debug('player is in viewport, preload');\n        if (support.preloadMetadata) api.preload = 'metadata';\n        else api.load();\n        bean.off(document, 'scroll.preloadviewport');\n      };\n      bean.off(document, 'scroll.preloadviewport');\n      bean.on(document, 'scroll.preloadviewport', function() {\n        window.requestAnimationFrame(preloadCheck);\n      });\n      preloadCheck();\n    },\n\n    mute: function(flag) {\n      api.muted = !!flag;\n      player.trigger('mute', [player, flag]);\n      player.trigger('volume', [player, flag ? 0 : api.volume]);\n    },\n\n    pause: function() {\n      api.pause();\n    },\n\n    resume: function() {\n      api.play();\n    },\n\n    speed: function(val) {\n      api.playbackRate = val;\n    },\n\n    seek: function(time) {\n      var pausedState = api.paused || player.finished;\n      try {\n        api.currentTime = time;\n        if (pausedState) bean.one(api, 'seeked', function() { api.pause(); });\n      } catch (ignored) {}\n    },\n\n    volume: function(level) {\n      volumeLevel = level;\n      if (api) {\n        api.volume = level;\n        if (level) self.mute(false);\n      }\n    },\n\n    unload: function() {\n      bean.off(document, 'scroll.preloadviewport');\n      common.find('video.fp-engine', root).forEach(function (videoTag) {\n        if ('MediaSource' in window) {\n          videoTag.src = URL.createObjectURL(new MediaSource());\n        } else {\n          videoTag.src = '';\n        }\n        common.removeNode(videoTag);\n      });\n      timer = clearInterval(timer);\n      var instanceId = root.getAttribute('data-flowplayer-instance-id');\n      delete api.listeners[instanceId];\n      api = 0;\n      if (self._listeners) Object.keys(self._listeners).forEach(function(typ) {\n        self._listeners[typ].forEach(function(l) {\n          root.removeEventListener(typ, l, true);\n        });\n      });\n    }\n  };\n\n  function listen(api, sources, video, extra) {\n      // listen only once\n    var instanceId = root.getAttribute('data-flowplayer-instance-id');\n\n    if (api.listeners && api.listeners.hasOwnProperty(instanceId)) {\n      api.listeners[instanceId] = video;\n      return;\n    }\n    (api.listeners || (api.listeners = {}))[instanceId] = video;\n\n    bean.on(sources, 'error', function(e) {\n      try {\n        if (canPlay(e.target.getAttribute('type'))) {\n          player.trigger('error', [player, { code: 4, video: extend(video, {src: api.src, url: api.src}) }]);\n        }\n      } catch (er) {\n         // Most likely: https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n      }\n    });\n\n    player.on('shutdown', function() {\n      bean.off(sources);\n      bean.off(api, '.dvrhack');\n      player.off('.loophack');\n    });\n\n    var eventListeners = {};\n    //Special event handling for HLS metadata events\n\n    var listenMetadata = function(track) {\n      if (track.kind !== 'metadata') return;\n      track.mode = 'hidden';\n      track.addEventListener('cuechange', function() {\n        if (!track.activeCues.length) return;\n        player.trigger('metadata', [player, track.activeCues[0].value]);\n      }, false);\n    };\n\n    if (api && api.textTracks && api.textTracks.length) Array.prototype.forEach.call(api.textTracks, listenMetadata);\n    if (api && api.textTracks && typeof api.textTracks.addEventListener === 'function') api.textTracks.addEventListener('addtrack', function(tev) {\n      listenMetadata(tev.track);\n    }, false);\n    if (player.conf.dvr || player.dvr || video.dvr) {\n      bean.on(api, 'progress.dvrhack', function() {\n        if (!api.seekable.length) return;\n        player.video.duration = api.seekable.end(null);\n        player.video.seekOffset = api.seekable.start(null);\n        player.trigger('dvrwindow', [player, {\n          start: api.seekable.start(null),\n          end: api.seekable.end(null)\n        }]);\n        if (api.currentTime >= api.seekable.start(null)) return;\n        api.currentTime = api.seekable.start(null);\n      });\n    }\n\n    Object.keys(EVENTS).forEach(function(type) {\n      var flow = EVENTS[type];\n      if (type === 'webkitendfullscreen' && player.conf.disableInline) flow = 'unload';\n      if (!flow) return;\n      var l = function(e) {\n        video = api.listeners[instanceId];\n        if (!e.target || !common.hasClass(e.target, 'fp-engine')) return;\n\n        if (!/progress/.test(flow)) player.debug(type, '->', flow, e);\n\n        var triggerEvent = function(f) {\n          player.trigger(f || flow, [player, arg]);\n        };\n\n        // no events if player not ready\n        if (!player.ready && !/ready|error/.test(flow) || !flow || !common.find('video', root).length) {\n          if (flow === 'resume') player.one('ready', function() { setTimeout(function() { triggerEvent(); }) });\n          return;\n        }\n        var arg;\n\n        if (flow === 'unload') { //Call player unload\n          player.unload();\n          return;\n        }\n\n        switch (flow) {\n\n        case 'ready':\n          if (player.ready) return player.debug('Player already ready, not sending duplicate ready event');\n          if ((!api.duration || api.duration === Infinity) && !player.live) return player.debug('No duration and VOD setup, not sending ready event');\n          arg = extend(video, {\n            duration: api.duration < Number.MAX_VALUE ? api.duration : 0,\n            width: api.videoWidth,\n            height: api.videoHeight,\n            url: api.currentSrc\n          });\n          arg.seekable = arg.duration;\n          player.debug('Ready: ', arg);\n\n          if (!player.live && !arg.duration && !support.hlsDuration && type === 'loadeddata') {\n            var durationChanged = function() {\n              arg.duration = api.duration;\n              try {\n                arg.seekable = api.seekable && api.seekable.end(null);\n\n              } catch (ignored) {}\n              triggerEvent();\n              api.removeEventListener('durationchange', durationChanged);\n              common.toggleClass(root, 'is-live', false);\n            };\n            api.addEventListener('durationchange', durationChanged);\n\n            // Ugly hack to handle broken Android devices\n            var timeUpdated = function() {\n              if (!player.ready && !api.duration) { // No duration even though the video already plays\n                arg.duration = 0;\n                common.addClass(root, 'is-live'); // Make UI believe it's live\n                triggerEvent();\n              }\n              api.removeEventListener('timeupdate', timeUpdated);\n            };\n            api.addEventListener('timeupdate', timeUpdated);\n            return;\n          }\n\n          break;\n\n        case 'progress': case 'seek':\n\n          if (api.currentTime > 0 || player.live) {\n            arg = Math.max(api.currentTime, 0);\n\n          } else if (flow === 'seek' && api.currentTime === 0) {\n            arg = 0;\n          } else if (flow == 'progress') {\n            return;\n          }\n          break;\n\n        case 'buffer':\n          arg = [];\n          for (var i=0; i < api.buffered.length; i++) {\n            arg.push({\n              start: api.buffered.start(i),\n              end: api.buffered.end(i)\n            });\n          }\n          if (api.buffered.length && api.buffered.end(null) === api.duration) triggerEvent('buffered');\n          break;\n\n        case 'speed':\n          arg = round(api.playbackRate);\n          break;\n\n        case 'volume':\n          arg = round(api.muted ? 0 : api.volume);\n          break;\n\n        case 'error':\n          try {\n            if (extra && extra.handlers && extra.handlers.error) {\n              var handled = extra.handlers.error(e, api);\n              if (handled) return;\n            }\n            arg = (e.srcElement || e.originalTarget).error;\n            arg.video = extend(video, {src: api.src, url: api.src});\n          } catch (er) {\n            // Most likely https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n            return;\n          }\n        }\n\n        triggerEvent();\n\n\n      };\n      root.addEventListener(type, l, true);\n      if (!eventListeners[type]) eventListeners[type] = [];\n      eventListeners[type].push(l);\n\n    });\n    return eventListeners;\n\n  }\n\n}\n\nmodule.exports = html5factory;\n\nfunction round(val, per) {\n  per = per || 100;\n  return Math.round(val * per) / per;\n}\n\nfunction isInViewport(elem) {\n  var rect = elem.getBoundingClientRect();\n\n  return (\n    rect.top >= 0 &&\n    rect.left >= 0 &&\n    rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) + rect.height && /*or $(window).height() */\n    rect.right <= (window.innerWidth || document.documentElement.clientWidth) + rect.width /*or $(window).width() */\n  );\n}\n\n},{\"../flowplayer\":31}],6:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer')\n  , common = flowplayer.common\n  , html5factory = _dereq_('./html5-factory');\n\nvar VIDEO = document.createElement('video');\n\nfunction getType(type) {\n   return /mpegurl/i.test(type) ? \"application/x-mpegurl\" : type;\n}\n\nfunction canPlay(type) {\n   if (!/^(video|application)/i.test(type))\n      type = getType(type);\n   return !!VIDEO.canPlayType(type).replace(\"no\", '');\n}\n\nvar engine;\n\nengine = function(player, root) {\n\n  return html5factory('html5', player, root, canPlay, function(video, api) {\n    if (api.currentSrc !== video.src) {\n      common.find('source', api).forEach(common.removeNode);\n      api.src = video.src;\n      api.type = video.type;\n    } else if (video.autoplay) {\n      api.load();\n    }\n\n  });\n};\n\n\nengine.canPlay = function(type) {\n  return flowplayer.support.video && canPlay(type);\n};\n\nengine.engineName = 'html5';\n\nflowplayer.engines.push(engine);\n\n},{\"../flowplayer\":31,\"./html5-factory\":5}],7:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , bean = _dereq_('bean');\n\nflowplayer(function(api, root) {\n  api.on('ready', function() {\n    var el = common.find('video.fp-engine', root)[0];\n    if (!el) return;\n    el.setAttribute('x-webkit-airplay', 'allow');\n\n    if (!window.WebKitPlaybackTargetAvailabilityEvent) return;\n    el.addEventListener('webkitplaybacktargetavailabilitychanged', function(ev) {\n      if (ev.availability !== 'available') return;\n      var btnContainer = common.find('.fp-header', root)[0];\n      common.find('.fp-airplay', btnContainer).forEach(common.removeNode);\n      var trigger = common.createElement('a', { 'class': 'fp-airplay fp-icon', title: 'Play on AirPlay device'})\n      btnContainer.insertBefore(trigger, common.find('.fp-fullscreen', btnContainer)[0]);\n\n    });\n\n    el.addEventListener('webkitcurrentplaybacktargetiswirelesschanged', function() {\n      var trigger = common.find('.fp-airplay', root)[0];\n      if (!trigger) return;\n      common.toggleClass(trigger, 'fp-active', el.webkitCurrentPlaybackTargetIsWireless);\n    });\n\n  });\n\n  bean.on(root, 'click', '.fp-airplay', function(ev) {\n    ev.preventDefault();\n    var video = common.find('video.fp-engine', root)[0];\n    video.webkitShowPlaybackTargetPicker();\n  });\n\n\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],8:[function(_dereq_,module,exports){\n'use strict';\n/* global _gat */\nvar flowplayer = _dereq_('../flowplayer'),\n    TYPE_RE = _dereq_('./resolve').TYPE_RE,\n    scriptjs = _dereq_('scriptjs'),\n    bean = _dereq_('bean');\nflowplayer(function(player, root) {\n\n   var id = player.conf.analytics, time = 0, last = 0, timer;\n\n   if (id) {\n\n      // load Analytics script if needed\n      if (typeof _gat == 'undefined') scriptjs(\"//google-analytics.com/ga.js\");\n\n      var getTracker = function() {\n        var tracker = _gat._getTracker(id);\n        tracker._setAllowLinker(true);\n        return tracker;\n      };\n\n      var  track = function track(e, api, video) {\n\n         video = video || player.video;\n\n         if (time && typeof _gat != 'undefined') {\n            var tracker = getTracker();\n\n\n            // http://code.google.com/apis/analytics/docs/tracking/eventTrackerGuide.html\n            tracker._trackEvent(\n               \"Video / Seconds played\",\n               player.engine.engineName + \"/\" + video.type,\n               video.title || root.getAttribute(\"title\") || video.src.split(\"/\").slice(-1)[0].replace(TYPE_RE, ''),\n               Math.round(time / 1000)\n            );\n            time = 0;\n            if (timer) {\n              clearTimeout(timer);\n              timer = null;\n            }\n         }\n\n      };\n\n      player.bind(\"load unload\", track).bind(\"progress\", function() {\n\n         if (!player.seeking) {\n            time += last ? (+new Date() - last) : 0;\n            last = +new Date();\n         }\n\n         if (!timer) {\n           timer = setTimeout(function() {\n             timer = null;\n             var tracker = getTracker();\n             tracker._trackEvent('Flowplayer heartbeat', 'Heartbeat', '', 0, true);\n           }, 10*60*1000); // heartbeat every 10 minutes\n         }\n\n      }).bind(\"pause\", function() {\n         last = 0;\n      });\n\n      player.bind('shutdown', function() {\n        bean.off(window, 'unload', track);\n      });\n\n      bean.on(window, 'unload', track);\n\n   }\n\n});\n\n},{\"../flowplayer\":31,\"./resolve\":21,\"bean\":34,\"scriptjs\":45}],9:[function(_dereq_,module,exports){\n/* global chrome */\n/* eslint-disable no-console */\n\n'use strict';\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , bean = _dereq_('bean')\n  , scriptjs = _dereq_('scriptjs');\n\n\n\nflowplayer(function(api, root) {\n  if (api.conf.chromecast === false) return;\n  scriptjs('https://www.gstatic.com/cv/js/sender/v1/cast_sender.js');\n  window['__onGCastApiAvailable'] = function(loaded) {\n    if (!loaded) return;\n    initialize();\n  };\n\n  var conf = api.conf.chromecast || {}\n    , session\n    , timer\n    , trigger;\n\n  function initialize() {\n    var applicationId, sessionRequest, apiConfig;\n    applicationId = conf.applicationId || chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID;\n    sessionRequest = new chrome.cast.SessionRequest(applicationId);\n    apiConfig = new chrome.cast.ApiConfig(\n      sessionRequest,\n      sessionListener,\n      receiverListener\n    );\n    chrome.cast.initialize(apiConfig, onInitSuccess, onError);\n  }\n\n  function sessionListener() {\n    console.log('sessionListener');\n  }\n\n  function receiverListener(ev) {\n    if (ev !== chrome.cast.ReceiverAvailability.AVAILABLE) return;\n    createUIElements();\n  }\n\n  function onInitSuccess() {\n    /* noop */\n  }\n\n  function onError() {\n    console.log('onError');\n  }\n\n  function createUIElements() {\n    var btnContainer = common.find('.fp-header', root)[0];\n    if (!btnContainer) return; // UI no more available\n    common.find('.fp-chromecast', btnContainer).forEach(common.removeNode);\n    common.find('.fp-chromecast-engine', root).forEach(common.removeNode);\n    trigger = common.createElement('a', { 'class': 'fp-chromecast fp-icon', title: 'Play on Cast device'})\n    btnContainer.insertBefore(trigger, common.find('.fp-fullscreen', btnContainer)[0]);\n    var chromeCastEngine = common.createElement('div', { 'class': 'fp-chromecast-engine' })\n      , chromeCastStatus = common.createElement('p', { 'class': 'fp-chromecast-engine-status' })\n      , chromeCastIcon = common.createElement('p', { 'class': 'fp-chromecast-engine-icon' });\n    chromeCastEngine.appendChild(chromeCastIcon);\n    chromeCastEngine.appendChild(chromeCastStatus);\n    var engine = common.find('.fp-engine', root)[0];\n    if (!engine) common.prepend(common.find('.fp-player', root)[0] || root, chromeCastEngine);\n    else engine.parentNode.insertBefore(chromeCastEngine, engine);\n  }\n\n  function destroy() {\n    clearInterval(timer);\n    timer = null;\n    api.release();\n    common.toggleClass(root, 'is-chromecast', false);\n    common.toggleClass(trigger, 'fp-active', false);\n  }\n\n  bean.on(root, 'click', '.fp-chromecast', function(ev) {\n    ev.preventDefault();\n    if (session) {\n      api.trigger('pause', [api]);\n      session.stop();\n      session = null;\n      destroy();\n      return;\n    }\n    if (api.playing) api.pause();\n    chrome.cast.requestSession(function(s) {\n      session = s;\n      var receiverName = session.receiver.friendlyName;\n      common.html(common.find('.fp-chromecast-engine-status')[0], 'Playing on device ' + receiverName);\n      var mediaInfo = new chrome.cast.media.MediaInfo(api.video.src);\n      var request = new chrome.cast.media.LoadRequest(mediaInfo);\n      session.loadMedia(request, onMediaDiscovered, function onMediaError() { });\n\n      function onMediaDiscovered(media) {\n        media.addUpdateListener(function(alive) {\n          if (!session) return; // Already destoryed\n          timer = timer || setInterval(function() {\n            api.trigger('progress', [api, media.getEstimatedTime()]);\n          }, 500);\n          if (!alive) {\n            destroy();\n            api.trigger('finish', [api]);\n          } else {\n            common.toggleClass(root, 'is-chromecast', true);\n            common.toggleClass(trigger, 'fp-active', true);\n            api.hijack({\n              pause: function() {\n                media.pause();\n              },\n              resume: function() {\n                media.play();\n              },\n              seek: function(time) {\n                var req = new chrome.cast.media.SeekRequest();\n                req.currentTime = time;\n                media.seek(req);\n              }\n            });\n          }\n          var playerState = media.playerState;\n          if (api.paused && playerState === chrome.cast.media.PlayerState.PLAYING) api.trigger('resume', [api]);\n          if (api.playing && playerState === chrome.cast.media.PlayerState.PAUSED) api.trigger('pause', [api]);\n          common.toggleClass(root, 'is-loading', playerState === chrome.cast.media.PlayerState.BUFFERING);\n        });\n      }\n    }, function(err) {\n      console.error('requestSession error', err);\n    });\n  });\n\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34,\"scriptjs\":45}],10:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    common = _dereq_('../common'),\n    bean = _dereq_('bean');\n\nflowplayer(function(player, root) {\n\n   var CUE_RE = / ?cue\\d+ ?/;\n\n   var cuepointsDisabled = false;\n\n   function setClass(index) {\n      root.className = root.className.replace(CUE_RE, \" \");\n      if (index >= 0) common.addClass(root, 'cue' + index);\n   }\n\n   var segments = {}, lastFiredSegment = -0.125;\n\n   var fire = function(cue) {\n     setClass(cue.index);\n     player.trigger('cuepoint', [player, cue]);\n   };\n\n   player.on(\"progress\", function(e, api, time) {\n      if (cuepointsDisabled) return;\n      var segment = segmentForCue(time);\n      while (lastFiredSegment < segment) {\n        lastFiredSegment += 0.125;\n        if (!segments[lastFiredSegment]) continue;\n        segments[lastFiredSegment].forEach(fire);\n      }\n\n   }).on(\"unload\", setClass)\n   .on('beforeseek', function(ev) {\n     setTimeout(function() {\n       if (!ev.defaultPrevented) cuepointsDisabled = true;\n     });\n   }).on(\"seek\", function(ev, api, time) {\n     setClass();\n     lastFiredSegment = segmentForCue(time || 0) - 0.125;\n     cuepointsDisabled = false;\n     if (!time && segments[0]) segments[0].forEach(fire);\n   }).on('ready', function(e, api, video) {\n     lastFiredSegment = -0.125;\n     var cues = video.cuepoints || player.conf.cuepoints || [];\n     player.setCuepoints(cues);\n   }).on('finish', function() {\n      var segment = segmentForCue(player.video.duration);\n      while (lastFiredSegment < segment) {\n        lastFiredSegment += 0.125;\n        if (!segments[lastFiredSegment]) continue;\n        segments[lastFiredSegment].forEach(fire);\n      }\n     lastFiredSegment = -0.125;\n   });\n   if (player.conf.generate_cuepoints) {\n\n      player.bind(\"load\", function() {\n\n         // clean up cuepoint elements of previous playlist items\n         common.find('.fp-cuepoint', root).forEach(common.removeNode);\n\n      });\n   }\n\n   /**\n    * API\n    */\n   player.setCuepoints = function(cues) {\n     player.cuepoints = [];\n     segments = {};\n     cues.forEach(player.addCuepoint);\n     return player;\n   };\n   player.addCuepoint = function(cue) {\n     if (!player.cuepoints) player.cuepoints = [];\n     if (typeof cue === 'number') {\n       cue = {\n          time: cue,\n       };\n     }\n     cue.index = 0;\n     var segment = segmentForCue(cue);\n     if (!segments[segment]) segments[segment] = [];\n     segments[segment].push(cue);\n     if (player.cuepoints.length) cue.index = Math.max.apply(null, player.cuepoints.map(function(cue) { return cue.index; })) + 1;\n     player.cuepoints.push(cue);\n\n    if (player.conf.generate_cuepoints && cue.visible !== false) {\n       var duration = player.video.duration,\n           timeline = common.find('.fp-timeline', root)[0];\n        common.css(timeline, \"overflow\", \"visible\");\n\n        var time = cue.time || cue;\n        if (time < 0) time = duration + time;\n\n        var el = common.createElement('a', {className: 'fp-cuepoint fp-cuepoint' + cue.index});\n        common.css(el, \"left\", (time / duration * 100) + \"%\");\n\n        timeline.appendChild(el);\n        bean.on(el, 'mousedown', function(e) {\n          e.preventDefault();\n          e.stopPropagation();\n          player.seek(time);\n        });\n    }\n    return player;\n   };\n\n   player.removeCuepoint = function(cue) {\n     if (typeof cue === 'number') cue = player.cuepoints.filter(function(c) { return c.index === cue; })[0];\n     var idx = player.cuepoints.indexOf(cue),\n         segment = segmentForCue(cue);\n     if (idx === -1) return;\n      player.cuepoints = player.cuepoints.slice(0, idx).concat(player.cuepoints.slice(idx+1));\n\n      var timeline = common.find('.fp-timeline', root)[0];\n\n      common.find('.fp-cuepoint' + cue.index, timeline).forEach(common.removeNode);\n\n     var sIdx = segments[segment].indexOf(cue);\n     if (sIdx === -1) return;\n     segments[segment] = segments[segment].slice(0, sIdx).concat(segments[segment].slice(sIdx+1));\n     return player;\n   };\n\n   function segmentForCue(cue) {\n     var time = cue && !isNaN(cue.time) ? cue.time : cue;\n     if (time < 0) time = player.video.duration + time;\n     return Math.round(time/0.125)*0.125;\n   }\n\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],11:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    bean = _dereq_('bean'),\n    common = _dereq_('../common'),\n    clipboard = _dereq_('./util/clipboard');\n\nflowplayer(function(player, root) {\n\n   // no embedding\n   if (player.conf.embed === false || player.conf.share === false) return;\n\n   var btnContainer = common.find('.fp-share-menu', root)[0],\n      trigger = common.createElement('a', { \"class\": \"fp-icon fp-embed\", title: 'Copy to your site'}, 'Embed');\n\n   common.append(btnContainer, trigger);\n  //ui.appendChild(target);\n\n   player.embedCode = function() {\n     var embedConf = player.conf.embed || {},\n         video = player.video,\n         width = embedConf.width || video.width || common.width(root),\n         height = embedConf.height || video.height || common.height(root),\n         ratio = player.conf.ratio,\n         itrunc = '<iframe src=\"' + player.shareUrl(true) + '\" allowfullscreen style=\"border:none;';\n\n     if (embedConf.width || embedConf.height) {\n        if (!isNaN(width)) width += 'px';\n        if (!isNaN(height)) height += 'px';\n        return itrunc + 'width:' + width + ';height:' + height + ';\"></iframe>';\n     }\n\n     if (!ratio || player.conf.adaptiveRatio) ratio = height / width;\n     return '<div style=\"position:relative;width:100%;display:inline-block;\">' + itrunc + 'position:absolute;top:0;left:0;width:100%;height:100%;\"></iframe><div style=\"padding-top:' + (ratio * 100) + '%;\"></div></div>';\n   };\n\n   bean.on(root, 'click', '.fp-embed', function() {\n     clipboard(player.embedCode(), function() {\n       player.message('The embed code is now on your clipboard', 2000);\n     }, function() {\n       player.textarea(player.embedCode(), 'Copy the code below to embed your video');\n     });\n   });\n\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"./util/clipboard\":30,\"bean\":34}],12:[function(_dereq_,module,exports){\n'use strict';\n/**\n * Mimimal jQuery-like event emitter implementation\n */\nmodule.exports = function(obj, elem) {\n  if (!elem) elem = document.createElement('div'); //In this case we always want to trigger (Custom)Events on dom element\n  var handlers = {}, eventArguments = {};\n\n  var listenEvent = function(type, hndlr, disposable) {\n    var actualEvent = type.split('.')[0]; //Strip namespace\n    var internalHandler = function(ev) {\n      if (disposable) {\n        elem.removeEventListener(actualEvent, internalHandler);\n        handlers[type].splice(handlers[type].indexOf(internalHandler), 1);\n      }\n      var args = [ev].concat(eventArguments[ev.timeStamp + ev.type] || []);\n      if (hndlr) hndlr.apply(undefined, args);\n    };\n    elem.addEventListener(actualEvent, internalHandler);\n\n    //Store handlers for unbinding\n    if (!handlers[type]) handlers[type] = [];\n    handlers[type].push(internalHandler);\n  };\n\n  obj.on = obj.bind = function(typ, hndlr) {\n    var types = typ.split(' ');\n    types.forEach(function(type) {\n      listenEvent(type, hndlr);\n    });\n    return obj; //for chaining\n  };\n\n  obj.one = function(typ, hndlr) {\n    var types = typ.split(' ');\n    types.forEach(function(type) {\n      listenEvent(type, hndlr, true);\n    });\n    return obj;\n  };\n\n  // Function to check if all items in toBeContained array are in the containing array\n  var containsAll = function(containing, toBeContained) {\n    return toBeContained.filter(function(i) {\n      return containing.indexOf(i) === -1;\n    }).length === 0;\n  };\n\n\n  obj.off = obj.unbind = function(typ) {\n    var types = typ.split(' ');\n    types.forEach(function(type) {\n      var typeNameSpaces = type.split('.').slice(1),\n          actualType = type.split('.')[0];\n      Object.keys(handlers).filter(function(t) {\n        var handlerNamespaces = t.split('.').slice(1);\n        return (!actualType || t.indexOf(actualType) === 0) && containsAll(handlerNamespaces, typeNameSpaces);\n      }).forEach(function(t) {\n        var registererHandlers = handlers[t],\n            actualEvent = t.split('.')[0];\n        handlers[t] = registererHandlers.filter(function(hndlr) {\n          elem.removeEventListener(actualEvent, hndlr);\n          return false;\n        });\n      });\n    });\n    return obj;\n  };\n\n  obj.trigger = function(typ, args, returnEvent) {\n    if (!typ) return;\n    args = (args || []).length ? args || [] : [args];\n    var event = document.createEvent('Event'), typStr;\n    typStr = typ.type || typ;\n    event.initEvent(typStr, false, true);\n    if (Object.defineProperty) event.preventDefault = function() {\n      Object.defineProperty(this, 'defaultPrevented', { get: function() { return true; } });\n    };\n    eventArguments[event.timeStamp + event.type] = args;\n    elem.dispatchEvent(event);\n    return returnEvent ? event : obj;\n  };\n};\n\n\nmodule.exports.EVENTS = [\n  'beforeseek',\n  'disable',\n  'error',\n  'finish',\n  'fullscreen',\n  'fullscreen-exit',\n  'load',\n  'mute',\n  'pause',\n  'progress',\n  'ready',\n  'resume',\n  'seek',\n  'speed',\n  'stop',\n  'unload',\n  'volume',\n  'boot',\n  'shutdown'\n];\n\n},{}],13:[function(_dereq_,module,exports){\n'use strict';\n\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , bean = _dereq_('bean');\n\nflowplayer(function(api, root) {\n  var c = api.conf;\n\n  if (c.share === false || !c.facebook) return;\n\n  api.facebook = function() {\n    var left\n      , top\n      , width = 550\n      , height = 420\n      , winHeight = screen.height\n      , winWidth = screen.width\n      , windowOptions = 'scrollbars=yes,resizable=yes,toolbar=no,location=yes'\n      , shareUrl = typeof c.facebook === 'string' ? c.facebook : window.location.toString();\n    left = Math.round((winWidth / 2) - (width / 2));\n    top = 0;\n    if (winHeight > height) {\n      top = Math.round((winHeight / 2) - (height / 2));\n    }\n    window.open(\n      'https://www.facebook.com/sharer.php?s=100&p[url]=' + encodeURIComponent(shareUrl),\n      'sharer',\n      windowOptions + ',width=' + width + ',height=' + height + ',left=' + left + ',top=' + top\n    );\n  };\n\n  var btnContainer = common.find('.fp-share-menu', root)[0]\n    , trigger = common.createElement('a', { \"class\": \"fp-icon fp-facebook\"}, 'Facebook');\n\n  common.append(btnContainer, trigger);\n\n  bean.on(root, 'click', '.fp-facebook', function() {\n    api.facebook();\n  });\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],14:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    bean = _dereq_('bean'),\n    common = _dereq_('../common'),\n   FS_ENTER = \"fullscreen\",\n   FS_EXIT = \"fullscreen-exit\",\n   FULL_PLAYER,\n   FS_SUPPORT = flowplayer.support.fullscreen;\n\n// esc button\nbean.on(document, \"fullscreenchange.ffscr webkitfullscreenchange.ffscr mozfullscreenchange.ffscr MSFullscreenChange.ffscr\", function(e) {\n  var el = document.webkitCurrentFullScreenElement || document.mozFullScreenElement || document.fullscreenElement || document.msFullscreenElement || e.target;\n  if (!FULL_PLAYER && (!el.parentNode || !el.parentNode.getAttribute('data-flowplayer-instance-id'))) return;\n  var player = FULL_PLAYER || flowplayer(el.parentNode);\n  if (el && !FULL_PLAYER) {\n     FULL_PLAYER = player.trigger(FS_ENTER, [player]);\n  } else {\n     FULL_PLAYER.trigger(FS_EXIT, [FULL_PLAYER]);\n     FULL_PLAYER = null;\n  }\n });\n\nflowplayer(function(player, root) {\n\n   var wrapper = common.createElement('div', {className: 'fp-player'});\n   Array.prototype.map.call(root.children, common.identity).forEach(function(el) {\n     if (common.matches(el, '.fp-ratio,script')) return;\n     wrapper.appendChild(el);\n   });\n   root.appendChild(wrapper);\n\n   if (!player.conf.fullscreen) return;\n\n   var win = window,\n      scrollY,\n      scrollX;\n\n   player.isFullscreen = false;\n\n   player.fullscreen = function(flag) {\n\n      if (player.disabled) return;\n\n      if (flag === undefined) flag = !player.isFullscreen;\n\n      if (flag) {\n        scrollY = win.scrollY;\n        scrollX = win.scrollX;\n      }\n\n      if (FS_SUPPORT) {\n\n         if (flag) {\n            ['requestFullScreen', 'webkitRequestFullScreen', 'mozRequestFullScreen', 'msRequestFullscreen'].forEach(function(fName) {\n               if (typeof wrapper[fName] === 'function') {\n                 wrapper[fName](Element.ALLOW_KEYBOARD_INPUT);\n                 if (fName === 'webkitRequestFullScreen' && !document.webkitFullscreenElement) wrapper[fName]();\n               }\n            });\n\n         } else {\n            ['exitFullscreen', 'webkitCancelFullScreen', 'mozCancelFullScreen', 'msExitFullscreen'].forEach(function(fName) {\n              if (typeof document[fName] === 'function') {\n                document[fName]();\n              }\n            });\n         }\n\n      } else {\n         player.trigger(flag ? FS_ENTER : FS_EXIT, [player]);\n      }\n\n      return player;\n   };\n\n   var lastClick;\n\n   player.on(\"mousedown.fs\", function() {\n      if (+new Date() - lastClick < 150 && player.ready) player.fullscreen();\n      lastClick = +new Date();\n   });\n\n  player.on(FS_ENTER, function() {\n      common.addClass(root, 'is-fullscreen');\n      common.toggleClass(root, 'fp-minimal-fullscreen', common.hasClass(root, 'fp-minimal'));\n      common.removeClass(root, 'fp-minimal');\n\n      if (!FS_SUPPORT) common.css(root, 'position', 'fixed');\n      player.isFullscreen = true;\n\n   }).on(FS_EXIT, function() {\n      var oldOpacity;\n      common.toggleClass(root, 'fp-minimal', common.hasClass(root, 'fp-minimal-fullscreen'));\n      common.removeClass(root, 'fp-minimal-fullscreen');\n      if (!FS_SUPPORT && player.engine === \"html5\") {\n        oldOpacity = root.css('opacity') || '';\n        common.css(root, 'opacity', 0);\n      }\n      if (!FS_SUPPORT) common.css(root, 'position', '');\n\n      common.removeClass(root, 'is-fullscreen');\n      if (!FS_SUPPORT && player.engine === \"html5\") setTimeout(function() { root.css('opacity', oldOpacity); });\n      player.isFullscreen = false;\n      win.scrollTo(scrollX, scrollY);\n   }).on('unload', function() {\n     if (player.isFullscreen) player.fullscreen();\n   });\n\n   player.on('shutdown', function() {\n     FULL_PLAYER = null;\n     common.removeNode(wrapper);\n   });\n\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],15:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    bean = _dereq_('bean'),\n    focused,\n    focusedRoot,\n    IS_HELP = \"is-help\",\n    common = _dereq_('../common');\n\n // keyboard. single global listener\nbean.on(document, \"keydown.fp\", function(e) {\n\n   var el = focused,\n      metaKeyPressed = e.ctrlKey || e.metaKey || e.altKey,\n      key = e.which,\n      conf = el && el.conf;\n\n   if (!el || !conf.keyboard || el.disabled) return;\n\n   if (!metaKeyPressed && el.ready) {\n\n      // slow motion / fast forward\n      if (e.shiftKey) {\n         if (key == 39) el.speed(true);\n         else if (key == 37) el.speed(false);\n         return e.preventDefault();\n      }\n\n      // 1, 2, 3, 4 ..\n      if (key < 58 && key > 47) {\n         e.preventDefault();\n         return el.seekTo(key - 48);\n      }\n\n      var handled = (function() {\n         switch (key) {\n            case 38: case 75: el.volume(el.volumeLevel + 0.15); return true;        // volume up\n            case 40: case 74: el.volume(el.volumeLevel - 0.15); return true;        // volume down\n            case 39: case 76: el.seeking = true; el.seek(true); return true;        // forward\n            case 37: case 72: el.seeking = true; el.seek(false); return true;       // backward\n            case 190: el.seekTo(); return true;                                     // to last seek position\n            case 32: el.toggle(); return true;                                      // spacebar\n            case 70: if(conf.fullscreen) el.fullscreen(); return true;              // toggle fullscreen\n            case 77: el.mute(); return true;                                        // mute\n            case 81: el.unload(); return true;                                      // unload/stop\n         }\n      })();\n      if (handled) e.preventDefault();\n   }\n\n});\n\nflowplayer(function(api, root) {\n\n   // no keyboard configured\n   if (!api.conf.keyboard) return;\n\n   bean.on(document, 'click', function(ev) {\n      if (common.hasParent(ev.target, root)) {\n         focused = !api.disabled ? api : 0;\n      } else {\n         if (focused !== api) return;\n         focused = 0;\n      }\n      if (focused) focusedRoot = root;\n   });\n\n   api.bind('shutdown', function() {\n     if (focusedRoot == root) focusedRoot = null;\n   });\n\n});\n\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],16:[function(_dereq_,module,exports){\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , bean = _dereq_('bean');\n\nflowplayer(function(api, root) {\n  api.showMenu = function(menu, triggerElement) {\n    var ui = common.find('.fp-ui', root)[0];\n    common.toggleClass(menu, 'fp-active', true);\n    setTimeout(function() {\n      bean.one(document, 'click', function() {\n        api.hideMenu(menu);\n      });\n    });\n    var coordinates = triggerElement;\n    if (triggerElement && triggerElement.tagName) {\n      coordinates = {\n        left: common.offset(triggerElement).left,\n        rightFallbackOffset: common.width(triggerElement),\n        top: common.offset(triggerElement).top + common.height(triggerElement)\n      };\n    }\n    if (!coordinates) return common.css(menu, 'top', 'auto');\n    coordinates.rightFallbackOffset = coordinates.rightFallbackOffset || 0;\n    var top = coordinates.top - common.offset(ui).top\n      , left = coordinates.left - common.offset(ui).left\n    if (common.width(menu) + left > common.width(ui)) left = left - common.width(menu) + coordinates.rightFallbackOffset;\n    if (common.height(menu) + top > common.height(ui)) top = top - common.height(menu);\n    common.css(menu, {\n      top: top + 'px',\n      left: left + 'px',\n      right: 'auto'\n    });\n  };\n\n  api.hideMenu = function(menu) {\n    common.toggleClass(menu, 'fp-active', false);\n    common.css(menu, {\n      top: '-9999em'\n    });\n  };\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],17:[function(_dereq_,module,exports){\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , bean = _dereq_('bean');\nflowplayer(function(api, root) {\n  var header = common.find('.fp-header', root)[0]\n    , ui = common.find('.fp-ui', root)[0];\n\n  api.message = function(txt, ttl) {\n    var msg = createMessage(txt);\n    var dismiss = function() {\n      common.toggleClass(msg, 'fp-shown');\n      setTimeout(function() { removeMessage(msg); }, 500);\n    };\n    if (ttl) setTimeout(dismiss, ttl);\n    return dismiss;\n  }\n\n  api.textarea = function(txt) {\n    var area = document.createElement('textarea');\n    area.value = txt;\n    area.className = 'fp-textarea';\n    ui.appendChild(area);\n    bean.on(document, 'click.fptextarea', function(ev) {\n      if (ev.target === area) return area.select();\n      ev.stopPropagation();\n      ev.preventDefault();\n      common.removeNode(area);\n      bean.off(document, 'click.fptextarea');\n    });\n  }\n\n\n  function createMessage(txt) {\n    var msg = common.createElement('div', {\n      className: 'fp-message'\n    }, txt);\n    ui.insertBefore(msg, header);\n    setTimeout(function() { common.toggleClass(msg, 'fp-shown'); });\n    return msg;\n  }\n\n  function removeMessage(msg) {\n    common.removeNode(msg);\n  }\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],18:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    isIeMobile = /IEMobile/.test(window.navigator.userAgent),\n    common = _dereq_('../common'),\n    bean = _dereq_('bean'),\n    format = _dereq_('./ui').format,\n    support = flowplayer.support,\n    UA = window.navigator.userAgent;\nif (support.touch || isIeMobile) {\n\n   flowplayer(function(player, root) {\n      var android = support.android,\n          isAndroid = android && !android.firefox,\n          isSilk = /Silk/.test(UA),\n          androidVer = android.version || 0;\n\n      // custom load for android\n      if (isAndroid && !isIeMobile) {\n         if (!/Chrome/.test(UA) && androidVer < 4 || android.samsung && androidVer < 5) {\n            var originalLoad = player.load;\n            player.load = function() {\n               var ret = originalLoad.apply(player, arguments);\n               common.find('video.fp-engine', root)[0].load();\n               player.trigger('ready', [player, player.video]);\n               return ret;\n            };\n         }\n         var timer, currentTime = 0;\n         var resumeTimer = function(api) {\n           timer = setInterval(function() {\n             api.video.time = ++currentTime;\n             api.trigger('progress', [api, currentTime]);\n           }, 1000);\n         };\n         player.on('ready pause unload', function() {\n           if (timer) {\n             clearInterval(timer);\n             timer = null;\n           }\n         });\n         player.on('ready', function() {\n           currentTime = 0;\n         });\n         player.on('resume', function(ev, api) {\n           if (!api.live) return;\n           if (currentTime) { return resumeTimer(api); }\n           player.one('progress', function(ev, api, t) {\n             if (t === 0) { // https://github.com/flowplayer/flowplayer/issues/727\n               resumeTimer(api);\n             }\n           });\n         });\n      }\n\n      // hide volume\n      if (!support.volume) {\n        common.removeClass(root, 'fp-mute');\n        common.addClass(root, 'no-volume');\n      }\n      if (support.iOS) {\n         common.addClass(root, 'fp-mute');\n      }\n      common.addClass(root, 'is-touch');\n      if (player.sliders && player.sliders.timeline) player.sliders.timeline.disableAnimation();\n\n      // fake mouseover effect with click\n      var hasMoved = false;\n      bean.on(root, 'touchmove', function() {\n        hasMoved = true;\n      });\n      var initialClick = true;\n      bean.on(root, 'touchend click', function(e) {\n        if (hasMoved) { //not intentional, most likely scrolling\n          hasMoved = false;\n          return;\n        }\n\n        var video = common.find('video.fp-engine', root)[0];\n        if (initialClick && player.conf.clickToUnMute && video && video.muted && player.conf.autoplay) video.muted = false;\n         initialClick = false;\n\n        if (player.playing && !common.hasClass(root, 'is-mouseover')) {\n          common.addClass(root, 'is-mouseover');\n          common.removeClass(root, 'is-mouseout');\n          e.preventDefault();\n          e.stopPropagation();\n          return;\n        }\n\n        if (!player.playing && !player.splash && common.hasClass(root, 'is-mouseout') && !common.hasClass(root, 'is-mouseover')) {\n          setTimeout(function() {\n            if (!player.disabled && !player.playing && !player.splash) {\n              common.find('video.fp-engine', root)[0].play();\n            }\n          }, 400);\n        }\n\n\n      });\n\n      // native fullscreen\n      if (!support.fullscreen && player.conf.native_fullscreen && typeof common.createElement('video').webkitEnterFullScreen === 'function') {\n         var oldFullscreen = player.fullscreen;\n         player.fullscreen = function() {\n            var video = common.find('video.fp-engine', root)[0];\n            if (!video) return oldFullscreen.apply(player);\n            player.trigger('fullscreen', [player]);\n            bean.on(document, 'webkitfullscreenchange.nativefullscreen', function() {\n              if (document.webkitFullscreenElement !== video) return;\n              bean.off(document, '.nativefullscreen');\n              bean.on(document, 'webkitfullscreenchange.nativefullscreen', function() {\n                if (document.webkitFullscreenElement) return;\n                bean.off(document, '.nativefullscreen');\n                player.trigger('fullscreen-exit', [player]);\n              });\n            });\n            video.webkitEnterFullScreen();\n            bean.one(video, 'webkitendfullscreen', function() {\n              bean.off(document, 'fullscreenchange.nativefullscreen');\n              player.trigger('fullscreen-exit', [player]);\n              common.prop(video, 'controls', true);\n              common.prop(video, 'controls', false);\n            });\n         };\n      }\n\n\n      // Android browser gives video.duration == 1 until second 'timeupdate' event\n      if (isAndroid || isSilk) player.bind(\"ready\", function() {\n         var video = common.find('video.fp-engine', root)[0];\n         if (player.conf.splash && video.paused && player.engine.engineName !== 'hlsjs-lite') {\n            bean.one(video, 'canplay', function() {\n               video.play();\n            });\n            video.load();\n         }\n\n         player.bind(\"progress.dur\", function() {\n            if (player.live || player.conf.live) return;\n            var duration = video.duration;\n\n            if (duration !== 1) {\n               player.video.duration = duration;\n               common.find(\".fp-duration\", root)[0].innerHTML = format(duration);\n               player.unbind(\"progress.dur\");\n            }\n         });\n      });\n\n\n   });\n\n}\n\n\n},{\"../common\":1,\"../flowplayer\":31,\"./ui\":27,\"bean\":34}],19:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    extend = _dereq_('extend-object'),\n    bean = _dereq_('bean'),\n    common = _dereq_('../common'),\n    Resolve = _dereq_('./resolve'),\n    resolver = new Resolve(),\n    $ = window.jQuery,\n    externalRe = /^#/;\nflowplayer(function(player, root) {\n\n   var conf = extend({ active: 'is-active', advance: true, query: \".fp-playlist a\" }, player.conf)\n     , klass = conf.active\n     , ui = common.find('.fp-ui', root)[0];\n\n   var hasCustomPlaylist = common.hasClass(root, 'fp-custom-playlist') || !!conf.customPlaylist;\n   common.toggleClass(root, 'fp-custom-playlist', hasCustomPlaylist);\n   common.toggleClass(root, 'fp-default-playlist', !hasCustomPlaylist);\n\n   // getters\n   function els() {\n     return common.find(conf.query, queryRoot());\n   }\n\n   function queryRoot() {\n     if (externalRe.test(conf.query)) return;\n     return root;\n   }\n\n   function active() {\n      return common.find(conf.query + \".\" + klass, queryRoot());\n   }\n\n\n   player.play = function(i) {\n      if (i === undefined) return player.resume();\n      if (typeof i === 'number' && !player.conf.playlist[i]) return player;\n      else if (typeof i != 'number') return player.load.apply(null, arguments);\n      var arg = extend({index: i}, player.conf.playlist[i]);\n      player.off('beforeresume.fromfirst'); // Don't start from beginning if clip explicitely chosen\n      if (typeof i === 'number' && i === player.video.index) return player.seek(0, function() { player.resume(); });\n      player.load(arg, function() {\n        player.video.index = i;\n      });\n      return player;\n   };\n\n   player.next = function(e) {\n      if (e) e.preventDefault();\n      var current = player.video.index;\n      if (current != -1) {\n         current = current === player.conf.playlist.length - 1 ? 0 : current + 1;\n         player.play(current);\n      }\n      return player;\n   };\n\n   player.prev = function(e) {\n      if (e) e.preventDefault();\n      var current = player.video.index;\n      if (current != -1) {\n         current = current === 0 ? player.conf.playlist.length - 1 : current - 1;\n         player.play(current);\n      }\n      return player;\n   };\n\n   player.setPlaylist = function(items, keepCurrentIndex) {\n     player.conf.playlist = items;\n     if (!keepCurrentIndex) delete player.video.index;\n     generatePlaylist();\n     return player;\n   };\n\n   player.addPlaylistItem = function(item) {\n     delete player.video.is_last;\n     return player.setPlaylist(player.conf.playlist.concat([item]), true);\n   };\n\n   player.removePlaylistItem = function(idx) {\n     var pl = player.conf.playlist;\n     return player.setPlaylist(pl.slice(0, idx).concat(pl.slice(idx+1)));\n   };\n\n   bean.on(root, 'click', '.fp-next', player.next);\n   bean.on(root, 'click', '.fp-prev', player.prev);\n\n   player.off(\"finish.pl\").on(\"finish.pl\", function(e, player) {\n      var advance = typeof player.conf.advance === 'undefined' ? true : player.conf.advance;\n      if (!advance) return;\n      // clip looping\n      if (player.video.loop) return player.seek(0, function() { player.resume(); });\n      // next clip is found or loop\n      var next = player.video.index >= 0 ? player.video.index + 1 : undefined;\n      if (next < player.conf.playlist.length || conf.loop) {\n         next = next === player.conf.playlist.length ? 0 : next;\n         common.removeClass(root, 'is-finished');\n         setTimeout(function() { // Let other finish callbacks fire first\n            player.play(next);\n         });\n\n      // stop to last clip, play button starts from 1:st clip\n      } else {\n\n         // If we have multiple items in playlist, start from first\n         if (player.conf.playlist.length > 1) {\n           player.one(\"beforeresume.fromfirst\", function(ev) {\n             ev.preventDefault();\n             player.play(0);\n           });\n           player.one('seek', function() { player.off('beforeresume.fromfirst'); });\n         }\n      }\n   });\n\n   function generatePlaylist() {\n      var plEl = common.find('.fp-playlist', root)[0]\n      if (!plEl) {\n         plEl = common.createElement('div', {className: 'fp-playlist'});\n         var cntrls = common.find('.fp-next,.fp-prev', root);\n         if (!cntrls.length) common.insertAfter(root, common.find('video', root)[0], plEl);\n         else cntrls[0].parentElement.insertBefore(plEl, cntrls[0]);\n      }\n      plEl.innerHTML = '';\n      if (player.conf.playlist[0].length) { // FP5 style playlist\n        player.conf.playlist = player.conf.playlist.map(function(itm) {\n          if (typeof itm === 'string') {\n            var type = itm.split(Resolve.TYPE_RE)[1];\n            return {\n              sources: [{\n                type: type.toLowerCase() === 'm3u8' ? 'application/x-mpegurl' : 'video/' + type,\n                src: itm\n              }]\n            };\n          }\n          return {\n            sources: itm.map(function(src) {\n              var s = {};\n              Object.keys(src).forEach(function(k) {\n                s.type = /mpegurl/i.test(k) ? 'application/x-mpegurl' : 'video/' + k;\n                s.src = src[k];\n              });\n              return s;\n            })\n          };\n        });\n      }\n      player.conf.playlist.forEach(function(item, i) {\n         var href = item.sources[0].src;\n         plEl.appendChild(common.createElement('a', {\n            href: href,\n            className: player.video.index === i ? klass : undefined,\n            'data-index': i\n         }));\n      });\n   }\n\n   var playlistInitialized = false;\n   if (player.conf.playlist.length) { // playlist configured by javascript, generate playlist\n      playlistInitialized = true;\n      generatePlaylist();\n      if (!player.conf.clip || !player.conf.clip.sources.length) {\n        player.conf.clip = player.conf.playlist[player.conf.startIndex || 0];\n      }\n   }\n\n   if (els().length && !playlistInitialized) { //generate playlist from existing elements\n       player.conf.playlist = [];\n       delete player.conf.startIndex;\n       els().forEach(function(el) {\n          var src = el.href;\n          el.setAttribute('data-index', player.conf.playlist.length);\n          var itm = resolver.resolve(src, player.conf.clip.sources);\n          if ($) {\n            extend(itm, $(el).data());\n          }\n          player.conf.playlist.push(itm);\n       });\n    }\n\n    common.find('.fp-prev,.fp-next,.fp-playlist', root).forEach(function(el) {\n      ui.appendChild(el);\n    });\n\n    /* click -> play */\n    bean.on(externalRe.test(conf.query) ? document : root, \"click\", conf.query, function(e) {\n       e.preventDefault();\n       var el = e.currentTarget;\n       var toPlay = Number(el.getAttribute('data-index'));\n       if (toPlay != -1) {\n          player.play(toPlay);\n       }\n    });\n\n    // highlight\n    function videoIndex(video) {\n      if (typeof video.index !== 'undefined') return video.index;\n      if (typeof player.video.index !== 'undefined') return player.video.index;\n      return player.conf.startIndex || 0;\n    }\n    player.on(\"load\", function(e, api, video) {\n       if (!player.conf.playlist.length) return;\n       var prev = active()[0],\n          prevIndex = prev && prev.getAttribute('data-index'),\n          index = video.index = videoIndex(video),\n          el = common.find(conf.query +'[data-index=\"' + index + '\"]', queryRoot())[0],\n          is_last = index == player.conf.playlist.length - 1;\n       if (prev) common.removeClass(prev, klass);\n       if (el) common.addClass(el, klass);\n       // index\n       common.removeClass(root, 'video' + prevIndex);\n       common.addClass(root, 'video' + index);\n       common.toggleClass(root, \"last-video\", is_last);\n\n       // video properties\n       video.index = api.video.index = index;\n       video.is_last = api.video.is_last = is_last;\n\n    // without namespace callback called only once. unknown rason.\n    }).on(\"unload.pl\", function() {\n       if (!player.conf.playlist.length) return;\n       active().forEach(function(el) {\n         common.toggleClass(el, klass);\n       });\n       player.conf.playlist.forEach(function(itm, i) {\n         common.removeClass(root, 'video' + i);\n       });\n       delete player.video.index;\n    });\n\n   if (player.conf.playlist.length) {\n      // disable single clip looping\n      player.conf.loop = false;\n   }\n\n\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"./resolve\":21,\"bean\":34,\"extend-object\":39}],20:[function(_dereq_,module,exports){\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , bean = _dereq_('bean');\n\nflowplayer(function(api, root) {\n  var ui = common.find('.fp-ui', root)[0]\n    , controlbar = common.find('.fp-controls', ui)[0];\n\n  bean.on(root, 'click', '.fp-qsel', function() {\n    var menu = common.find('.fp-qsel-menu', root)[0];\n    if (common.hasClass(menu, 'fp-active')) api.hideMenu();\n    else api.showMenu(menu);\n  });\n\n  bean.on(root, 'click', '.fp-qsel-menu a', function(ev) {\n    var q = ev.target.getAttribute('data-quality');\n    api.quality(q);\n  });\n\n  api.quality = function(q) {\n    q = isNaN(Number(q)) ? q : Number(q);\n    api.trigger('quality', [api, q]);\n  };\n\n  api.on('quality', function(_ev, _api, q) {\n    selectQuality(q, _api.video.qualities);\n  });\n\n  api.on('ready', function(_ev, _api, video) {\n    removeMenu();\n    if (!video.qualities || video.qualities.filter(function(q) {\n      return typeof q.value !== 'undefined' ? q.value > -1 : true;\n    }).length < 2) return;\n    createMenu(video.qualities, video.quality);\n    selectQuality(video.quality, video.qualities);\n  });\n\n  function removeMenu() {\n    common.find('.fp-qsel-menu', root).forEach(common.removeNode);\n    common.find('.fp-qsel', root).forEach(common.removeNode);\n  }\n\n  function createMenu(qualities) {\n    controlbar.appendChild(common.createElement('strong', { className: 'fp-qsel' }, 'HD'));\n    var menu = common.createElement('div', { className: 'fp-menu fp-qsel-menu' }, '<strong>Quality</strong>');\n    qualities.forEach(function(q) {\n      var a = document.createElement('a')\n        , quality = typeof q.value !== 'undefined' ? q.value : q;\n      a.setAttribute('data-quality', quality);\n      a.innerHTML = q.label || q;\n      menu.appendChild(a);\n    });\n    ui.appendChild(menu);\n  }\n\n  function selectQuality(quality) {\n    common.find('.fp-qsel-menu a', root).forEach(function(el) {\n      common.toggleClass(el, 'fp-selected', el.getAttribute('data-quality') == quality);\n      common.toggleClass(el, 'fp-color', el.getAttribute('data-quality') == quality);\n    });\n  }\n\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],21:[function(_dereq_,module,exports){\n'use strict';\nvar TYPE_RE = /\\.(\\w{3,4})(\\?.*)?$/i,\n    extend = _dereq_('extend-object');\n\nfunction parseSource(el) {\n\n   var src = el.attr(\"src\"),\n      type = el.attr(\"type\") || \"\",\n      suffix = src.split(TYPE_RE)[1];\n   type = type.toLowerCase();\n   return extend(el.data(), { src: src, suffix: suffix || type, type: type || suffix });\n}\n\nfunction getType(typ) {\n  if (/mpegurl/i.test(typ)) return 'application/x-mpegurl';\n  return 'video/' + typ;\n}\n\n/* Resolves video object from initial configuration and from load() method */\nmodule.exports = function URLResolver() {\n  var self = this;\n\n  self.sourcesFromVideoTag = function(videoTag, $) {\n    var sources = [];\n    // initial sources\n    $(\"source\", videoTag).each(function() {\n      sources.push(parseSource($(this)));\n    });\n\n    if (!sources.length && videoTag.length) sources.push(parseSource(videoTag));\n\n    return sources;\n  };\n\n\n  self.resolve = function(video, sources) {\n    if (!video) return { sources: sources };\n\n    if (typeof video == 'string') {\n      video = { src: video, sources: [] };\n      video.sources = (sources || []).map(function(source) {\n        var suffix = source.src.split(TYPE_RE)[1];\n        return {type: source.type, src: video.src.replace(TYPE_RE, '.' + suffix + \"$2\")};\n      });\n    }\n\n    if (video instanceof Array) {\n      video = {\n        sources: video.map(function(src) {\n          if (src.type && src.src) return src;\n          return Object.keys(src).reduce(function(m, typ) {\n            return extend(m, {\n              type: getType(typ),\n              src: src[typ]\n            });\n          }, {});\n        })\n      };\n    }\n\n    return video;\n  };\n};\n\nmodule.exports.TYPE_RE = TYPE_RE;\n\n},{\"extend-object\":39}],22:[function(_dereq_,module,exports){\n'use strict';\n\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , extend = _dereq_('extend-object')\n  , bean = _dereq_('bean');\n\nflowplayer(function(api, root) {\n  var c = api.conf;\n  if (c.share === false) {\n    common.find('.fp-share', root).forEach(common.removeNode);\n    return;\n  }\n\n  api.shareUrl = function(directEmbed) {\n    if (directEmbed && c.embed && c.embed.iframe) return c.embed.iframe;\n    if (typeof api.conf.share === 'string') return api.conf.share;\n    var title = encodeURIComponent(api.video.title || (common.find('title')[0] || {}).innerHTML || 'Flowplayer Commercial video')\n      , conf = encodeURIComponent(btoa(JSON.stringify(extend({}, api.conf, api.extensions)).replace(/[\\u007F-\\uFFFF]/g, function(chr) {\n    return \"\\\\u\" + (\"0000\" + chr.charCodeAt(0).toString(16)).substr(-4)\n})))\n      , redirect = encodeURIComponent(window.location.toString())\n      , baseUrl = directEmbed ? 'https://flowplayer.com/e/' : 'https://flowplayer.com/s/';\n    return baseUrl + '?t=' + title + '&c=' + conf + '&r=' + redirect;\n  };\n\n  var menu = common.createElement('div', { className: 'fp-menu fp-share-menu' }, '<strong>Share</strong>')\n    , ui = common.find('.fp-ui', root)[0];\n    ui.appendChild(menu);\n\n  var button = common.find('.fp-share', root)[0];\n\n  bean.on(root, 'click', '.fp-share', function(ev) {\n    ev.preventDefault();\n    if (common.hasClass(menu, 'fp-active')) api.hideMenu();\n    else api.showMenu(menu,button);\n  });\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34,\"extend-object\":39}],23:[function(_dereq_,module,exports){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    common = _dereq_('../common'),\n    bean = _dereq_('bean')\n  , parser = _dereq_('./subtitles/parser');\n\nflowplayer.defaults.subtitleParser = parser;\n\nflowplayer(function(p, root) {\n  var currentPoint, wrap,\n      subtitleControl, subtitleMenu, changeHandler;\n\n  if (\n    !flowplayer.support.inlineVideo ||\n      (!flowplayer.support.fullscreen  && p.conf.native_fullscreen)) p.conf.nativesubtitles = true;\n\n  if (!p.ui) p.ui = {};\n  p.ui.createSubtitleControl = function(subtitles, onChange) {\n    changeHandler = onChange;\n    subtitleControl = subtitleControl || common.createElement('strong', { className: 'fp-cc' }, 'CC');\n    subtitleMenu = subtitleMenu || common.createElement('div', {className: 'fp-menu fp-subtitle-menu'}, '<strong>Closed Captions</strong>');\n    common.find('a', subtitleMenu).forEach(common.removeNode);\n    subtitleMenu.appendChild(common.createElement('a', {'data-subtitle-index': -1}, 'No subtitles'));\n    (subtitles || []).forEach(function(st, i) {\n      var srcLang = st.srclang || 'en',\n          label = st.label || 'Default (' + srcLang + ')';\n      var item = common.createElement('a', {'data-subtitle-index': i}, label);\n      subtitleMenu.appendChild(item);\n    });\n    common.find('.fp-ui', root)[0].appendChild(subtitleMenu);\n    common.find('.fp-controls', root)[0].appendChild(subtitleControl);\n    common.toggleClass(subtitleControl, 'fp-hidden', !subtitles || !subtitles.length);\n    return subtitleControl;\n  };\n\n  p.ui.setActiveSubtitleItem = function(idx) {\n    setActiveSubtitleClass(idx);\n  };\n\n  bean.on(root, 'click', '.fp-cc', function() {\n    if (common.hasClass(subtitleMenu, 'fp-active')) p.hideMenu();\n    else p.showMenu(subtitleMenu);\n  });\n\n  bean.on(root, 'click', '.fp-subtitle-menu [data-subtitle-index]', function(ev) {\n    ev.preventDefault();\n    var idx = ev.target.getAttribute('data-subtitle-index');\n    if (changeHandler) return changeHandler(idx);\n    if (idx === '-1') return p.disableSubtitles();\n    p.loadSubtitles(idx);\n  });\n\n  var createUIElements = function() {\n    wrap = common.find('.fp-captions', root)[0];\n    wrap = wrap || common.appendTo(common.createElement('div', {'class': 'fp-captions'}), common.find('.fp-player', root)[0]);\n    Array.prototype.forEach.call(wrap.children, common.removeNode);\n    p.ui.createSubtitleControl(p.video.subtitles);\n  };\n\n\n  p.on('ready',  function(ev, player, video) {\n    player.subtitles = [];\n\n    createUIElements();\n\n    common.removeClass(root, 'has-menu');\n\n    p.disableSubtitles();\n\n    if (!video.subtitles || !video.subtitles.length) return;\n\n    var defaultSubtitle = video.subtitles.filter(function(one) {\n      return one['default'];\n    })[0];\n    if (defaultSubtitle) player.loadSubtitles(video.subtitles.indexOf(defaultSubtitle));\n  });\n\n  p.showSubtitle = function(text) {\n    common.html(wrap, text);\n    common.addClass(wrap, 'fp-shown');\n  };\n\n  p.hideSubtitle = function() {\n    common.removeClass(wrap, 'fp-shown');\n  };\n\n  p.bind(\"cuepoint\", function(e, api, cue) {\n    if (cue.subtitle) {\n       currentPoint = cue.index;\n       p.showSubtitle(cue.subtitle.text);\n    } else if (cue.subtitleEnd) {\n       p.hideSubtitle();\n       currentPoint = cue.index;\n    }\n  });\n\n  p.bind(\"seek\", function(e, api, time) {\n    // Clear future subtitles if seeking backwards\n    if (currentPoint && p.cuepoints[currentPoint] && p.cuepoints[currentPoint].time > time) {\n       common.removeClass(wrap, 'fp-shown');\n       currentPoint = null;\n    }\n    (p.cuepoints || []).forEach(function(cue, index) {\n      var entry = cue.subtitle;\n      //Trigger cuepoint if start time before seek position and end time nonexistent or in the future\n      if (entry && currentPoint != index) {\n        if (time >= cue.time && (!entry.endTime || time <= entry.endTime)) p.trigger(\"cuepoint\", [p, cue]);\n      } // Also handle cuepoints that act as the removal trigger\n      else if (cue.subtitleEnd && time >= cue.time && index == currentPoint + 1) {\n        p.trigger(\"cuepoint\", [p, cue]);\n      }\n    });\n\n  });\n\n  p.on('unload', function () {\n    common.find('.fp-captions', root).forEach(common.removeNode);\n  });\n\n  var setActiveSubtitleClass = function(idx) {\n    common.toggleClass(common.find('a.fp-selected', subtitleMenu)[0], 'fp-selected');\n    common.toggleClass(common.find('a[data-subtitle-index=\"' + idx + '\"]', subtitleMenu)[0], 'fp-selected');\n  };\n\n  var setNativeMode = function(i, mode) {\n    var tracks = common.find('video.fp-engine', root)[0].textTracks;\n    if (!tracks.length) return;\n    if (i === null) {\n      [].forEach.call(tracks, function(track) { track.mode = mode; });\n    }\n    else tracks[i].mode = mode;\n  };\n\n  p.disableSubtitles = function() {\n    p.subtitles = [];\n    (p.cuepoints || []).forEach(function(c) {\n      if (c.subtitle || c.subtitleEnd) p.removeCuepoint(c);\n    });\n    if (wrap) Array.prototype.forEach.call(wrap.children, common.removeNode);\n    setActiveSubtitleClass(-1);\n    if (flowplayer.support.subtitles && p.conf.nativesubtitles && p.engine.engineName == 'html5') {\n      setNativeMode(null, 'disabled');\n    }\n    return p;\n  };\n\n  p.loadSubtitles = function(i) {\n    //First remove possible old subtitles\n    p.disableSubtitles();\n\n    var st = p.video.subtitles[i];\n\n    var url = st.src;\n    if (!url) return;\n    setActiveSubtitleClass(i);\n\n    if (flowplayer.support.subtitles && p.conf.nativesubtitles && p.engine.engineName == 'html5') {\n      setNativeMode(i, 'showing');\n      return;\n    }\n    common.xhrGet(url, function(txt) {\n      var entries = p.conf.subtitleParser(txt);\n      entries.forEach(function(entry, idx) {\n        if (!entry.title) entry.title = 'subtitle' + idx;\n        var cue = { time: entry.startTime, subtitle: entry, visible: false };\n        p.subtitles.push(entry);\n        p.addCuepoint(cue);\n        p.addCuepoint({ time: entry.endTime, subtitleEnd: entry.title, visible: false });\n\n        // initial cuepoint\n        if (entry.startTime === 0 && !p.video.time && !p.splash) {\n          p.trigger(\"cuepoint\", [p, flowplayer.extend({}, cue, { index: 0 })]);\n        }\n        if (p.splash) p.one('ready', function() { p.trigger('cuepoint', [p, cue]); });\n      });\n    }, function() {\n      p.trigger(\"error\", {code: 8, url: url });\n      return false;\n    });\n    return p;\n  };\n});\n\n\n},{\"../common\":1,\"../flowplayer\":31,\"./subtitles/parser\":24,\"bean\":34}],24:[function(_dereq_,module,exports){\nmodule.exports = function(txt) {\n  var TIMECODE_RE = /^(([0-9]+:){1,2}[0-9]{2}[,.][0-9]{3}) --\\> (([0-9]+:){1,2}[0-9]{2}[,.][0-9]{3})(.*)/;\n\n  function seconds(timecode) {\n     var els = timecode.split(':');\n     if (els.length == 2) els.unshift(0);\n     return els[0] * 60 * 60 + els[1] * 60 + parseFloat(els[2].replace(',','.'));\n  }\n\n  var entries = [];\n  for (var i = 0, lines = txt.split(\"\\n\"), len = lines.length, entry = {}, title, timecode, text; i < len; i++) {\n    timecode = TIMECODE_RE.exec(lines[i]);\n\n    if (timecode) {\n\n      // title\n      title = lines[i - 1];\n\n      // text\n      text = \"<p>\" + lines[++i] + \"</p><br/>\";\n      while (typeof lines[++i] === 'string' && lines[i].trim() && i < lines.length) text +=  \"<p>\" + lines[i] + \"</p><br/>\";\n\n      // entry\n      entry = {\n        title: title,\n        startTime: seconds(timecode[1]),\n        endTime: seconds(timecode[3]),\n        text: text\n      };\n      entries.push(entry);\n    }\n  }\n  return entries;\n};\n\n},{}],25:[function(_dereq_,module,exports){\n'use strict';\n/* global ActiveXObject */\nvar flowplayer = _dereq_('../flowplayer'),\n    extend = _dereq_('extend-object');\n(function() {\n\n   var parseIOSVersion = function(UA) {\n      var e = /iP(ad|hone)(; CPU)? OS (\\d+_\\d)/.exec(UA);\n      if (e && e.length > 1) {\n         return parseFloat(e[e.length - 1].replace('_', '.'), 10);\n      }\n      return 0;\n   };\n\n   var createVideoTag = function() {\n     var videoTag = document.createElement('video');\n     videoTag.loop = true;\n     videoTag.autoplay = true;\n     videoTag.preload = true;\n     return videoTag;\n   };\n\n    var b = {},\n      d = document.documentElement.style,\n      ua = navigator.userAgent.toLowerCase(),\n      match = /(chrome)[ \\/]([\\w.]+)/.exec(ua) ||\n      /(safari)[ \\/]([\\w.]+)/.exec(ua) ||\n      /(webkit)[ \\/]([\\w.]+)/.exec(ua) ||\n      /(opera)(?:.*version|)[ \\/]([\\w.]+)/.exec(ua) ||\n      /(msie) ([\\w.]+)/.exec(ua) ||\n      ua.indexOf(\"compatible\") < 0 && /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua) || [];\n\n   if (match[1]) {\n      b[match[1]] = true;\n      b.version = match[2] || \"0\";\n   }\n   if (b.safari) b.version = (/version\\/([\\w.]+)/.exec(ua) || [])[1];\n\n\n   var video = createVideoTag(),\n      UA = navigator.userAgent,\n      IS_IE = b.msie || /Trident\\/7/.test(UA),\n      IS_IPAD = /iPad|MeeGo/.test(UA) && !/CriOS/.test(UA),\n      IS_IPAD_CHROME = /iPad/.test(UA) && /CriOS/.test(UA),\n      IS_IPHONE = /iP(hone|od)/i.test(UA) && !/iPad/.test(UA) && !/IEMobile/i.test(UA),\n      IS_ANDROID = /Android/.test(UA),\n      IS_ANDROID_FIREFOX = IS_ANDROID && /Firefox/.test(UA),\n      IS_ANDROID_SAMSUNG = IS_ANDROID && /SAMSUNG/.test(UA),\n      IS_SILK = /Silk/.test(UA),\n      IS_WP = /IEMobile/.test(UA),\n      WP_VER = IS_WP ? parseFloat(/Windows\\ Phone\\ (\\d+\\.\\d+)/.exec(UA)[1], 10) : 0,\n      IE_MOBILE_VER = IS_WP ? parseFloat(/IEMobile\\/(\\d+\\.\\d+)/.exec(UA)[1], 10) : 0,\n      IOS_VER = IS_IPAD || IS_IPHONE ? parseIOSVersion(UA) : 0,\n      ANDROID_VER = IS_ANDROID ? parseFloat(/Android\\ (\\d+(\\.\\d+)?)/.exec(UA)[1], 10) : 0;\n\n   var ios = (IS_IPHONE || IS_IPAD || IS_IPAD_CHROME) && {\n     iPhone: IS_IPHONE,\n     iPad: IS_IPAD || IS_IPAD_CHROME,\n     version: IOS_VER,\n     chrome: IS_IPAD_CHROME\n   };\n   var s = extend(flowplayer.support, {\n        browser: b,\n        iOS: ios,\n        android: IS_ANDROID ? {\n          firefox: IS_ANDROID_FIREFOX,\n          opera: /Opera/.test(UA),\n          samsung: IS_ANDROID_SAMSUNG,\n          version: ANDROID_VER\n        } : false,\n        subtitles: !!video.addTextTrack,\n        fullscreen: typeof document.webkitFullscreenEnabled === 'boolean' ? document.webkitFullscreenEnabled : (typeof document.webkitCancelFullScreen == 'function' && !/Mac OS X 10_5.+Version\\/5\\.0\\.\\d Safari/.test(UA)) ||\n              document.mozFullScreenEnabled ||\n              typeof document.exitFullscreen == 'function' ||\n              typeof document.msExitFullscreen == 'function',\n        inlineBlock: !(IS_IE && b.version < 8),\n        touch: ('ontouchstart' in window),\n        dataload: !IS_IPAD && !IS_IPHONE && !IS_WP,\n        flex: ('flexWrap' in d) || ('WebkitFlexWrap' in d) || ('msFlexWrap' in d),\n        svg: !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', \"svg\").createSVGRect,\n        zeropreload: !IS_IE && !IS_ANDROID, // IE supports only preload=metadata\n        volume: !IS_IPAD && !IS_IPHONE && !IS_SILK && !IS_IPAD_CHROME,\n        cachedVideoTag: !IS_IPAD && !IS_IPHONE && !IS_IPAD_CHROME && !IS_WP,\n        // iOS < 10 and Samsung support firstframe but not mutedAutoplay\n        // pretend lacking firstframe support because so far we treat\n        // support.autoplay as synonym of support.firstframe\n        firstframe: !IS_SILK && !IS_WP && !IS_ANDROID_FIREFOX && !IS_ANDROID_SAMSUNG && !(IOS_VER && IOS_VER < 10) && !(IS_ANDROID && ANDROID_VER < 4.4),\n        inlineVideo: (!IS_IPHONE || IOS_VER >= 10) && (!IS_WP || (WP_VER >= 8.1 && IE_MOBILE_VER >= 11)) && (!IS_ANDROID || ANDROID_VER >= 3),\n        hlsDuration: !IS_ANDROID && (!b.safari || IS_IPAD || IS_IPHONE || IS_IPAD_CHROME),\n        seekable: !IS_IPAD && !IS_IPAD_CHROME,\n        preloadMetadata: !ios && !b.safari\n   });\n   s.autoplay = s.firstframe;\n   if (IS_WP) {\n      s.browser.safari = false;\n   }\n   // flashVideo\n   try {\n      var plugin = navigator.plugins[\"Shockwave Flash\"],\n          ver = IS_IE ? new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\").GetVariable('$version') : plugin.description;\n      if (!IS_IE && !plugin[0].enabledPlugin) s.flashVideo = false;\n      else {\n\n         ver = ver.split(/\\D+/);\n         if (ver.length && !ver[0]) ver = ver.slice(1);\n\n         s.flashVideo = ver[0] > 9 || ver[0] == 9 && ver[3] >= 115;\n      }\n\n   } catch (ignored) {}\n   try {\n      s.video = !!video.canPlayType;\n      if (s.video) video.canPlayType('video/mp4');\n   } catch (e) {\n      s.video = false;\n   }\n\n   // animation\n   s.animation = (function() {\n      var vendors = ['','Webkit','Moz','O','ms','Khtml'], el = document.createElement('p');\n\n      for (var i = 0; i < vendors.length; i++) {\n         if (typeof el.style[vendors[i] + 'AnimationName'] !== 'undefined') return true;\n      }\n   })();\n\n\n\n})();\n\n\n},{\"../flowplayer\":31,\"extend-object\":39}],26:[function(_dereq_,module,exports){\n'use strict';\n\nvar flowplayer = _dereq_('../flowplayer')\n  , common = _dereq_('../common')\n  , bean = _dereq_('bean');\n\nflowplayer(function(api, root) {\n  var c = api.conf;\n\n  if (c.share === false || c.twitter === false) return;\n\n\n  // https://dev.twitter.com/web/intents\n  api.tweet = function() {\n    var left\n      , top\n      , width = 550\n      , height = 420\n      , winHeight = screen.height\n      , winWidth = screen.width\n      , windowOptions = 'scrollbars=yes,resizable=yes,toolbar=no,location=yes'\n      , shareUrl = typeof c.twitter === 'string' ? c.twitter : api.shareUrl();\n    left = Math.round((winWidth / 2) - (width / 2));\n    top = 0;\n    if (winHeight > height) {\n      top = Math.round((winHeight / 2) - (height / 2));\n    }\n    window.open(\n      'https://twitter.com/intent/tweet?url=' + encodeURIComponent(shareUrl),\n      'intent',\n      windowOptions + ',width=' + width + ',height=' + height + ',left=' + left + ',top=' + top\n    );\n  };\n\n  var btnContainer = common.find('.fp-share-menu', root)[0]\n    , trigger = common.createElement('a', { \"class\": \"fp-icon fp-twitter\"}, 'Twitter');\n\n  common.append(btnContainer, trigger);\n\n  bean.on(root, 'click', '.fp-twitter', function() {\n    api.tweet();\n  });\n});\n\n},{\"../common\":1,\"../flowplayer\":31,\"bean\":34}],27:[function(_dereq_,module,exports){\n(function (Buffer){\n'use strict';\nvar flowplayer = _dereq_('../flowplayer'),\n    common = _dereq_('../common'),\n    bean = _dereq_('bean'),\n    slider = _dereq_('./ui/slider'),\n    barSlider = _dereq_('./ui/bar-slider');\n\nfunction zeropad(val) {\n   val = parseInt(val, 10);\n   return val >= 10 ? val : \"0\" + val;\n}\n\n// display seconds in hh:mm:ss format\nfunction format(sec, remaining) {\n\n   sec = Math.max(sec || 0, 0);\n   sec = remaining ? Math.ceil(sec) : Math.floor(sec);\n\n   var h = Math.floor(sec / 3600),\n       min = Math.floor(sec / 60);\n\n   sec = sec - (min * 60);\n\n   if (h >= 1) {\n      min -= h * 60;\n      return h + \":\" + zeropad(min) + \":\" + zeropad(sec);\n   }\n\n   return zeropad(min) + \":\" + zeropad(sec);\n}\n\nvar PLAY_ROUNDED_OUTLINE = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDk5Ljg0NCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz4KPHRpdGxlPnBsYXktcm91bmRlZC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNNDEuMDM1OSw3MS4xOWE1LjA0OTIsNS4wNDkyLDAsMCwxLTIuNTU3NS0uNjY3M2MtMS44MDMxLTEuMDQxLTIuNzk1OC0zLjEyNDgtMi43OTU4LTUuODY2NFYzNS4xODg3YzAtMi43NDI5Ljk5MzMtNC44MjcyLDIuNzk3LTUuODY3NiwxLjgwMjUtMS4wNDIyLDQuMTAzNC0uODYsNi40OC41MTQzTDcwLjQ3ODIsNDQuNTY3MmMyLjM3NTEsMS4zNzExLDMuNjgyNiwzLjI3MjUsMy42ODMyLDUuMzU0NXMtMS4zMDc2LDMuOTg0NS0zLjY4MzIsNS4zNTYyTDQ0Ljk1OTIsNzAuMDExNEE3LjkzODQsNy45Mzg0LDAsMCwxLDQxLjAzNTksNzEuMTlabS4wMDY1LTQwLjEyM2EyLjY3OTQsMi42Nzk0LDAsMCwwLTEuMzU4Mi4zNDEzYy0xLjAyNjMuNTkyNi0xLjU5MTIsMS45MzQ5LTEuNTkxMiwzLjc4VjY0LjY1NjNjMCwxLjg0NDkuNTY0OSwzLjE4NjYsMS41OTA2LDMuNzc5MSwxLjAyODEuNTkzMiwyLjQ3MzMuNDEwOCw0LjA3LS41MTJMNjkuMjczLDUzLjE5MDZjMS41OTgzLS45MjI3LDIuNDc4LTIuMDgzOCwyLjQ3OC0zLjI2ODlzLS44OC0yLjM0NDUtMi40NzgtMy4yNjY2TDQzLjc1NCwzMS45MjI3QTUuNTY4NSw1LjU2ODUsMCwwLDAsNDEuMDQyMywzMS4wNjcxWiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=\",\"base64\")\n  , PLAY_ROUNDED_FILL = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLWZpbGwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogIDxkZWZzPjxzdHlsZT4uYXtmaWxsOiMwMDA7b3BhY2l0eTowLjY1O30uYntmaWxsOiNmZmY7b3BhY2l0eToxLjA7fTwvc3R5bGU+CiAgPC9kZWZzPjx0aXRsZT5wbGF5LXJvdW5kZWQtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cGF0aCBjbGFzcz0iYiIgZD0iTTM1Ljk0MiwzNS4yMzIzYzAtNC43Mjg5LDMuMzUwNi02LjY2MzcsNy40NDYtNC4yOTcxTDY4LjgzLDQ1LjYyMzVjNC4wOTU2LDIuMzY0LDQuMDk1Niw2LjIzMTksMCw4LjU5NzdMNDMuMzg4LDY4LjkxYy00LjA5NTQsMi4zNjQtNy40NDYuNDMtNy40NDYtNC4yOTc5WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPgogIDwvc3ZnPgogIAo=\",\"base64\")\n  , PLAY_SHARP_FILL = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5jb250cm9sYnV0dG9ue2ZpbGw6I2ZmZjt9PC9zdHlsZT4KICA8L2RlZnM+CiAgPHRpdGxlPnBsYXktc2hhcnAtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cG9seWdvbiBjbGFzcz0iY29udHJvbGJ1dHRvbiIgcG9pbnRzPSI3My42MDEgNTAgMzcuOTY4IDcwLjU3MyAzNy45NjggMjkuNDI3IDczLjYwMSA1MCIgZmlsdGVyPSJ1cmwoI2YxKSIvPgo8L3N2Zz4K\",\"base64\")\n  , PLAY_SHARP_OUTLINE = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDQgOTkuODQzNCI+PGRlZnM+PHN0eWxlPi5jb250cm9sYnV0dG9uYmd7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGxheS1zaGFycC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNMzYuOTQ0Myw3Mi4yNDczVjI3LjI5MTZMNzUuODc3Niw0OS43N1ptMi4yLTQxLjE0NTVWNjguNDM3MUw3MS40Nzc2LDQ5Ljc3WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=\",\"base64\")\n  , PAUSE_ROUNDED_OUTLINE = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGF1c2Utcm91bmRlZC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDM0IDk5Ljg0MzQiPjxkZWZzPjxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5yZWN0e2ZpbGw6I2ZmZjt9PC9zdHlsZT4KPC9kZWZzPjx0aXRsZT5wYXVzZS1yb3VuZGVkLW91dGxpbmU8L3RpdGxlPjxwYXRoIGNsYXNzPSJmcC1jb2xvci1wbGF5IiBkPSJNNDkuOTIxMi0uMDc4M2E1MCw1MCwwLDEsMCw1MC4wMDA2LDUwQTUwLjA1NjIsNTAuMDU2MiwwLDAsMCw0OS45MjEyLS4wNzgzWiIvPjxnIGNsYXNzPSJjb250cm9sYnV0dG9uIj48cGF0aCBjbGFzcz0icmVjdCIgZD0iTTM5LjAwMzYsNzEuOTcyNmE3LjU2NSw3LjU2NSwwLDAsMS03LjU1Ny03LjU1NnYtMjguOTlhNy41NTY1LDcuNTU2NSwwLDAsMSwxNS4xMTMsMHYyOC45OUE3LjU2NDgsNy41NjQ4LDAsMCwxLDM5LjAwMzYsNzEuOTcyNlptMC00MS45MDRhNS4zNjQ3LDUuMzY0NywwLDAsMC01LjM1OTMsNS4zNTgydjI4Ljk5YTUuMzU4Nyw1LjM1ODcsMCwwLDAsMTAuNzE3NCwwdi0yOC45OUE1LjM2NDUsNS4zNjQ1LDAsMCwwLDM5LjAwMzYsMzAuMDY4NloiIGZpbHRlcj0idXJsKCNmMSkiLz48cGF0aCBjbGFzcz0icmVjdCIgZD0iTTYwLjg0LDcxLjk3MjZhNy41NjQ4LDcuNTY0OCwwLDAsMS03LjU1Ni03LjU1NnYtMjguOTlhNy41NTY1LDcuNTU2NSwwLDAsMSwxNS4xMTMsMHYyOC45OUE3LjU2NSw3LjU2NSwwLDAsMSw2MC44NCw3MS45NzI2Wm0wLTQxLjkwNGE1LjM2NDUsNS4zNjQ1LDAsMCwwLTUuMzU4Miw1LjM1ODJ2MjguOTlhNS4zNTg3LDUuMzU4NywwLDAsMCwxMC43MTc0LDB2LTI4Ljk5QTUuMzY0Nyw1LjM2NDcsMCwwLDAsNjAuODQsMzAuMDY4NloiIGZpbHRlcj0idXJsKCNmMSkiLz48L2c+PC9zdmc+Cg==\",\"base64\")\n  , PAUSE_ROUNDED_FILL = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGF1c2Utcm91bmRlZC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30ucmVjdHtmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGF1c2Utcm91bmRlZC1maWxsPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxnIGNsYXNzPSJjb250cm9sYnV0dG9uIiBmaWx0ZXI9InVybCgjZjEpIj48cmVjdCBjbGFzcz0icmVjdCIgeD0iMzEuODQ0IiB5PSIyOC4xMjMxIiB3aWR0aD0iMTMuNDM2MiIgaGVpZ2h0PSI0My41OTczIiByeD0iNi43MTgxIiByeT0iNi43MTgxIi8+PHJlY3QgY2xhc3M9InJlY3QiIHg9IjU0LjU2MzgiIHk9IjI4LjEyMzEiIHdpZHRoPSIxMy40MzYyIiBoZWlnaHQ9IjQzLjU5NzMiIHJ4PSI2LjcxODEiIHJ5PSI2LjcxODEiLz48L2c+PC9zdmc+Cg==\",\"base64\")\n  , PAUSE_SHARP_FILL = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGF1c2Utc2hhcnAtZmlsbCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PGRlZnM+PHN0eWxlPi5mcC1jb2xvci1wbGF5e29wYWNpdHk6MC42NTt9LnJlY3R7ZmlsbDojZmZmO308L3N0eWxlPgo8L2RlZnM+PHRpdGxlPnBhdXNlLXNoYXJwLWZpbGw8L3RpdGxlPjxwYXRoIGNsYXNzPSJmcC1jb2xvci1wbGF5IiBkPSJNNDkuOTIxNy0uMDc4YTUwLDUwLDAsMSwwLDUwLDUwQTUwLjA1NjQsNTAuMDU2NCwwLDAsMCw0OS45MjE3LS4wNzhaIi8+PGcgY2xhc3M9ImNvbnRyb2xidXR0b24iIGZpbHRlcj0idXJsKCNmMSkiPjxyZWN0IGNsYXNzPSJyZWN0IiB4PSIzMy41IiB5PSIzMC4xMDQyIiB3aWR0aD0iMTIuMjYzNCIgaGVpZ2h0PSIzOS43OTE3Ii8+PHJlY3QgY2xhc3M9InJlY3QiIHg9IjU0LjIzNjYiIHk9IjMwLjEwNDIiIHdpZHRoPSIxMi4yNjM0IiBoZWlnaHQ9IjM5Ljc5MTciLz48L2c+PC9zdmc+Cg==\",\"base64\")\n  , PAUSE_SHARP_OUTLINE = Buffer(\"PHN2ZyBjbGFzcz0iZnAtcGF1c2Utc2hhcnAtb3V0bGluZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgOTkuODQzNCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30ucmVjdHtmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGF1c2Utc2hhcnAtb3V0bGluZTwvdGl0bGU+PHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjEyLS4wNzgzYTUwLDUwLDAsMSwwLDUwLjAwMDYsNTBBNTAuMDU2Miw1MC4wNTYyLDAsMCwwLDQ5LjkyMTItLjA3ODNaIi8+PGcgY2xhc3M9ImNvbnRyb2xidXR0b24iIGZpbHRlcj0idXJsKCNmMSkiPjxwYXRoIGNsYXNzPSJyZWN0IiBkPSJNNDYuODcwOSw2OS45NTMxSDMzLjEzODVWMjkuODlINDYuODcwOVpNMzUuMTQxNiw2Ny45NWg5LjcyNjJWMzEuODkzNUgzNS4xNDE2WiIvPjxwYXRoIGNsYXNzPSJyZWN0IiBkPSJNNjYuNzA0Nyw2OS45NTMxSDUyLjk3MjJWMjkuODlINjYuNzA0N1pNNTQuOTc1NCw2Ny45NWg5LjcyNjJWMzEuODkzNUg1NC45NzU0WiIvPjwvZz48L3N2Zz4K\",\"base64\");\n\nvar LOADING_ROUNDED_OUTLINE = Buffer(\"PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1yb3VuZGVkLW91dGxpbmUiIHdpZHRoPScxMTJweCcgaGVpZ2h0PScxMTJweCcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijc2IiBoZWlnaHQ9Ijc2IiBmaWxsPSJyZ2JhKDAsMCwwLDApIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjUpIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuMHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC4wcyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyNSkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0cm9rZSIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjRzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDUwKSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZ2JhKDAsMCwwLC41KSIgc3Ryb2tlLXdpZHRoPSIzJSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICA8L2NpcmNsZT4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgNTApIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjEuMnMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMS4ycyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgo8L3N2Zz4K\",\"base64\")\n  , LOADING_ROUNDED_FILL = Buffer(\"PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1yb3VuZGVkLWZpbGwiIHdpZHRoPScxMTJweCcgaGVpZ2h0PScxMTJweCcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPgogICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijc2IiBoZWlnaHQ9Ijc2IiBmaWxsPSJyZ2JhKDAsMCwwLDApIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgMjUpIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC4wcyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjBzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+CiAgICA8Y2lyY2xlIGN4PSIwIiBjeT0iMCIgcj0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDI1KSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImZpbGwiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuNHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC40cyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICAgIDwvY2lyY2xlPgogICAgPGNpcmNsZSBjeD0iMCIgY3k9IjAiIHI9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiIGZpbGw9InJnYmEoMCwwLDAsLjUpIiBjbGFzcz0ic3EiPgogICAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICA8L2NpcmNsZT4KICAgIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIxMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjUgNTApIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMS4ycyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIxLjJzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogICAgPC9jaXJjbGU+Cjwvc3ZnPgo=\",\"base64\")\n  , LOADING_SHARP_FILL = Buffer(\"PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1zaGFycC1maWxsIiB3aWR0aD0nMTEycHgnIGhlaWdodD0nMTEycHgnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNzYiIGhlaWdodD0iNzYiIGZpbGw9InJnYmEoMCwwLDAsMCkiIGNsYXNzPSJiayI+PC9yZWN0PgogIDxyZWN0IHg9Ii0xMCIgeT0iLTEwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1IDI1KSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjBzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjBzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KICA8cmVjdCB4PSItMTAiIHk9Ii0xMCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCAyNSkiIGZpbGw9InJnYmEoMCwwLDAsLjUpIiBjbGFzcz0ic3EiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iZmlsbCIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC40cyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+CiAgPHJlY3QgeD0iLTEwIiB5PSItMTAiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAgNTApIiBmaWxsPSJyZ2JhKDAsMCwwLC41KSIgY2xhc3M9InNxIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImZpbGwiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuOHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgogIDxyZWN0IHg9Ii0xMCIgeT0iLTEwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1IDUwKSIgZmlsbD0icmdiYSgwLDAsMCwuNSkiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJmaWxsIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIxLjJzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIxLjJzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KPC9zdmc+Cg==\",\"base64\")\n  , LOADING_SHARP_OUTLINE = Buffer(\"PHN2ZyBjbGFzcz0iZnAtbG9hZGluZy1zaGFycC1vdXRsaW5lIiB3aWR0aD0nMTEycHgnIGhlaWdodD0nMTEycHgnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNzYiIGhlaWdodD0iNzYiIGZpbGw9InJnYmEoMCwwLDAsMCkiIGNsYXNzPSJiayI+PC9yZWN0PgogIDxyZWN0IHg9Ii05IiB5PSItOSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNSAyNSkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjAuMHMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMC4wcyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+CiAgPHJlY3QgeD0iLTkiIHk9Ii05IiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwIDI1KSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJyZ2JhKDAsMCwwLC41KSIgc3Ryb2tlLXdpZHRoPSIzJSIgY2xhc3M9InNxIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9InN0cm9rZSIgZnJvbT0icmdiYSgwLDAsMCwwKSIgdG89InJnYmEoMCwwLDAsLjUpIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxLjZzIiBiZWdpbj0iMC40cyIgdmFsdWVzPSJyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwuNSkiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZT4KICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJzY2FsZSIgYWRkaXRpdmU9InN1bSIgZnJvbT0iMC44IiB0bz0iMSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjRzIiBkdXI9IjEuNnMiIHZhbHVlcz0iMTswLjg7MC44OzE7MSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvcmVjdD4KICA8cmVjdCB4PSItOSIgeT0iLTkiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTAgNTApIiBmaWxsPSJub25lIiBzdHJva2U9InJnYmEoMCwwLDAsLjUpIiBzdHJva2Utd2lkdGg9IjMlIiBjbGFzcz0ic3EiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlIiBmcm9tPSJyZ2JhKDAsMCwwLDApIiB0bz0icmdiYSgwLDAsMCwuNSkiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjEuNnMiIGJlZ2luPSIwLjhzIiB2YWx1ZXM9InJnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsMCk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLC41KTtyZ2JhKDAsMCwwLC41KSIga2V5VGltZXM9IjA7MC4xOzAuMjswLjQ7MSI+PC9hbmltYXRlPgogICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InNjYWxlIiBhZGRpdGl2ZT0ic3VtIiBmcm9tPSIwLjgiIHRvPSIxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuOHMiIGR1cj0iMS42cyIgdmFsdWVzPSIxOzAuODswLjg7MTsxIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPC9yZWN0PgogIDxyZWN0IHg9Ii05IiB5PSItOSIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNSA1MCkiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgwLDAsMCwuNSkiIHN0cm9rZS13aWR0aD0iMyUiIGNsYXNzPSJzcSI+CiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UiIGZyb209InJnYmEoMCwwLDAsMCkiIHRvPSJyZ2JhKDAsMCwwLC41KSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMS42cyIgYmVnaW49IjEuMnMiIHZhbHVlcz0icmdiYSgwLDAsMCwuNSk7cmdiYSgwLDAsMCwwKTtyZ2JhKDAsMCwwLDApO3JnYmEoMCwwLDAsLjUpO3JnYmEoMCwwLDAsLjUpIiBrZXlUaW1lcz0iMDswLjE7MC4yOzAuNDsxIj48L2FuaW1hdGU+CiAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0ic2NhbGUiIGFkZGl0aXZlPSJzdW0iIGZyb209IjAuOCIgdG89IjEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iMS4ycyIgZHVyPSIxLjZzIiB2YWx1ZXM9IjE7MC44OzAuODsxOzEiIGtleVRpbWVzPSIwOzAuMTswLjI7MC40OzEiPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3JlY3Q+Cjwvc3ZnPgo=\",\"base64\");\n\nflowplayer(function(api, root) {\n  common.find('.fp-filters').forEach(common.removeNode);\n  try {\n    var fc;\n    document.body.appendChild(fc = common.createElement('div', {}, Buffer(\"PHN2ZyBjbGFzcz0iZnAtZmlsdGVycyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMCAwIj4KICA8ZGVmcz4KICAgIDxmaWx0ZXIgaWQ9ImYxIiB4PSItMjAlIiB5PSItMjAlIiB3aWR0aD0iMjAwJSIgaGVpZ2h0PSIyMDAlIj4KICAgICAgPGZlT2Zmc2V0IHJlc3VsdD0ib2ZmT3V0IiBpbj0iU291cmNlQWxwaGEiIGR4PSIwIiBkeT0iMCIgLz4KICAgICAgPGZlQ29sb3JNYXRyaXggcmVzdWx0PSJtYXRyaXhPdXQiIGluPSJvZmZPdXQiIHR5cGU9Im1hdHJpeCIKICAgICAgdmFsdWVzPSIwLjMgMCAwIDAgMCAwIDAuMyAwIDAgMCAwIDAgMC4zIDAgMCAwIDAgMCAwLjQgMCIgLz4KICAgICAgPGZlR2F1c3NpYW5CbHVyIHJlc3VsdD0iYmx1ck91dCIgaW49Im1hdHJpeE91dCIgc3RkRGV2aWF0aW9uPSI0IiAvPgogICAgICA8ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJibHVyT3V0IiBtb2RlPSJub3JtYWwiIC8+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+Cjwvc3ZnPgo=\",\"base64\")));\n    common.css(fc, {\n      width: 0,\n      height: 0,\n      overflow: 'hidden',\n      position: 'absolute',\n      margin: 0,\n      padding: 0\n    });\n\n  } catch (e) { /* omit */ }\n\n   var conf = api.conf,\n      support = flowplayer.support,\n      hovertimer;\n   common.find('.fp-ratio,.fp-ui', root).forEach(common.removeNode);\n   common.addClass(root, 'flowplayer');\n   root.appendChild(common.createElement('div', {className: 'fp-ratio'}));\n   var ui = common.createElement('div', {className: 'fp-ui'}, '\\\n         <div class=\"fp-waiting\">\\\n           {{ LOADING_SHARP_OUTLINE }}\\\n           {{ LOADING_SHARP_FILL }}\\\n           {{ LOADING_ROUNDED_FILL }}\\\n           {{ LOADING_ROUNDED_OUTLINE }}\\\n         </div>\\\n         <div class=\"fp-header\">\\\n           <a class=\"fp-share fp-icon\"></a>\\\n           <a class=\"fp-fullscreen fp-icon\"></a>\\\n           <a class=\"fp-unload fp-icon\"></a>\\\n         </div>\\\n         <p class=\"fp-speed-flash\"></p>\\\n         <div class=\"fp-play fp-visible\">\\\n           <a class=\"fp-icon fp-playbtn\"></a>\\\n           {{ PLAY_ROUNDED_FILL }}\\\n           {{ PLAY_ROUNDED_OUTLINE }}\\\n           {{ PLAY_SHARP_FILL }}\\\n           {{ PLAY_SHARP_OUTLINE }}\\\n         </div>\\\n         <div class=\"fp-pause\">\\\n           <a class=\"fp-icon fp-playbtn\"></a>\\\n           {{ PAUSE_SHARP_OUTLINE }}\\\n           {{ PAUSE_SHARP_FILL }}\\\n           {{ PAUSE_ROUNDED_OUTLINE }}\\\n           {{ PAUSE_ROUNDED_FILL }}\\\n         </div>\\\n         <div class=\"fp-controls\">\\\n            <a class=\"fp-icon fp-playbtn\"></a>\\\n            <span class=\"fp-elapsed\">00:00</span>\\\n            <div class=\"fp-timeline fp-bar\">\\\n               <span class=\"fp-timestamp\"></span>\\\n               <div class=\"fp-progress fp-color\"></div>\\\n            </div>\\\n            <span class=\"fp-duration\"></span>\\\n            <span class=\"fp-remaining\"></span>\\\n            <div class=\"fp-volume\">\\\n               <a class=\"fp-icon fp-volumebtn\"></a>\\\n               <div class=\"fp-volumebar fp-bar-slider\">\\\n                 <em></em><em></em><em></em><em></em><em></em><em></em><em></em>\\\n               </div>\\\n            </div>\\\n            <strong class=\"fp-speed fp-hidden\"></strong>\\\n         </div>'.replace('{{ PAUSE_ROUNDED_FILL }}', PAUSE_ROUNDED_FILL)\n                .replace('{{ PAUSE_ROUNDED_OUTLINE }}', PAUSE_ROUNDED_OUTLINE)\n                .replace('{{ PAUSE_SHARP_FILL }}', PAUSE_SHARP_FILL)\n                .replace('{{ PAUSE_SHARP_OUTLINE }}', PAUSE_SHARP_OUTLINE)\n                .replace('{{ PLAY_SHARP_OUTLINE }}', PLAY_SHARP_OUTLINE)\n                .replace('{{ PLAY_SHARP_FILL }}', PLAY_SHARP_FILL)\n                .replace('{{ PLAY_ROUNDED_OUTLINE }}', PLAY_ROUNDED_OUTLINE)\n                .replace('{{ PLAY_ROUNDED_FILL }}', PLAY_ROUNDED_FILL)\n                .replace('{{ LOADING_ROUNDED_OUTLINE }}', LOADING_ROUNDED_OUTLINE)\n                .replace('{{ LOADING_ROUNDED_FILL }}', LOADING_ROUNDED_FILL)\n                .replace('{{ LOADING_SHARP_FILL }}', LOADING_SHARP_FILL)\n                .replace('{{ LOADING_SHARP_OUTLINE }}', LOADING_SHARP_OUTLINE)\n                .replace(/url\\(#/g, 'url(' + window.location.href.replace(window.location.hash, \"\").replace(/\\#$/g, '') + '#')\n   );\n   root.appendChild(ui);\n   function find(klass) {\n     return common.find(\".fp-\" + klass, root)[0];\n   }\n\n   // widgets\n  var waiting = find('waiting'),\n      elapsed = find(\"elapsed\"),\n      ratio = find(\"ratio\"),\n      speedFlash = find('speed-flash'),\n      durationEl = find(\"duration\"),\n      remaining = find('remaining'),\n      timelineTooltip = find('timestamp'),\n      origRatio = common.css(ratio, 'padding-top'),\n      play = find('play'),\n      pause = find('pause'),\n\n      // sliders\n      timeline = find(\"timeline\"),\n      timelineApi = slider(timeline, api.rtl),\n\n      fullscreen = find(\"fullscreen\"),\n      volumeSlider = find(\"volumebar\"),\n      volumeApi = barSlider(volumeSlider, { rtl: api.rtl }),\n      noToggle = common.hasClass(root, 'no-toggle');\n\n   timelineApi.disableAnimation(common.hasClass(root, 'is-touch'));\n   api.sliders = api.sliders || {};\n   api.sliders.timeline = timelineApi;\n   api.sliders.volume = volumeApi;\n\n   var speedAnimationTimers = [];\n\n   // aspect ratio\n   function setRatio(val) {\n     common.css(ratio, 'padding-top', val * 100 + \"%\");\n     if (!support.inlineBlock) common.height(common.find('object', root)[0], common.height(root));\n   }\n\n   function hover(flag) {\n     if (flag) {\n       common.addClass(root, 'is-mouseover');\n       common.removeClass(root, 'is-mouseout');\n     } else {\n       common.addClass(root, 'is-mouseout');\n       common.removeClass(root, 'is-mouseover');\n     }\n   }\n\n   // loading...\n   if (!support.svg) common.html(waiting, \"<p>loading &hellip;</p>\");\n\n   if (conf.ratio) setRatio(conf.ratio);\n\n   // no fullscreen in IFRAME\n   try {\n      if (!conf.fullscreen) common.removeNode(fullscreen);\n\n   } catch (e) {\n      common.removeNode(fullscreen);\n   }\n\n   api.on('dvrwindow', function() {\n     timelineApi.disable(false);\n   });\n\n   api.on(\"ready\", function(ev, api, video) {\n\n      var duration = api.video.duration;\n\n      timelineApi.disable(api.disabled || !duration);\n\n      if (conf.adaptiveRatio && !isNaN(video.height / video.width)) setRatio(video.height / video.width, true);\n\n      // initial time & volume\n      common.html([durationEl, remaining], api.live ? 'Live' : format(duration));\n\n      // do we need additional space for showing hour\n      common.toggleClass(root, 'is-long', duration >= 3600);\n      volumeApi.slide(api.volumeLevel);\n\n      if (api.engine.engineName === 'flash') timelineApi.disableAnimation(true, true);\n      else timelineApi.disableAnimation(false);\n      common.find('.fp-title', ui).forEach(common.removeNode);\n      if (video.title) {\n\n        common.prepend(ui, common.createElement('div', {\n          className: 'fp-message fp-title'\n        }, video.title));\n      }\n      common.toggleClass(root, 'has-title', !!video.title);\n\n\n   }).on(\"unload\", function() {\n     if (!origRatio && !conf.splash) common.css(ratio, \"paddingTop\", \"\");\n     timelineApi.slide(0);\n     common.addClass(play, 'fp-visible');\n\n   // buffer\n   }).on(\"buffer\", function(ev, api, buffered) {\n      var video = api.video,\n      max = video.buffer / video.duration;\n\n      if (!video.seekable && support.seekable) timelineApi.max(api.conf.live ? Infinity : max);\n      if (!buffered || typeof buffered === 'number') { // Legacy\n        buffered = [{\n          start: 0,\n          end: video.buffer\n        }]\n      }\n      var buffers = common.find('.fp-buffer', timeline);\n      if (buffers.length !== buffered.length) {\n        buffers.forEach(common.removeNode);\n        buffers = [];\n      }\n      buffered.forEach(function(b, i) {\n        var buffer = buffers[i] || common.createElement('div', {\n          className: 'fp-buffer'\n        });\n        common.css(buffer, {\n          left: (100 * b.start / video.duration) + '%',\n          width: (100 * (b.end - b.start) / video.duration) + '%'\n        });\n        common.prepend(timeline, buffer);\n      });\n   }).on(\"speed\", function(e, api, val) {\n     if (api.video.time) {\n       common.text(speedFlash, val + \"x\");\n       common.addClass(speedFlash, 'fp-shown');\n       speedAnimationTimers = speedAnimationTimers.filter(function(to) {\n         clearTimeout(to);\n         return false;\n       });\n       speedAnimationTimers.push(setTimeout(function() {\n        common.addClass(speedFlash, 'fp-hilite');\n        speedAnimationTimers.push(setTimeout(function() {\n          common.removeClass(speedFlash, 'fp-hilite');\n          speedAnimationTimers.push(setTimeout(function() {\n            common.removeClass(speedFlash, 'fp-shown');\n          }, 300));\n        }, 1000));\n       }));\n     }\n\n   }).on(\"buffered\", function() {\n      timelineApi.max(1);\n\n   // progress\n   }).on(\"progress seek\", function(_e, _api, time) {\n\n      var duration = api.video.duration,\n       offset = api.video.seekOffset || 0;\n\n      time = time || api.video.time;\n      var percentage = (time - offset) / (duration - offset);\n      if (!timelineApi.dragging) {\n        timelineApi.slide(percentage, api.seeking ? 0 : 250);\n      }\n      common.toggleClass(root, 'is-live-position', duration - time < conf.livePositionOffset);\n\n      common.html(elapsed, format(time));\n      common.html(remaining, format(duration - time, true));\n\n   }).on(\"finish resume seek\", function(e) {\n      common.toggleClass(root, \"is-finished\", e.type == \"finish\");\n   }).on('resume', function() {\n      common.addClass(play, 'fp-visible');\n      setTimeout(function() { common.removeClass(play, 'fp-visible'); }, 300);\n   }).on('pause', function() {\n      common.addClass(pause, 'fp-visible');\n      setTimeout(function() { common.removeClass(pause, 'fp-visible'); }, 300);\n   }).on(\"stop\", function() {\n      common.html(elapsed, format(0));\n      timelineApi.slide(0, 100);\n\n   }).on(\"finish\", function() {\n      common.html(elapsed, format(api.video.duration));\n      timelineApi.slide(1, 100);\n      common.removeClass(root, 'is-seeking');\n\n   // misc\n   }).on(\"beforeseek\", function() {\n      //TODO FIXME\n      //progress.stop();\n\n   }).on(\"volume\", function() {\n      volumeApi.slide(api.volumeLevel);\n\n\n   }).on(\"disable\", function() {\n      var flag = api.disabled;\n      timelineApi.disable(flag);\n      volumeApi.disable(flag);\n      common.toggleClass(root, 'is-disabled', api.disabled);\n\n   }).on(\"mute\", function(e, api, flag) {\n      common.toggleClass(root, 'is-muted', flag);\n\n   }).on(\"error\", function(e, api, error) {\n      common.removeClass(root, 'is-loading');\n      common.removeClass(root, 'is-seeking');\n      common.addClass(root, 'is-error');\n      if (error) {\n         api.error = true;\n\n         var code = error.code;\n         if( (error.message || '').match(/DECODER_ERROR_NOT_SUPPORTED/) ) {\n            code = 3;\n         }\n\n         var dismiss = api.message((api.engine && api.engine.engineName || 'html5') + \": \" + conf.errors[code] );\n         //common.find('p', el)[0].innerHTML = error.url || video.url || video.src || conf.errorUrls[error.code];\n         common.removeClass(root, 'is-mouseover');\n         api.one('load progress', function() { dismiss(); });\n      }\n\n\n   // hover\n   }).one('resume ready', function() {\n     var videoTag = common.find('video.fp-engine', root)[0];\n     if (!videoTag) return;\n     if (!common.width(videoTag) || !common.height(videoTag)) {\n       var oldOverflow = root.style.overflow;\n       root.style.overflow = 'visible';\n       setTimeout(function() {\n         if (oldOverflow) root.style.overflow = oldOverflow;\n         else root.style.removeProperty('overflow');\n       });\n     }\n   });\n   //Interaction events\n   bean.on(root, \"mouseenter mouseleave\", function(e) {\n     if (noToggle) return;\n\n      var is_over = e.type == \"mouseover\",\n         lastMove;\n\n      // is-mouseover/out\n      hover(is_over);\n\n      if (is_over) {\n\n         var reg = function() {\n            hover(true);\n            lastMove = new Date();\n         };\n         api.on(\"pause.x volume.x\", reg);\n         bean.on(root, 'mousemove.x', reg);\n\n         hovertimer = setInterval(function() {\n            if (new Date() - lastMove > conf.mouseoutTimeout) {\n               hover(false);\n               lastMove = new Date();\n            }\n         }, 100);\n\n      } else {\n         bean.off(root, 'mousemove.x');\n         api.off(\"pause.x volume.x\");\n         clearInterval(hovertimer);\n      }\n\n\n   // allow dragging over the player edge\n   });\n   bean.on(root, \"mouseleave\", function() {\n\n     if (timelineApi.dragging || volumeApi.dragging) {\n       common.addClass(root, 'is-mouseover');\n       common.removeClass(root, 'is-mouseout');\n     }\n\n   // click\n   });\n   bean.on(root, \"click.player\", function(e) {\n     if (api.disabled) return;\n     if (common.hasClass(e.target, 'fp-ui') || common.hasClass(e.target, 'fp-engine') || e.flash || common.hasParent(e.target, '.fp-play,.fp-pause')) {\n         if (e.preventDefault) e.preventDefault();\n         return api.toggle();\n      }\n   });\n\n   bean.on(root, 'mousemove', '.fp-timeline', function(ev) {\n     var x = ev.pageX || ev.clientX,\n         delta = x - common.offset(timeline).left,\n         percentage = delta / common.width(timeline),\n         video = api.video,\n         duration = video.duration - (video.seekOffset === undefined ? 0 : video.seekOffset),\n         seconds = (api.rtl ? 1 - percentage : percentage) * duration;\n     if (percentage < 0) return;\n     common.html(timelineTooltip, format(seconds));\n     var left = (delta - common.width(timelineTooltip) / 2);\n     if (left < 0) left = 0;\n     if (left > common.width(timeline) - common.width(timelineTooltip)) left = false;\n     if (left !== false) common.css(timelineTooltip, {\n       left: left + 'px',\n       right: 'auto'\n     });\n     else common.css(timelineTooltip, {\n       left: 'auto',\n       right: '0px'\n     });\n\n   });\n\n   bean.on(root, 'contextmenu', function(ev) {\n      var w = window;\n      if (common.hasClass(root, 'is-flash-disabled')) return;\n      var menu = common.find('.fp-context-menu', root)[0];\n      if (!menu) return;\n      ev.preventDefault();\n      api.showMenu(menu, {\n        left: ev.clientX - w.scrollX,\n        top: ev.clientY - w.scrollY\n      });\n      bean.on(root, 'click', '.fp-context-menu', function(ev) {\n         ev.stopPropagation();\n      });\n   });\n   api.on('flashdisabled', function(_e, _a, showMessage) {\n     common.addClass(root, 'is-flash-disabled');\n     var dismiss;\n     if (showMessage !== false) dismiss = api.message('Seems something is blocking Adobe Flash from running');\n     api.one('ready progress', function() {\n       common.removeClass(root, 'is-flash-disabled');\n       if (dismiss) dismiss();\n     });\n   });\n\n   // poster -> background image\n   if (conf.poster) common.css(root, 'background-image', \"url(\" + conf.poster + \")\");\n\n   var bc = common.css(root, 'background-color'),\n      has_bg = common.css(root, 'background-image') != \"none\" || bc && bc != \"rgba(0, 0, 0, 0)\" && bc != \"transparent\";\n\n   // is-poster class\n   if (has_bg && !conf.splash) {\n      if (!conf.poster) conf.poster = true;\n      var initPoster = function() {\n        common.addClass(root, \"is-poster\");\n        common.addClass(play, 'fp-visible');\n        api.poster = true;\n        api.on('resume.poster progress.poster beforeseek.poster', function(ev) {\n          if (ev.type === 'beforeseek' || api.playing) {\n            common.removeClass(root, 'is-poster');\n            common.removeClass(play, 'fp-visible');\n            api.poster = false;\n            api.off('.poster');\n          }\n        });\n      }\n      api.on('stop', function() { initPoster(); });\n      api.on('ready', function(_ev, _api, video) {\n        if (video.index || video.autoplay) return; // No poster for playlist items\n        initPoster();\n      });\n   }\n\n   if (typeof conf.splash === 'string') {\n     common.css(root, 'background-image', \"url('\" + conf.splash + \"')\");\n   }\n\n   // default background color if not present\n   if (!has_bg && api.forcedSplash) {\n      common.css(root, \"background-color\", \"#555\");\n   }\n\n   bean.on(root, 'click', '.fp-toggle, .fp-play, .fp-playbtn', function() {\n     if (api.disabled) return;\n     api.toggle();\n   });\n\n   /* controlbar elements */\n   bean.on(root, 'click', '.fp-volumebtn', function() { api.mute(); }); bean.on(root, 'click', '.fp-fullscreen', function() { api.fullscreen(); });\n   bean.on(root, 'click', '.fp-unload', function() { api.unload(); });\n\n   bean.on(timeline, 'slide', function(val) {\n     api.seeking = true;\n     api.seekTo(val * 10);\n   });\n\n   bean.on(volumeSlider, 'slide', function(val) {\n      api.volume(val);\n   });\n\n   // times\n\n   bean.on(root, 'click', '.fp-duration,.fp-remaining', function() {\n     if (api.dvr) return api.seekTo(10);\n     common.toggleClass(root, 'is-inverted');\n   });\n\n   hover(noToggle);\n\n   var resizeHandle;\n\n   api.on('shutdown', function() {\n     bean.off(timeline);\n     bean.off(volumeSlider);\n     if (resizeHandle) window.cancelAnimationFrame(resizeHandle);\n     common.removeNode(ui);\n     common.find('.fp-ratio', root).forEach(common.removeNode);\n   });\n\n  if (typeof window.requestAnimationFrame === 'function') {\n    var playerEl = common.find('.fp-player', root)[0] || root;\n    var resize = function() {\n      common.toggleClass(root, 'is-tiny', playerEl.clientWidth < 400);\n      common.toggleClass(root, 'is-small', playerEl.clientWidth < 600 && playerEl.clientWidth >= 400);\n      resizeHandle = window.requestAnimationFrame(resize);\n    };\n    resizeHandle = window.requestAnimationFrame(resize);\n  }\n\n});\n\n\nmodule.exports.format = format;\n\n}).call(this,_dereq_(\"buffer\").Buffer)\n},{\"../common\":1,\"../flowplayer\":31,\"./ui/bar-slider\":28,\"./ui/slider\":29,\"bean\":34,\"buffer\":35}],28:[function(_dereq_,module,exports){\nvar bean = _dereq_('bean')\n  , common = _dereq_('../../common');\n\nfunction slider(root, opts) {\n  opts = opts || {};\n\n  var activeClass = opts.activeClass || 'fp-color'\n    , inactiveClass = opts.inactiveClass || 'fp-grey'\n    , childSelector = opts.childSelector || 'em'\n    , rtl = !!opts.rtl\n    , disabled = false;\n\n  var totalBars = common.find(childSelector, root).length;\n\n  var api = {\n    unload: function() {\n      bean.off(root, '.barslider');\n    },\n    slide: function(to, trigger) {\n      common.find(childSelector, root).forEach(function(bar, idx) {\n        var active = to > idx/totalBars;\n        common.toggleClass(bar, activeClass, active);\n        common.toggleClass(bar, inactiveClass, !active);\n      });\n      if (trigger) bean.fire(root, 'slide', [ to ]);\n    },\n    disable: function(flag) {\n      disabled = flag;\n    }\n  };\n\n  bean.on(root, 'mousedown.sld touchstart.sld', function(ev) {\n    ev.preventDefault();\n    if (disabled) return;\n    api.slide(getMouseValue(ev), true);\n\n    bean.on(root, 'mousemove.sld touchmove.sld', function(ev) {\n      ev.preventDefault();\n      api.slide(getMouseValue(ev), true);\n    });\n\n    bean.one(document, 'mouseup.sld touchup.sld', function() {\n      bean.off(root, 'mousemove.sld touchmove.sld');\n    });\n  });\n\n  return api;\n\n  function getMouseValue(ev) {\n    var pageX = ev.pageX || ev.clientX\n      , offset = common.offset(root)\n      , size = common.width(root);\n\n\n    if (!pageX && ev.originalEvent && ev.originalEvent.touches && ev.originalEvent.touches.length) {\n      pageX = ev.originalEvent.touches[0].pageX;\n    }\n    var delta = pageX - offset.left;\n    delta = Math.max(0, Math.min(size, delta));\n\n    var value = delta / size;\n    if (rtl) value = 1 - value;\n    return value;\n  }\n}\n\n\nmodule.exports = slider;\n\n},{\"../../common\":1,\"bean\":34}],29:[function(_dereq_,module,exports){\n'use strict';\n// skip IE policies\n// document.ondragstart = function () { return false; };\n//\nvar bean = _dereq_('bean'),\n    common = _dereq_('../../common');\n\n\n// execute function every <delay> ms\nvar throttle = function(fn, delay) {\n   var locked;\n\n   return function () {\n      if (!locked) {\n         fn.apply(this, arguments);\n         locked = 1;\n         setTimeout(function () { locked = 0; }, delay);\n      }\n   };\n};\n\n\nvar slider = function(root, rtl) {\n\n  var progress = common.lastChild(root),\n      disabled,\n      offset,\n      width,\n      height,\n      vertical,\n      size,\n      maxValue,\n      max,\n      skipAnimation = false,\n\n      /* private */\n      calc = function() {\n         offset = common.offset(root);\n         width = common.width(root);\n         height = common.height(root);\n\n         /* exit from fullscreen can mess this up.*/\n         // vertical = height > width;\n\n         size = vertical ? height : width;\n         max = toDelta(maxValue);\n      },\n\n      fire = function(value) {\n         if (!disabled && value != api.value && (!maxValue || value < maxValue)) {\n            bean.fire(root, 'slide', [ value ]);\n            api.value = value;\n         }\n      },\n\n      mousemove = function(e) {\n         var pageX = e.pageX || e.clientX;\n         if (!pageX && e.originalEvent && e.originalEvent.touches && e.originalEvent.touches.length) {\n            pageX = e.originalEvent.touches[0].pageX;\n         }\n         var delta = vertical ? e.pageY - offset.top : pageX - offset.left;\n         delta = Math.max(0, Math.min(max || size, delta));\n\n         var value = delta / size;\n         if (vertical) value = 1 - value;\n         if (rtl) value = 1 - value;\n         return move(value, 0, true);\n      },\n\n      move = function(value, speed) {\n         if (speed === undefined) { speed = 0; }\n         if (value > 1) value = 1;\n\n         var to = (Math.round(value * 1000) / 10) + \"%\";\n\n         if (!maxValue || value <= maxValue) {\n            if (skipAnimation) {\n              common.removeClass(progress, 'animated');\n            } else {\n              common.addClass(progress, 'animated');\n              common.css(progress, 'transition-duration', (speed || 0) + 'ms');\n            }\n            common.css(progress, 'width', to);\n         }\n\n         return value;\n      },\n\n      toDelta = function(value) {\n         return Math.max(0, Math.min(size, vertical ? (1 - value) * height : value * width));\n      },\n\n      /* public */\n      api = {\n\n         max: function(value) {\n            maxValue = value;\n         },\n\n         disable: function(flag) {\n            disabled = flag;\n         },\n\n         slide: function(value, speed, fireEvent) {\n            calc();\n            if (fireEvent) fire(value);\n            move(value, speed);\n         },\n\n         // Should animation be handled via css\n         disableAnimation: function(value, alsoCssAnimations) {\n            skipAnimation = value !== false;\n            common.toggleClass(root, 'no-animation', !!alsoCssAnimations);\n         }\n\n      };\n\n  calc();\n\n  // bound dragging into document\n  bean.on(root, 'mousedown.sld touchstart', function(e) {\n    e.preventDefault();\n\n    if (!disabled) {\n      // begin --> recalculate. allows dynamic resizing of the slider\n      var delayedFire = throttle(fire, 100);\n      calc();\n      api.dragging = true;\n      common.addClass(root, 'is-dragging');\n      fire(mousemove(e));\n\n      bean.on(document, 'mousemove.sld touchmove.sld', function(e) {\n        e.preventDefault();\n        delayedFire(mousemove(e));\n\n      });\n      bean.one(document, 'mouseup touchend', function() {\n         api.dragging = false;\n         common.removeClass(root, 'is-dragging');\n         bean.off(document, 'mousemove.sld touchmove.sld');\n      });\n\n     }\n\n  });\n  return api;\n};\n\nmodule.exports = slider;\n\n},{\"../../common\":1,\"bean\":34}],30:[function(_dereq_,module,exports){\n\n\nvar clipboard = module.exports = function(text, successCallback, errorCallback) {\n  try {\n    doCopy(text);\n    successCallback();\n  } catch (e) {\n    errorCallback(e);\n  }\n};\n\nfunction doCopy(text) {\n  var textArea = document.createElement('textarea');\n  textArea.value = text;\n  textArea.style.opacity = 0;\n  textArea.style.position = 'absolute';\n  document.body.appendChild(textArea);\n  textArea.select();\n  var success = document.execCommand('copy');\n  document.body.removeChild(textArea);\n  if (!success) throw new Error('Unsuccessfull');\n}\n\n},{}],31:[function(_dereq_,module,exports){\n'use strict';\nvar extend = _dereq_('extend-object'),\n    isFunction = _dereq_('is-function'),\n    bean = _dereq_('bean'),\n    slider = _dereq_('./ext/ui/slider'),\n    barSlider = _dereq_('./ext/ui/bar-slider'),\n    common = _dereq_('./common'),\n    events = _dereq_('./ext/events');\n\nvar instances = [],\n   extensions = [];\n\n\nvar oldHandler = window.onbeforeunload;\nwindow.onbeforeunload = function(ev) {\n  instances.forEach(function(api) {\n    if (api.conf.splash) {\n      api.unload();\n    } else {\n      api.bind(\"error\", function () {\n        common.find('.flowplayer.is-error .fp-message').forEach(common.removeNode);\n      });\n    }\n  });\n  if (oldHandler) return oldHandler(ev);\n};\n\nvar isSafari = /Safari/.exec(navigator.userAgent) && !/Chrome/.exec(navigator.userAgent),\n    m = /(\\d+\\.\\d+) Safari/.exec(navigator.userAgent),\n    safariVersion = m ? Number(m[1]) : 100;\n\n/* flowplayer()  */\nvar flowplayer = module.exports = function(fn, opts, callback) {\n  if (isFunction(fn)) return extensions.push(fn);\n  if (typeof fn == 'number' || typeof fn === 'undefined') return instances[fn || 0];\n  if (fn.nodeType) { // Is an element\n    if (fn.getAttribute('data-flowplayer-instance-id') !== null) { // Already flowplayer instance\n      return instances[fn.getAttribute('data-flowplayer-instance-id')];\n    }\n    if (!opts) return; // Can't initialize without data\n    return initializePlayer(fn, opts, callback);\n  }\n  if (fn.jquery) return flowplayer(fn[0], opts, callback);\n  if (typeof fn === 'string') {\n    var el = common.find(fn)[0];\n    return el && flowplayer(el, opts, callback);\n  }\n};\n\nextend(flowplayer, {\n\n   version: '7.2.7',\n\n   engines: [],\n\n   engine: function(name) {\n     return flowplayer.engines.filter(function(e) { return e.engineName === name; })[0];\n   },\n\n   extensions: [],\n\n   conf: {},\n\n   set: function(key, value) {\n      if (typeof key === 'string') flowplayer.conf[key] = value;\n      else extend(flowplayer.conf, key);\n   },\n\n   registerExtension: function(js, css) {\n     flowplayer.extensions.push([js, css]);\n   },\n\n   support: {},\n\n   defaults: {\n\n      debug: false,\n\n      // true = forced playback\n      disabled: false,\n\n      fullscreen: window == window.top,\n\n      // keyboard shortcuts\n      keyboard: true,\n\n      // default aspect ratio\n      ratio: 9 / 16,\n\n      adaptiveRatio: false,\n\n      rtmp: 0,\n\n      proxy: 'best',\n\n      hlsQualities: true,\n\n      seekStep: false,\n\n      splash: false,\n\n      live: false,\n      livePositionOffset: 120,\n\n      swf: \"//releases.flowplayer.org/7.2.7/commercial/flowplayer.swf\",\n      swfHls: \"//releases.flowplayer.org/7.2.7/commercial/flowplayerhls.swf\",\n\n      speeds: [0.25, 0.5, 1, 1.5, 2],\n\n      tooltip: true,\n\n      mouseoutTimeout: 5000,\n\n      mutedAutoplay: true,\n\n      clickToUnMute: true,\n\n      // initial volume level\n      volume: 1,\n\n      // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#error-codes\n      errors: [\n\n         // video exceptions\n         '',\n         'Video loading aborted',\n         'Network error',\n         'Video not properly encoded',\n         'Video file not found',\n\n         // player exceptions\n         'Unsupported video',\n         'Skin not found',\n         'SWF file not found',\n         'Subtitles not found',\n         'Invalid RTMP URL',\n         'Unsupported video format. Try installing Adobe Flash.'\n      ],\n      errorUrls: ['','','','','','','','','','',\n         'http://get.adobe.com/flashplayer/'\n      ],\n      playlist: [],\n\n      hlsFix: isSafari && safariVersion < 8,\n\n      disableInline: false\n\n   },\n   // Expose utilities for plugins\n   bean: bean,\n   common: common,\n   slider: slider,\n   barSlider: barSlider,\n   extend: extend\n\n\n\n});\n\n// keep track of players\nvar playerCount = 0;\n\nvar URLResolver = _dereq_('./ext/resolve');\n\n\n\nif (typeof window.jQuery !== 'undefined') {\n  var $ = window.jQuery;\n  // auto-install (any video tag with parent .flowplayer)\n  $(function() {\n     if (typeof $.fn.flowplayer == 'function') {\n        $('.flowplayer:has(video:not(.fp-engine),script[type=\"application/json\"])').flowplayer();\n     }\n  });\n\n  // jQuery plugin\n  var videoTagConfig = function(videoTag) {\n    if (!videoTag.length) return {};\n    var clip = videoTag.data() || {}, conf = {};\n    $.each(['autoplay', 'loop', 'preload', 'poster'], function(i, key) {\n      var val = videoTag.attr(key);\n      if (val !== undefined && ['autoplay', 'poster'].indexOf(key) !== -1) conf[key] = val ? val : true;\n      else if (val !== undefined) clip[key] = val ? val : true;\n    });\n    videoTag[0].autoplay = videoTag[0].preload = false;\n    clip.subtitles = videoTag.find('track').map(function() {\n      var tr = $(this);\n      return {\n        src: tr.attr('src'),\n        kind: tr.attr('kind'),\n        label: tr.attr('label'),\n        srclang: tr.attr('srclang'),\n        'default': tr.prop('default')\n      };\n    }).get();\n\n    clip.sources = (new URLResolver()).sourcesFromVideoTag(videoTag, $);\n    return extend(conf, {clip: clip});\n  };\n  $.fn.flowplayer = function(opts, callback) {\n    return this.each(function() {\n      if (typeof opts == 'string') opts = { swf: opts };\n      if (isFunction(opts)) { callback = opts; opts = {}; }\n      var root = $(this),\n          scriptConf = root.find('script[type=\"application/json\"]'),\n          confObject = scriptConf.length ? JSON.parse(scriptConf.text()) : videoTagConfig(root.find('video')),\n          conf = $.extend({}, opts || {}, confObject, root.data());\n      var api = initializePlayer(this, conf, callback);\n      events.EVENTS.forEach(function(evName) {\n        api.on(evName + '.jquery', function(ev) {\n          root.trigger.call(root, ev.type, ev.detail && ev.detail.args);\n        });\n      });\n      root.data('flowplayer', api);\n    });\n  };\n}\n\nfunction initializePlayer(element, opts, callback) {\n  if (opts && opts.embed) opts.embed = extend({}, flowplayer.defaults.embed, opts.embed);\n\n  var supportLocalStorage = false;\n  try {\n    if (typeof flowplayer.conf.storage === 'undefined' && typeof window.localStorage == \"object\") {\n      window.localStorage.flowplayerTestStorage = \"test\";\n      supportLocalStorage = true;\n    }\n  } catch (ignored) {}\n\n\n\n  var root = element,\n      conf = extend({}, flowplayer.defaults, flowplayer.conf, opts),\n      storage = {},\n      originalClass = root.className,\n      lastSeekPosition,\n      engine,\n      urlResolver = new URLResolver();\n\n      common.addClass(root, 'is-loading');\n      common.toggleClass(root, 'no-flex', !flowplayer.support.flex);\n      common.toggleClass(root, 'no-svg', !flowplayer.support.svg);\n      try {\n         storage = flowplayer.conf.storage || (supportLocalStorage ? window.localStorage : storage);\n      } catch(e) {}\n\n      conf.volume = storage.muted === \"true\" ? 0 : conf.volume !== flowplayer.defaults.volume ? conf.volume : !isNaN(storage.volume) ? storage.volume : conf.volume;\n\n      conf.debug = !!storage.flowplayerDebug || conf.debug;\n\n      if (conf.aspectRatio && typeof conf.aspectRatio === 'string') {\n        var parts = conf.aspectRatio.split(/[:\\/]/);\n        conf.ratio = parts[1] / parts[0];\n      }\n\n      var isRTL = (root.currentStyle && root.currentStyle.direction === 'rtl') ||\n        (window.getComputedStyle && window.getComputedStyle(root, null) !== null && window.getComputedStyle(root, null).getPropertyValue('direction') === 'rtl');\n\n      if (isRTL) common.addClass(root, 'is-rtl');\n\n      /*** API ***/\n      var api = {\n\n         // properties\n         conf: conf,\n         currentSpeed: 1,\n         volumeLevel: conf.muted ? 0 : typeof conf.volume === \"undefined\" ? storage.volume * 1 : conf.volume,\n         video: {},\n\n         // states\n         disabled: false,\n         finished: false,\n         loading: false,\n         muted: storage.muted == \"true\" || conf.muted,\n         paused: false,\n         playing: false,\n         ready: false,\n         splash: false,\n         rtl: isRTL,\n\n         // methods\n         //\n         hijack: function(hijack) {\n            try {\n              api.engine.suspendEngine();\n            } catch (e) { /* */ }\n            api.hijacked = hijack;\n         },\n         release: function() {\n            try {\n              api.engine.resumeEngine();\n            } catch (e) { /* */ }\n            api.hijacked = false;\n         },\n         debug: function() {\n            if (!conf.debug) return;\n            console.log.apply(console, ['DEBUG'].concat([].slice.call(arguments)));\n         },\n         load: function(video, callback) {\n\n            if (api.error || api.loading) return;\n            api.video = {};\n\n            api.finished = false;\n\n            video = video || conf.clip;\n\n            // resolve URL\n            video = extend({}, urlResolver.resolve(video, conf.clip.sources));\n            if (api.playing || api.engine) video.autoplay = true;\n            var engineImpl = selectEngine(video);\n            if (!engineImpl) return setTimeout(function() { api.trigger(\"error\", [api, { code: flowplayer.support.flashVideo ? 5 : 10 }]); }) && api;\n            if (!engineImpl.engineName) throw new Error('engineName property of factory should be exposed');\n            if (!api.engine || engineImpl.engineName !== api.engine.engineName) {\n              api.ready = false;\n              if (api.engine) {\n                api.engine.unload();\n                api.conf.autoplay = true;\n              }\n              engine = api.engine = engineImpl(api, root);\n              api.one('ready', function() {\n                setTimeout(function() {\n                  if (api.muted) api.mute(true, true);\n                  else engine.volume(api.volumeLevel);\n                });\n              });\n            }\n\n            extend(video, engine.pick(video.sources.filter(function(source) { // Filter out sources explicitly configured for some other engine\n              if (!source.engine) return true;\n              return source.engine === engine.engineName;\n            })));\n\n            if (video.src) {\n               var e = api.trigger('load', [api, video, engine], true);\n               if (!e.defaultPrevented) {\n                  api.ready = false;\n                  engine.load(video);\n\n                  // callback\n                  if (isFunction(video)) callback = video;\n                  if (callback) api.one(\"ready\", callback);\n               } else {\n                  api.loading = false;\n               }\n            }\n\n            return api;\n         },\n\n         pause: function(fn) {\n            if (api.hijacked) return api.hijacked.pause(fn) | api;\n\n            if (api.ready && !api.seeking && !api.loading) {\n               engine.pause();\n               api.one(\"pause\", fn);\n            }\n            return api;\n         },\n\n         resume: function() {\n            var ev = api.trigger('beforeresume', [api], true);\n            if (ev.defaultPrevented) return;\n            if (api.hijacked) return api.hijacked.resume() | api;\n\n            if (api.ready && api.paused) {\n               engine.resume();\n\n               // Firefox (+others?) does not fire \"resume\" after finish\n               if (api.finished) {\n                  api.trigger(\"resume\", [api]);\n                  api.finished = false;\n               }\n            }\n\n            return api;\n         },\n\n         toggle: function() {\n            return api.ready ? api.paused ? api.resume() : api.pause() : api.load();\n         },\n\n         /*\n            seek(1.4)   -> 1.4s time\n            seek(true)  -> 10% forward\n            seek(false) -> 10% backward\n         */\n         seek: function(time, callback) {\n            if (typeof time == \"boolean\") {\n               var delta = api.conf.seekStep || api.video.duration * 0.1;\n               time = api.video.time + (time ? delta : -delta);\n               time = Math.min(Math.max(time, 0), api.video.duration - 0.1);\n            }\n            if (typeof time === 'undefined') return api;\n            if (api.hijacked) return api.hijacked.seek(time, callback) | api;\n            if (api.ready) {\n               lastSeekPosition = time;\n               var ev = api.trigger('beforeseek', [api, time], true);\n               if (!ev.defaultPrevented) {\n                  engine.seek(time);\n                  if (isFunction(callback)) api.one(\"seek\", callback);\n               } else {\n                  api.seeking = false;\n                  common.toggleClass(root, 'is-seeking', api.seeking); // remove loading indicator\n               }\n            }\n            return api;\n         },\n\n         /*\n            seekTo(1) -> 10%\n            seekTo(2) -> 20%\n            seekTo(3) -> 30%\n            ...\n            seekTo()  -> last position\n         */\n         seekTo: function(position, fn) {\n            if (position === undefined) return api.seek(lastSeekPosition, fn);\n            if (api.video.seekOffset !== undefined) { // Live stream\n              return api.seek(api.video.seekOffset + (api.video.duration - api.video.seekOffset) * 0.1 * position, fn);\n            }\n            return api.seek(api.video.duration * 0.1 * position, fn);\n         },\n\n         mute: function(flag, skipStore) {\n           if (flag === undefined) flag = !api.muted;\n           api.muted = flag;\n           if (!skipStore) {\n             storage.muted = flag;\n             storage.volume = !isNaN(storage.volume) ? storage.volume : conf.volume; // make sure storage has volume\n           }\n           if (typeof engine.mute !== 'undefined') engine.mute(flag);\n           else {\n             api.volume(flag ? 0 : storage.volume, true);\n             api.trigger(\"mute\", [api, flag]);\n           }\n           return api;\n         },\n\n         volume: function(level, skipStore) {\n            if (api.ready) {\n              level = Math.min(Math.max(level, 0), 1);\n              if (!skipStore) storage.volume = level;\n              engine.volume(level);\n            }\n\n            return api;\n         },\n\n         speed: function(val, callback) {\n\n            if (api.ready) {\n\n               // increase / decrease\n               if (typeof val == \"boolean\") {\n                  val = conf.speeds[conf.speeds.indexOf(api.currentSpeed) + (val ? 1 : -1)] || api.currentSpeed;\n               }\n\n               engine.speed(val);\n               if (callback) root.one(\"speed\", callback);\n            }\n\n            return api;\n         },\n\n\n         stop: function() {\n            if (api.ready) {\n               api.pause();\n               if (!api.live || api.dvr) {\n                  api.seek(0, function() {\n                     api.trigger(\"stop\", [api]);\n                  });\n               } else {\n                  api.trigger(\"stop\", [api]);\n               }\n            }\n            return api;\n         },\n\n         unload: function() {\n\n            if (conf.splash) {\n               api.trigger(\"unload\", [api]);\n               if (engine) {\n                 engine.unload();\n                 api.engine = engine = 0;\n               }\n            } else {\n               api.stop();\n            }\n            return api;\n         },\n\n         shutdown: function() {\n           api.unload();\n           api.trigger('shutdown', [api]);\n           bean.off(root);\n           delete instances[root.getAttribute('data-flowplayer-instance-id')];\n           root.removeAttribute('data-flowplayer-instance-id');\n         },\n\n         disable: function(flag) {\n            if (flag === undefined) flag = !api.disabled;\n\n            if (flag != api.disabled) {\n               api.disabled = flag;\n               api.trigger(\"disable\", flag);\n            }\n            return api;\n         },\n\n         registerExtension: function(jsUrls, cssUrls) {\n           jsUrls = jsUrls || [];\n           cssUrls = cssUrls || [];\n           if (typeof jsUrls === 'string') jsUrls = [jsUrls];\n           if (typeof cssUrls === 'string') cssUrls = [cssUrls];\n           jsUrls.forEach(function(url) { api.extensions.js.push(url); });\n           cssUrls.forEach(function(url) { api.extensions.css.push(url); });\n         }\n\n      };\n\n      api.conf = extend(api.conf, conf);\n      api.extensions = { js: [], css: [] };\n      flowplayer.extensions.forEach(function(i) {\n        api.registerExtension(i[0], i[1]);\n      });\n      /* event binding / unbinding */\n      events(api);\n\n      var selectEngine = function(clip) {\n        var engine;\n        var engines = flowplayer.engines;\n        if (conf.engine) {\n          var eng = engines.filter(function(e) { return e.engineName === conf.engine; })[0];\n          if (eng && clip.sources.some(function(source) {\n            if (source.engine && source.engine !== eng.engineName) return false;\n            return eng.canPlay(source.type, api.conf);\n          })) return eng;\n        }\n        if (conf.enginePreference) engines = flowplayer.engines.filter(function(one) { return conf.enginePreference.indexOf(one.engineName) > -1; }).sort(function(a, b) {\n          return conf.enginePreference.indexOf(a.engineName) - conf.enginePreference.indexOf(b.engineName);\n        });\n        clip.sources.some(function(source) {\n          var eng = engines.filter(function(engine) {\n            if (source.engine && source.engine !== engine.engineName) return false;\n            return engine.canPlay(source.type, api.conf);\n          }).shift();\n          if (eng) engine = eng;\n          return !!eng;\n        });\n        return engine;\n      };\n\n      /*** Behaviour ***/\n      if (!root.getAttribute('data-flowplayer-instance-id')) { // Only bind once\n         root.setAttribute('data-flowplayer-instance-id', playerCount++);\n\n\n         api.on('boot', function() {\n            var  support = flowplayer.support;\n\n            // splash\n            if (conf.splash || common.hasClass(root, \"is-splash\") ||\n                  !support.firstframe) {\n               api.forcedSplash = !conf.splash && !common.hasClass(root, \"is-splash\");\n               api.splash = true;\n               if (!conf.splash) conf.splash = true;\n               common.addClass(root, \"is-splash\");\n            }\n\n            if (conf.splash) common.find('video', root).forEach(common.removeNode);\n\n            if (conf.dvr || conf.live || common.hasClass(root, 'is-live')) {\n               api.live = conf.live = true;\n               api.dvr = conf.dvr = !!conf.dvr || common.hasClass(root, 'is-dvr');\n               common.addClass(root, 'is-live');\n               common.toggleClass(root, 'is-dvr', api.dvr);\n            }\n\n            // extensions\n            extensions.forEach(function(e) {\n               e(api, root);\n            });\n\n            // instances\n            instances.push(api);\n\n            // start\n            if (conf.splash) api.unload(); else api.load();\n\n            // disabled\n            if (conf.disabled) api.disable();\n\n            // initial callback\n            api.one(\"ready\", callback);\n\n            api.one('shutdown', function() { root.className = originalClass; });\n\n\n         }).on(\"load\", function(e, api, video) {\n\n            // unload others\n            if (conf.splash) {\n              common.find('.flowplayer.is-ready,.flowplayer.is-loading').forEach(function(el) {\n                var playerId = el.getAttribute('data-flowplayer-instance-id');\n                if (playerId === root.getAttribute('data-flowplayer-instance-id')) return;\n                var a = instances[Number(playerId)];\n                if (a && a.conf.splash) a.unload();\n              });\n\n            }\n\n            // loading\n            common.addClass(root, \"is-loading\");\n            api.loading = true;\n\n            if (typeof video.live !== 'undefined' || typeof video.dvr !== 'undefined') {\n              common.toggleClass(root, 'is-live', video.dvr || video.live);\n              common.toggleClass(root, 'is-dvr', !!video.dvr);\n              api.live = video.dvr || video.live;\n              api.dvr = !!video.dvr;\n            }\n\n\n         }).on(\"ready\", function(e, api, video) {\n            video.time = 0;\n            api.video = video;\n\n            common.removeClass(root, \"is-loading\");\n            api.loading = false;\n\n            // saved state\n            if (api.muted) api.mute(true, true);\n            else api.volume(api.volumeLevel);\n\n            // see https://github.com/flowplayer/flowplayer/issues/479\n\n            var hlsFix = api.conf.hlsFix && /mpegurl/i.exec(video.type);\n            common.toggleClass(root, 'hls-fix', !!hlsFix);\n\n         }).on(\"unload\", function() {\n            common.removeClass(root, \"is-loading\");\n            api.loading = false;\n\n\n         }).on(\"ready unload\", function(e) {\n           var is_ready = e.type == \"ready\";\n           common.toggleClass(root, 'is-splash', !is_ready);\n           common.toggleClass(root, 'is-ready', is_ready);\n           api.ready = is_ready;\n           api.splash = !is_ready;\n\n\n         }).on(\"progress\", function(e, api, time) {\n            api.video.time = time;\n         }).on('buffer', function(e, api, buffered) {\n            api.video.buffer = typeof buffered === 'number' ? buffered : buffered.length ? buffered[buffered.length - 1].end : 0;\n         }).on(\"speed\", function(e, api, val) {\n            api.currentSpeed = val;\n\n         }).on(\"volume\", function(e, api, level) {\n            api.volumeLevel = Math.round(level * 100) / 100;\n            if (api.muted && level) api.mute(false);\n\n\n         }).on(\"beforeseek seek\", function(e) {\n            api.seeking = e.type == \"beforeseek\";\n            common.toggleClass(root, 'is-seeking', api.seeking);\n\n         }).on(\"ready pause resume unload finish stop\", function(e) {\n\n            // PAUSED: pause / finish\n            api.paused = /pause|finish|unload|stop/.test(e.type);\n            api.paused = api.paused || e.type === 'ready' && !conf.autoplay && !api.playing;\n\n            // the opposite\n            api.playing = !api.paused;\n\n            // CSS classes\n            common.toggleClass(root, 'is-paused', api.paused);\n            common.toggleClass(root, 'is-playing', api.playing);\n\n            // sanity check\n            if (!api.load.ed) api.pause();\n\n         }).on(\"finish\", function() {\n            api.finished = true;\n\n         }).on(\"error\", function() {\n         });\n      }\n\n      // boot\n      api.trigger('boot', [api, root]);\n  return api;\n}\n\n},{\"./common\":1,\"./ext/events\":12,\"./ext/resolve\":21,\"./ext/ui/bar-slider\":28,\"./ext/ui/slider\":29,\"bean\":34,\"extend-object\":39,\"is-function\":42}],32:[function(_dereq_,module,exports){\n/* eslint-disable no-unused-vars */\n\n//Flowplayer with extensions\n\n_dereq_('es5-shim');\n\nvar flowplayer = module.exports = _dereq_('./flowplayer');\n//\n\n//Support needed before engines\n_dereq_('./ext/support');\n\n//Engines\n_dereq_('./engine/embed');\n_dereq_('./engine/hlsjs');\n_dereq_('./engine/html5');\n_dereq_('./engine/flash');\n\n//Extensions\n//require('./ext/slider'); //TODO enable\n_dereq_('./ext/ui');\n_dereq_('./ext/message');\n_dereq_('./ext/keyboard');\n_dereq_('./ext/playlist');\n_dereq_('./ext/cuepoint');\n_dereq_('./ext/subtitle');\n_dereq_('./ext/analytics');\n_dereq_('./ext/share');\n_dereq_('./ext/facebook');\n_dereq_('./ext/twitter');\n_dereq_('./ext/embed');\n_dereq_('./ext/airplay');\n_dereq_('./ext/chromecast');\n_dereq_('./ext/qsel');\n_dereq_('./ext/menu');\n//Have to add fullscreen last\n_dereq_('./ext/fullscreen');\n\n_dereq_('./ext/mobile');\nflowplayer(function(o,e){function r(o){var e=document.createElement(\"a\");return e.href=o,i.hostname(e.hostname)}function n(o){var e=\"ab.ca,ac.ac,ac.ae,ac.at,ac.be,ac.cn,ac.il,ac.in,ac.jp,ac.kr,ac.sg,ac.th,ac.uk,ad.jp,adm.br,adv.br,ah.cn,am.br,arq.br,art.br,arts.ro,asn.au,asso.fr,asso.mc,bc.ca,bel.tr,bio.br,biz.pl,biz.tr,bj.cn,br.com,cn.com,cng.br,cnt.br,co.ac,co.at,co.de,co.gl,co.hk,co.id,co.il,co.in,co.jp,co.kr,co.mg,co.ms,co.nz,co.th,co.uk,co.ve,co.vi,co.za,com.ag,com.ai,com.ar,com.au,com.br,com.cn,com.co,com.cy,com.de,com.do,com.ec,com.es,com.fj,com.fr,com.gl,com.gt,com.hk,com.hr,com.hu,com.kg,com.ki,com.lc,com.mg,com.mm,com.ms,com.mt,com.mu,com.mx,com.my,com.na,com.nf,com.ng,com.ni,com.pa,com.ph,com.pl,com.pt,com.qa,com.ro,com.ru,com.sb,com.sc,com.sg,com.sv,com.tr,com.tw,com.ua,com.uy,com.ve,com.vn,cp.tz,cq.cn,de.com,de.org,ecn.br,ed.jp,edu.au,edu.cn,edu.hk,edu.mm,edu.my,edu.pl,edu.pt,edu.qa,edu.sg,edu.tr,edu.tw,eng.br,ernet.in,esp.br,etc.br,eti.br,eu.com,eu.int,eu.lv,firm.in,firm.ro,fm.br,fot.br,fst.br,g12.br,gb.com,gb.net,gd.cn,gen.in,go.jp,go.kr,go.th,gov.au,gov.az,gov.br,gov.cn,gov.il,gov.in,gov.mm,gov.my,gov.qa,gov.sg,gov.tr,gov.tw,gov.uk,govt.nz,gr.jp,gs.cn,gv.ac,gv.at,gx.cn,gz.cn,he.cn,hi.cn,hk.cn,hl.cn,hu.com,id.au,idv.tw,in.th,in.ua,ind.br,ind.in,inf.br,info.pl,info.ro,info.tr,info.ve,iwi.nz,jl.cn,jor.br,js.cn,jus.br,k12.il,k12.tr,kr.com,lel.br,lg.jp,ln.cn,ltd.uk,maori.nz,mb.ca,me.uk,med.br,mi.th,mil.br,mil.uk,mo.cn,mod.uk,muni.il,nb.ca,ne.jp,ne.kr,net.ag,net.ai,net.au,net.br,net.cn,net.do,net.gl,net.hk,net.il,net.in,net.kg,net.ki,net.lc,net.mg,net.mm,net.mu,net.ni,net.nz,net.pl,net.ru,net.sb,net.sc,net.sg,net.th,net.tr,net.tw,net.uk,net.ve,nf.ca,nhs.uk,nm.cn,nm.kr,no.com,nom.br,nom.ni,nom.ro,ns.ca,nt.ca,nt.ro,ntr.br,nx.cn,odo.br,off.ai,on.ca,or.ac,or.at,or.jp,or.kr,or.th,org.ag,org.ai,org.au,org.br,org.cn,org.do,org.es,org.gl,org.hk,org.in,org.kg,org.ki,org.lc,org.mg,org.mm,org.ms,org.nf,org.ng,org.ni,org.nz,org.pl,org.ro,org.ru,org.sb,org.sc,org.sg,org.tr,org.tw,org.uk,org.ve,pe.ca,plc.uk,police.uk,ppg.br,presse.fr,pro.br,psc.br,psi.br,qc.ca,qc.com,qh.cn,rec.br,rec.ro,res.in,sa.com,sc.cn,sch.uk,se.com,se.net,sh.cn,sk.ca,slg.br,sn.cn,store.ro,tj.cn,tm.fr,tm.mc,tm.ro,tmp.br,tur.br,tv.br,tv.tr,tw.cn,uk.com,uk.net,us.com,uy.com,vet.br,waw.pl,web.ve,www.ro,xj.cn,xz.cn,yk.ca,yn.cn,zj.cn,zlg.br\".split(\",\");o=o.toLowerCase();var r=o.split(\".\"),n=r.length;if(2>n||/^\\d+$/.test(r[n-1]))return o;var c=r.slice(-2).join(\".\");return n>=3&&e.indexOf(c)>=0?r.slice(-3).join(\".\"):c}function c(o,e){e=n(e);for(var r=0,c=e.length-1;c>=0;c--)r+=5285928321*e.charCodeAt(c);for(r=(\"\"+r).substring(0,7),c=0;c<o.length;c++)if(r===o[c].substring(1,8))return 1}var t=function(o,e){var r=o.className.split(\" \");-1===r.indexOf(e)&&(o.className+=\" \"+e)},a=function(o){return\"none\"!==window.getComputedStyle(o).display},m=o.conf,i=flowplayer.common,l=i.createElement,g=m.swf.indexOf(\"flowplayer.org\")&&m.e&&e.getAttribute(\"data-origin\"),s=g?r(g):i.hostname(),p=(document,m.key);if(\"file:\"==location.protocol&&(s=\"localhost\"),o.load.ed=1,m.hostname=s,m.origin=g||location.href,g&&t(e,\"is-embedded\"),\"string\"==typeof p&&(p=p.split(/,\\s*/)),p&&\"function\"==typeof c&&c(p,s)){if(m.logo){var d=i.find(\".fp-player\",e)[0],u=m.logo.href||\"\",f=m.logo.src||m.logo,b=l(\"a\",{className:\"fp-logo\",href:u});g&&(b.href=b.href||g),m.embed&&m.embed.popup&&(b.target=\"_blank\");var h=l(\"img\",{src:f});b.appendChild(h),(d||e).appendChild(b)}}else{var b=l(\"a\",{href:\"https://flowplayer.com/hello/?from=player\"}),d=i.find(\".fp-player\",e)[0];(d||e).appendChild(b);var v=l(\"div\",{className:\"fp-context-menu fp-menu\"},'<strong>&copy; 2018 Flowplayer AB</strong><a href=\"https://flowplayer.com/hello/?from=player\">About Flowplayer</a><a href=\"https://flowplayer.com/license\">GPL based license</a>'),k=window.location.href.indexOf(\"localhost\");7!==k&&(d||e).appendChild(v),o.on(\"pause resume finish unload ready\",function(o,r){var n=-1;if(r.video.src)for(var c=[[\"org\",\"flowplayer\",\"drive\"],[\"org\",\"flowplayer\",\"my\"],[\"org\",\"flowplayer\",\"cdn\"],[\"com\",\"flowplayer\",\"cdn\"]],t=0;t<c.length&&(n=r.video.src.indexOf(\"://\"+c[t].reverse().join(\".\")),-1===n);t++);if(/pause|resume/.test(o.type)&&\"flash\"!=r.engine.engineName&&4!=n&&5!=n){var m={display:\"block\",position:\"absolute\",left:\"16px\",bottom:\"70px\",zIndex:99999,width:\"100px\",height:\"20px\",backgroundImage:\"url(\"+[\".png\",\"logo\",\"/\",\".net\",\".cloudfront\",\"d32wqyuo10o653\",\"//\",\"https:\"].reverse().join(\"\")+\")\"};for(var i in m)m.hasOwnProperty(i)&&(b.style[i]=m[i]);r.load.ed=a(b)&&(7===k||v.parentNode==e||v.parentNode==d),r.load.ed||r.pause()}else b.style.display=\"none\"})}});\n\n\n},{\"./engine/embed\":2,\"./engine/flash\":3,\"./engine/hlsjs\":4,\"./engine/html5\":6,\"./ext/airplay\":7,\"./ext/analytics\":8,\"./ext/chromecast\":9,\"./ext/cuepoint\":10,\"./ext/embed\":11,\"./ext/facebook\":13,\"./ext/fullscreen\":14,\"./ext/keyboard\":15,\"./ext/menu\":16,\"./ext/message\":17,\"./ext/mobile\":18,\"./ext/playlist\":19,\"./ext/qsel\":20,\"./ext/share\":22,\"./ext/subtitle\":23,\"./ext/support\":25,\"./ext/twitter\":26,\"./ext/ui\":27,\"./flowplayer\":31,\"es5-shim\":38}],33:[function(_dereq_,module,exports){\n'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  for (var i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n\n},{}],34:[function(_dereq_,module,exports){\n/*!\n  * Bean - copyright (c) Jacob Thornton 2011-2012\n  * https://github.com/fat/bean\n  * MIT license\n  */\n(function (name, context, definition) {\n  if (typeof module != 'undefined' && module.exports) module.exports = definition()\n  else if (typeof define == 'function' && define.amd) define(definition)\n  else context[name] = definition()\n})('bean', this, function (name, context) {\n  name    = name    || 'bean'\n  context = context || this\n\n  var win            = window\n    , old            = context[name]\n    , namespaceRegex = /[^\\.]*(?=\\..*)\\.|.*/\n    , nameRegex      = /\\..*/\n    , addEvent       = 'addEventListener'\n    , removeEvent    = 'removeEventListener'\n    , doc            = document || {}\n    , root           = doc.documentElement || {}\n    , W3C_MODEL      = root[addEvent]\n    , eventSupport   = W3C_MODEL ? addEvent : 'attachEvent'\n    , ONE            = {} // singleton for quick matching making add() do one()\n\n    , slice          = Array.prototype.slice\n    , str2arr        = function (s, d) { return s.split(d || ' ') }\n    , isString       = function (o) { return typeof o == 'string' }\n    , isFunction     = function (o) { return typeof o == 'function' }\n\n      // events that we consider to be 'native', anything not in this list will\n      // be treated as a custom event\n    , standardNativeEvents =\n        'click dblclick mouseup mousedown contextmenu '                  + // mouse buttons\n        'mousewheel mousemultiwheel DOMMouseScroll '                     + // mouse wheel\n        'mouseover mouseout mousemove selectstart selectend '            + // mouse movement\n        'keydown keypress keyup '                                        + // keyboard\n        'orientationchange '                                             + // mobile\n        'focus blur change reset select submit '                         + // form elements\n        'load unload beforeunload resize move DOMContentLoaded '         + // window\n        'readystatechange message '                                      + // window\n        'error abort scroll '                                              // misc\n      // element.fireEvent('onXYZ'... is not forgiving if we try to fire an event\n      // that doesn't actually exist, so make sure we only do these on newer browsers\n    , w3cNativeEvents =\n        'show '                                                          + // mouse buttons\n        'input invalid '                                                 + // form elements\n        'touchstart touchmove touchend touchcancel '                     + // touch\n        'gesturestart gesturechange gestureend '                         + // gesture\n        'textinput '                                                     + // TextEvent\n        'readystatechange pageshow pagehide popstate '                   + // window\n        'hashchange offline online '                                     + // window\n        'afterprint beforeprint '                                        + // printing\n        'dragstart dragenter dragover dragleave drag drop dragend '      + // dnd\n        'loadstart progress suspend emptied stalled loadmetadata '       + // media\n        'loadeddata canplay canplaythrough playing waiting seeking '     + // media\n        'seeked ended durationchange timeupdate play pause ratechange '  + // media\n        'volumechange cuechange '                                        + // media\n        'checking noupdate downloading cached updateready obsolete '       // appcache\n\n      // convert to a hash for quick lookups\n    , nativeEvents = (function (hash, events, i) {\n        for (i = 0; i < events.length; i++) events[i] && (hash[events[i]] = 1)\n        return hash\n      }({}, str2arr(standardNativeEvents + (W3C_MODEL ? w3cNativeEvents : ''))))\n\n      // custom events are events that we *fake*, they are not provided natively but\n      // we can use native events to generate them\n    , customEvents = (function () {\n        var isAncestor = 'compareDocumentPosition' in root\n              ? function (element, container) {\n                  return container.compareDocumentPosition && (container.compareDocumentPosition(element) & 16) === 16\n                }\n              : 'contains' in root\n                ? function (element, container) {\n                    container = container.nodeType === 9 || container === window ? root : container\n                    return container !== element && container.contains(element)\n                  }\n                : function (element, container) {\n                    while (element = element.parentNode) if (element === container) return 1\n                    return 0\n                  }\n          , check = function (event) {\n              var related = event.relatedTarget\n              return !related\n                ? related == null\n                : (related !== this && related.prefix !== 'xul' && !/document/.test(this.toString())\n                    && !isAncestor(related, this))\n            }\n\n        return {\n            mouseenter: { base: 'mouseover', condition: check }\n          , mouseleave: { base: 'mouseout', condition: check }\n          , mousewheel: { base: /Firefox/.test(navigator.userAgent) ? 'DOMMouseScroll' : 'mousewheel' }\n        }\n      }())\n\n      // we provide a consistent Event object across browsers by taking the actual DOM\n      // event object and generating a new one from its properties.\n    , Event = (function () {\n            // a whitelist of properties (for different event types) tells us what to check for and copy\n        var commonProps  = str2arr('altKey attrChange attrName bubbles cancelable ctrlKey currentTarget ' +\n              'detail eventPhase getModifierState isTrusted metaKey relatedNode relatedTarget shiftKey '  +\n              'srcElement target timeStamp type view which propertyName')\n          , mouseProps   = commonProps.concat(str2arr('button buttons clientX clientY dataTransfer '      +\n              'fromElement offsetX offsetY pageX pageY screenX screenY toElement'))\n          , mouseWheelProps = mouseProps.concat(str2arr('wheelDelta wheelDeltaX wheelDeltaY wheelDeltaZ ' +\n              'axis')) // 'axis' is FF specific\n          , keyProps     = commonProps.concat(str2arr('char charCode key keyCode keyIdentifier '          +\n              'keyLocation location'))\n          , textProps    = commonProps.concat(str2arr('data'))\n          , touchProps   = commonProps.concat(str2arr('touches targetTouches changedTouches scale rotation'))\n          , messageProps = commonProps.concat(str2arr('data origin source'))\n          , stateProps   = commonProps.concat(str2arr('state'))\n          , overOutRegex = /over|out/\n            // some event types need special handling and some need special properties, do that all here\n          , typeFixers   = [\n                { // key events\n                    reg: /key/i\n                  , fix: function (event, newEvent) {\n                      newEvent.keyCode = event.keyCode || event.which\n                      return keyProps\n                    }\n                }\n              , { // mouse events\n                    reg: /click|mouse(?!(.*wheel|scroll))|menu|drag|drop/i\n                  , fix: function (event, newEvent, type) {\n                      newEvent.rightClick = event.which === 3 || event.button === 2\n                      newEvent.pos = { x: 0, y: 0 }\n                      if (event.pageX || event.pageY) {\n                        newEvent.clientX = event.pageX\n                        newEvent.clientY = event.pageY\n                      } else if (event.clientX || event.clientY) {\n                        newEvent.clientX = event.clientX + doc.body.scrollLeft + root.scrollLeft\n                        newEvent.clientY = event.clientY + doc.body.scrollTop + root.scrollTop\n                      }\n                      if (overOutRegex.test(type)) {\n                        newEvent.relatedTarget = event.relatedTarget\n                          || event[(type == 'mouseover' ? 'from' : 'to') + 'Element']\n                      }\n                      return mouseProps\n                    }\n                }\n              , { // mouse wheel events\n                    reg: /mouse.*(wheel|scroll)/i\n                  , fix: function () { return mouseWheelProps }\n                }\n              , { // TextEvent\n                    reg: /^text/i\n                  , fix: function () { return textProps }\n                }\n              , { // touch and gesture events\n                    reg: /^touch|^gesture/i\n                  , fix: function () { return touchProps }\n                }\n              , { // message events\n                    reg: /^message$/i\n                  , fix: function () { return messageProps }\n                }\n              , { // popstate events\n                    reg: /^popstate$/i\n                  , fix: function () { return stateProps }\n                }\n              , { // everything else\n                    reg: /.*/\n                  , fix: function () { return commonProps }\n                }\n            ]\n          , typeFixerMap = {} // used to map event types to fixer functions (above), a basic cache mechanism\n\n          , Event = function (event, element, isNative) {\n              if (!arguments.length) return\n              event = event || ((element.ownerDocument || element.document || element).parentWindow || win).event\n              this.originalEvent = event\n              this.isNative       = isNative\n              this.isBean         = true\n\n              if (!event) return\n\n              var type   = event.type\n                , target = event.target || event.srcElement\n                , i, l, p, props, fixer\n\n              this.target = target && target.nodeType === 3 ? target.parentNode : target\n\n              if (isNative) { // we only need basic augmentation on custom events, the rest expensive & pointless\n                fixer = typeFixerMap[type]\n                if (!fixer) { // haven't encountered this event type before, map a fixer function for it\n                  for (i = 0, l = typeFixers.length; i < l; i++) {\n                    if (typeFixers[i].reg.test(type)) { // guaranteed to match at least one, last is .*\n                      typeFixerMap[type] = fixer = typeFixers[i].fix\n                      break\n                    }\n                  }\n                }\n\n                props = fixer(event, this, type)\n                for (i = props.length; i--;) {\n                  if (!((p = props[i]) in this) && p in event) this[p] = event[p]\n                }\n              }\n            }\n\n        // preventDefault() and stopPropagation() are a consistent interface to those functions\n        // on the DOM, stop() is an alias for both of them together\n        Event.prototype.preventDefault = function () {\n          if (this.originalEvent.preventDefault) this.originalEvent.preventDefault()\n          else this.originalEvent.returnValue = false\n        }\n        Event.prototype.stopPropagation = function () {\n          if (this.originalEvent.stopPropagation) this.originalEvent.stopPropagation()\n          else this.originalEvent.cancelBubble = true\n        }\n        Event.prototype.stop = function () {\n          this.preventDefault()\n          this.stopPropagation()\n          this.stopped = true\n        }\n        // stopImmediatePropagation() has to be handled internally because we manage the event list for\n        // each element\n        // note that originalElement may be a Bean#Event object in some situations\n        Event.prototype.stopImmediatePropagation = function () {\n          if (this.originalEvent.stopImmediatePropagation) this.originalEvent.stopImmediatePropagation()\n          this.isImmediatePropagationStopped = function () { return true }\n        }\n        Event.prototype.isImmediatePropagationStopped = function () {\n          return this.originalEvent.isImmediatePropagationStopped && this.originalEvent.isImmediatePropagationStopped()\n        }\n        Event.prototype.clone = function (currentTarget) {\n          //TODO: this is ripe for optimisation, new events are *expensive*\n          // improving this will speed up delegated events\n          var ne = new Event(this, this.element, this.isNative)\n          ne.currentTarget = currentTarget\n          return ne\n        }\n\n        return Event\n      }())\n\n      // if we're in old IE we can't do onpropertychange on doc or win so we use doc.documentElement for both\n    , targetElement = function (element, isNative) {\n        return !W3C_MODEL && !isNative && (element === doc || element === win) ? root : element\n      }\n\n      /**\n        * Bean maintains an internal registry for event listeners. We don't touch elements, objects\n        * or functions to identify them, instead we store everything in the registry.\n        * Each event listener has a RegEntry object, we have one 'registry' for the whole instance.\n        */\n    , RegEntry = (function () {\n        // each handler is wrapped so we can handle delegation and custom events\n        var wrappedHandler = function (element, fn, condition, args) {\n            var call = function (event, eargs) {\n                  return fn.apply(element, args ? slice.call(eargs, event ? 0 : 1).concat(args) : eargs)\n                }\n              , findTarget = function (event, eventElement) {\n                  return fn.__beanDel ? fn.__beanDel.ft(event.target, element) : eventElement\n                }\n              , handler = condition\n                  ? function (event) {\n                      var target = findTarget(event, this) // deleated event\n                      if (condition.apply(target, arguments)) {\n                        if (event) event.currentTarget = target\n                        return call(event, arguments)\n                      }\n                    }\n                  : function (event) {\n                      if (fn.__beanDel) event = event.clone(findTarget(event)) // delegated event, fix the fix\n                      return call(event, arguments)\n                    }\n            handler.__beanDel = fn.__beanDel\n            return handler\n          }\n\n        , RegEntry = function (element, type, handler, original, namespaces, args, root) {\n            var customType     = customEvents[type]\n              , isNative\n\n            if (type == 'unload') {\n              // self clean-up\n              handler = once(removeListener, element, type, handler, original)\n            }\n\n            if (customType) {\n              if (customType.condition) {\n                handler = wrappedHandler(element, handler, customType.condition, args)\n              }\n              type = customType.base || type\n            }\n\n            this.isNative      = isNative = nativeEvents[type] && !!element[eventSupport]\n            this.customType    = !W3C_MODEL && !isNative && type\n            this.element       = element\n            this.type          = type\n            this.original      = original\n            this.namespaces    = namespaces\n            this.eventType     = W3C_MODEL || isNative ? type : 'propertychange'\n            this.target        = targetElement(element, isNative)\n            this[eventSupport] = !!this.target[eventSupport]\n            this.root          = root\n            this.handler       = wrappedHandler(element, handler, null, args)\n          }\n\n        // given a list of namespaces, is our entry in any of them?\n        RegEntry.prototype.inNamespaces = function (checkNamespaces) {\n          var i, j, c = 0\n          if (!checkNamespaces) return true\n          if (!this.namespaces) return false\n          for (i = checkNamespaces.length; i--;) {\n            for (j = this.namespaces.length; j--;) {\n              if (checkNamespaces[i] == this.namespaces[j]) c++\n            }\n          }\n          return checkNamespaces.length === c\n        }\n\n        // match by element, original fn (opt), handler fn (opt)\n        RegEntry.prototype.matches = function (checkElement, checkOriginal, checkHandler) {\n          return this.element === checkElement &&\n            (!checkOriginal || this.original === checkOriginal) &&\n            (!checkHandler || this.handler === checkHandler)\n        }\n\n        return RegEntry\n      }())\n\n    , registry = (function () {\n        // our map stores arrays by event type, just because it's better than storing\n        // everything in a single array.\n        // uses '$' as a prefix for the keys for safety and 'r' as a special prefix for\n        // rootListeners so we can look them up fast\n        var map = {}\n\n          // generic functional search of our registry for matching listeners,\n          // `fn` returns false to break out of the loop\n          , forAll = function (element, type, original, handler, root, fn) {\n              var pfx = root ? 'r' : '$'\n              if (!type || type == '*') {\n                // search the whole registry\n                for (var t in map) {\n                  if (t.charAt(0) == pfx) {\n                    forAll(element, t.substr(1), original, handler, root, fn)\n                  }\n                }\n              } else {\n                var i = 0, l, list = map[pfx + type], all = element == '*'\n                if (!list) return\n                for (l = list.length; i < l; i++) {\n                  if ((all || list[i].matches(element, original, handler)) && !fn(list[i], list, i, type)) return\n                }\n              }\n            }\n\n          , has = function (element, type, original, root) {\n              // we're not using forAll here simply because it's a bit slower and this\n              // needs to be fast\n              var i, list = map[(root ? 'r' : '$') + type]\n              if (list) {\n                for (i = list.length; i--;) {\n                  if (!list[i].root && list[i].matches(element, original, null)) return true\n                }\n              }\n              return false\n            }\n\n          , get = function (element, type, original, root) {\n              var entries = []\n              forAll(element, type, original, null, root, function (entry) {\n                return entries.push(entry)\n              })\n              return entries\n            }\n\n          , put = function (entry) {\n              var has = !entry.root && !this.has(entry.element, entry.type, null, false)\n                , key = (entry.root ? 'r' : '$') + entry.type\n              ;(map[key] || (map[key] = [])).push(entry)\n              return has\n            }\n\n          , del = function (entry) {\n              forAll(entry.element, entry.type, null, entry.handler, entry.root, function (entry, list, i) {\n                list.splice(i, 1)\n                entry.removed = true\n                if (list.length === 0) delete map[(entry.root ? 'r' : '$') + entry.type]\n                return false\n              })\n            }\n\n            // dump all entries, used for onunload\n          , entries = function () {\n              var t, entries = []\n              for (t in map) {\n                if (t.charAt(0) == '$') entries = entries.concat(map[t])\n              }\n              return entries\n            }\n\n        return { has: has, get: get, put: put, del: del, entries: entries }\n      }())\n\n      // we need a selector engine for delegated events, use querySelectorAll if it exists\n      // but for older browsers we need Qwery, Sizzle or similar\n    , selectorEngine\n    , setSelectorEngine = function (e) {\n        if (!arguments.length) {\n          selectorEngine = doc.querySelectorAll\n            ? function (s, r) {\n                return r.querySelectorAll(s)\n              }\n            : function () {\n                throw new Error('Bean: No selector engine installed') // eeek\n              }\n        } else {\n          selectorEngine = e\n        }\n      }\n\n      // we attach this listener to each DOM event that we need to listen to, only once\n      // per event type per DOM element\n    , rootListener = function (event, type) {\n        if (!W3C_MODEL && type && event && event.propertyName != '_on' + type) return\n\n        var listeners = registry.get(this, type || event.type, null, false)\n          , l = listeners.length\n          , i = 0\n\n        event = new Event(event, this, true)\n        if (type) event.type = type\n\n        // iterate through all handlers registered for this type, calling them unless they have\n        // been removed by a previous handler or stopImmediatePropagation() has been called\n        for (; i < l && !event.isImmediatePropagationStopped(); i++) {\n          if (!listeners[i].removed) listeners[i].handler.call(this, event)\n        }\n      }\n\n      // add and remove listeners to DOM elements\n    , listener = W3C_MODEL\n        ? function (element, type, add) {\n            // new browsers\n            element[add ? addEvent : removeEvent](type, rootListener, false)\n          }\n        : function (element, type, add, custom) {\n            // IE8 and below, use attachEvent/detachEvent and we have to piggy-back propertychange events\n            // to simulate event bubbling etc.\n            var entry\n            if (add) {\n              registry.put(entry = new RegEntry(\n                  element\n                , custom || type\n                , function (event) { // handler\n                    rootListener.call(element, event, custom)\n                  }\n                , rootListener\n                , null\n                , null\n                , true // is root\n              ))\n              if (custom && element['_on' + custom] == null) element['_on' + custom] = 0\n              entry.target.attachEvent('on' + entry.eventType, entry.handler)\n            } else {\n              entry = registry.get(element, custom || type, rootListener, true)[0]\n              if (entry) {\n                entry.target.detachEvent('on' + entry.eventType, entry.handler)\n                registry.del(entry)\n              }\n            }\n          }\n\n    , once = function (rm, element, type, fn, originalFn) {\n        // wrap the handler in a handler that does a remove as well\n        return function () {\n          fn.apply(this, arguments)\n          rm(element, type, originalFn)\n        }\n      }\n\n    , removeListener = function (element, orgType, handler, namespaces) {\n        var type     = orgType && orgType.replace(nameRegex, '')\n          , handlers = registry.get(element, type, null, false)\n          , removed  = {}\n          , i, l\n\n        for (i = 0, l = handlers.length; i < l; i++) {\n          if ((!handler || handlers[i].original === handler) && handlers[i].inNamespaces(namespaces)) {\n            // TODO: this is problematic, we have a registry.get() and registry.del() that\n            // both do registry searches so we waste cycles doing this. Needs to be rolled into\n            // a single registry.forAll(fn) that removes while finding, but the catch is that\n            // we'll be splicing the arrays that we're iterating over. Needs extra tests to\n            // make sure we don't screw it up. @rvagg\n            registry.del(handlers[i])\n            if (!removed[handlers[i].eventType] && handlers[i][eventSupport])\n              removed[handlers[i].eventType] = { t: handlers[i].eventType, c: handlers[i].type }\n          }\n        }\n        // check each type/element for removed listeners and remove the rootListener where it's no longer needed\n        for (i in removed) {\n          if (!registry.has(element, removed[i].t, null, false)) {\n            // last listener of this type, remove the rootListener\n            listener(element, removed[i].t, false, removed[i].c)\n          }\n        }\n      }\n\n      // set up a delegate helper using the given selector, wrap the handler function\n    , delegate = function (selector, fn) {\n        //TODO: findTarget (therefore $) is called twice, once for match and once for\n        // setting e.currentTarget, fix this so it's only needed once\n        var findTarget = function (target, root) {\n              var i, array = isString(selector) ? selectorEngine(selector, root) : selector\n              for (; target && target !== root; target = target.parentNode) {\n                for (i = array.length; i--;) {\n                  if (array[i] === target) return target\n                }\n              }\n            }\n          , handler = function (e) {\n              var match = findTarget(e.target, this)\n              if (match) fn.apply(match, arguments)\n            }\n\n        // __beanDel isn't pleasant but it's a private function, not exposed outside of Bean\n        handler.__beanDel = {\n            ft       : findTarget // attach it here for customEvents to use too\n          , selector : selector\n        }\n        return handler\n      }\n\n    , fireListener = W3C_MODEL ? function (isNative, type, element) {\n        // modern browsers, do a proper dispatchEvent()\n        var evt = doc.createEvent(isNative ? 'HTMLEvents' : 'UIEvents')\n        evt[isNative ? 'initEvent' : 'initUIEvent'](type, true, true, win, 1)\n        element.dispatchEvent(evt)\n      } : function (isNative, type, element) {\n        // old browser use onpropertychange, just increment a custom property to trigger the event\n        element = targetElement(element, isNative)\n        isNative ? element.fireEvent('on' + type, doc.createEventObject()) : element['_on' + type]++\n      }\n\n      /**\n        * Public API: off(), on(), add(), (remove()), one(), fire(), clone()\n        */\n\n      /**\n        * off(element[, eventType(s)[, handler ]])\n        */\n    , off = function (element, typeSpec, fn) {\n        var isTypeStr = isString(typeSpec)\n          , k, type, namespaces, i\n\n        if (isTypeStr && typeSpec.indexOf(' ') > 0) {\n          // off(el, 't1 t2 t3', fn) or off(el, 't1 t2 t3')\n          typeSpec = str2arr(typeSpec)\n          for (i = typeSpec.length; i--;)\n            off(element, typeSpec[i], fn)\n          return element\n        }\n\n        type = isTypeStr && typeSpec.replace(nameRegex, '')\n        if (type && customEvents[type]) type = customEvents[type].base\n\n        if (!typeSpec || isTypeStr) {\n          // off(el) or off(el, t1.ns) or off(el, .ns) or off(el, .ns1.ns2.ns3)\n          if (namespaces = isTypeStr && typeSpec.replace(namespaceRegex, '')) namespaces = str2arr(namespaces, '.')\n          removeListener(element, type, fn, namespaces)\n        } else if (isFunction(typeSpec)) {\n          // off(el, fn)\n          removeListener(element, null, typeSpec)\n        } else {\n          // off(el, { t1: fn1, t2, fn2 })\n          for (k in typeSpec) {\n            if (typeSpec.hasOwnProperty(k)) off(element, k, typeSpec[k])\n          }\n        }\n\n        return element\n      }\n\n      /**\n        * on(element, eventType(s)[, selector], handler[, args ])\n        */\n    , on = function(element, events, selector, fn) {\n        var originalFn, type, types, i, args, entry, first\n\n        //TODO: the undefined check means you can't pass an 'args' argument, fix this perhaps?\n        if (selector === undefined && typeof events == 'object') {\n          //TODO: this can't handle delegated events\n          for (type in events) {\n            if (events.hasOwnProperty(type)) {\n              on.call(this, element, type, events[type])\n            }\n          }\n          return\n        }\n\n        if (!isFunction(selector)) {\n          // delegated event\n          originalFn = fn\n          args       = slice.call(arguments, 4)\n          fn         = delegate(selector, originalFn, selectorEngine)\n        } else {\n          args       = slice.call(arguments, 3)\n          fn         = originalFn = selector\n        }\n\n        types = str2arr(events)\n\n        // special case for one(), wrap in a self-removing handler\n        if (this === ONE) {\n          fn = once(off, element, events, fn, originalFn)\n        }\n\n        for (i = types.length; i--;) {\n          // add new handler to the registry and check if it's the first for this element/type\n          first = registry.put(entry = new RegEntry(\n              element\n            , types[i].replace(nameRegex, '') // event type\n            , fn\n            , originalFn\n            , str2arr(types[i].replace(namespaceRegex, ''), '.') // namespaces\n            , args\n            , false // not root\n          ))\n          if (entry[eventSupport] && first) {\n            // first event of this type on this element, add root listener\n            listener(element, entry.eventType, true, entry.customType)\n          }\n        }\n\n        return element\n      }\n\n      /**\n        * add(element[, selector], eventType(s), handler[, args ])\n        *\n        * Deprecated: kept (for now) for backward-compatibility\n        */\n    , add = function (element, events, fn, delfn) {\n        return on.apply(\n            null\n          , !isString(fn)\n              ? slice.call(arguments)\n              : [ element, fn, events, delfn ].concat(arguments.length > 3 ? slice.call(arguments, 5) : [])\n        )\n      }\n\n      /**\n        * one(element, eventType(s)[, selector], handler[, args ])\n        */\n    , one = function () {\n        return on.apply(ONE, arguments)\n      }\n\n      /**\n        * fire(element, eventType(s)[, args ])\n        *\n        * The optional 'args' argument must be an array, if no 'args' argument is provided\n        * then we can use the browser's DOM event system, otherwise we trigger handlers manually\n        */\n    , fire = function (element, type, args) {\n        var types = str2arr(type)\n          , i, j, l, names, handlers\n\n        for (i = types.length; i--;) {\n          type = types[i].replace(nameRegex, '')\n          if (names = types[i].replace(namespaceRegex, '')) names = str2arr(names, '.')\n          if (!names && !args && element[eventSupport]) {\n            fireListener(nativeEvents[type], type, element)\n          } else {\n            // non-native event, either because of a namespace, arguments or a non DOM element\n            // iterate over all listeners and manually 'fire'\n            handlers = registry.get(element, type, null, false)\n            args = [false].concat(args)\n            for (j = 0, l = handlers.length; j < l; j++) {\n              if (handlers[j].inNamespaces(names)) {\n                handlers[j].handler.apply(element, args)\n              }\n            }\n          }\n        }\n        return element\n      }\n\n      /**\n        * clone(dstElement, srcElement[, eventType ])\n        *\n        * TODO: perhaps for consistency we should allow the same flexibility in type specifiers?\n        */\n    , clone = function (element, from, type) {\n        var handlers = registry.get(from, type, null, false)\n          , l = handlers.length\n          , i = 0\n          , args, beanDel\n\n        for (; i < l; i++) {\n          if (handlers[i].original) {\n            args = [ element, handlers[i].type ]\n            if (beanDel = handlers[i].handler.__beanDel) args.push(beanDel.selector)\n            args.push(handlers[i].original)\n            on.apply(null, args)\n          }\n        }\n        return element\n      }\n\n    , bean = {\n          'on'                : on\n        , 'add'               : add\n        , 'one'               : one\n        , 'off'               : off\n        , 'remove'            : off\n        , 'clone'             : clone\n        , 'fire'              : fire\n        , 'Event'             : Event\n        , 'setSelectorEngine' : setSelectorEngine\n        , 'noConflict'        : function () {\n            context[name] = old\n            return this\n          }\n      }\n\n  // for IE, clean up on unload to avoid leaks\n  if (win.attachEvent) {\n    var cleanup = function () {\n      var i, entries = registry.entries()\n      for (i in entries) {\n        if (entries[i].type && entries[i].type !== 'unload') off(entries[i].element, entries[i].type)\n      }\n      win.detachEvent('onunload', cleanup)\n      win.CollectGarbage && win.CollectGarbage()\n    }\n    win.attachEvent('onunload', cleanup)\n  }\n\n  // initialize selector engine to internal default (qSA or throw Error)\n  setSelectorEngine()\n\n  return bean\n});\n\n},{}],35:[function(_dereq_,module,exports){\n(function (global){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = _dereq_('base64-js')\nvar ieee754 = _dereq_('ieee754')\nvar isArray = _dereq_('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"base64-js\":33,\"ieee754\":40,\"isarray\":43}],36:[function(_dereq_,module,exports){\n// contains, add, remove, toggle\nvar indexof = _dereq_('indexof')\n\nmodule.exports = ClassList\n\nfunction ClassList(elem) {\n    var cl = elem.classList\n\n    if (cl) {\n        return cl\n    }\n\n    var classList = {\n        add: add\n        , remove: remove\n        , contains: contains\n        , toggle: toggle\n        , toString: $toString\n        , length: 0\n        , item: item\n    }\n\n    return classList\n\n    function add(token) {\n        var list = getTokens()\n        if (indexof(list, token) > -1) {\n            return\n        }\n        list.push(token)\n        setTokens(list)\n    }\n\n    function remove(token) {\n        var list = getTokens()\n            , index = indexof(list, token)\n\n        if (index === -1) {\n            return\n        }\n\n        list.splice(index, 1)\n        setTokens(list)\n    }\n\n    function contains(token) {\n        return indexof(getTokens(), token) > -1\n    }\n\n    function toggle(token) {\n        if (contains(token)) {\n            remove(token)\n            return false\n        } else {\n            add(token)\n            return true\n        }\n    }\n\n    function $toString() {\n        return elem.className\n    }\n\n    function item(index) {\n        var tokens = getTokens()\n        return tokens[index] || null\n    }\n\n    function getTokens() {\n        var className = elem.className\n\n        return filter(className.split(\" \"), isTruthy)\n    }\n\n    function setTokens(list) {\n        var length = list.length\n\n        elem.className = list.join(\" \")\n        classList.length = length\n\n        for (var i = 0; i < list.length; i++) {\n            classList[i] = list[i]\n        }\n\n        delete list[length]\n    }\n}\n\nfunction filter (arr, fn) {\n    var ret = []\n    for (var i = 0; i < arr.length; i++) {\n        if (fn(arr[i])) ret.push(arr[i])\n    }\n    return ret\n}\n\nfunction isTruthy(value) {\n    return !!value\n}\n\n},{\"indexof\":41}],37:[function(_dereq_,module,exports){\n// DEV: We don't use var but favor parameters since these play nicer with minification\nfunction computedStyle(el, prop, getComputedStyle, style) {\n  getComputedStyle = window.getComputedStyle;\n  style =\n      // If we have getComputedStyle\n      getComputedStyle ?\n        // Query it\n        // TODO: From CSS-Query notes, we might need (node, null) for FF\n        getComputedStyle(el) :\n\n      // Otherwise, we are in IE and use currentStyle\n        el.currentStyle;\n  if (style) {\n    return style\n    [\n      // Switch to camelCase for CSSOM\n      // DEV: Grabbed from jQuery\n      // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n      // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n      prop.replace(/-(\\w)/gi, function (word, letter) {\n        return letter.toUpperCase();\n      })\n    ];\n  }\n}\n\nmodule.exports = computedStyle;\n\n},{}],38:[function(_dereq_,module,exports){\n/*!\n * https://github.com/es-shims/es5-shim\n * @license es5-shim Copyright 2009-2015 by contributors, MIT License\n * see https://github.com/es-shims/es5-shim/blob/master/LICENSE\n */\n\n// vim: ts=4 sts=4 sw=4 expandtab\n\n// Add semicolon to prevent IIFE from being passed as argument to concatenated code.\n;\n\n// UMD (Universal Module Definition)\n// see https://github.com/umdjs/umd/blob/master/templates/returnExports.js\n(function (root, factory) {\n    'use strict';\n\n    /* global define, exports, module */\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(factory);\n    } else if (typeof exports === 'object') {\n        // Node. Does not work with strict CommonJS, but\n        // only CommonJS-like enviroments that support module.exports,\n        // like Node.\n        module.exports = factory();\n    } else {\n        // Browser globals (root is window)\n        root.returnExports = factory();\n    }\n}(this, function () {\n    /**\n     * Brings an environment as close to ECMAScript 5 compliance\n     * as is possible with the facilities of erstwhile engines.\n     *\n     * Annotated ES5: http://es5.github.com/ (specific links below)\n     * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf\n     * Required reading: http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/\n     */\n\n    // Shortcut to an often accessed properties, in order to avoid multiple\n    // dereference that costs universally. This also holds a reference to known-good\n    // functions.\n    var $Array = Array;\n    var ArrayPrototype = $Array.prototype;\n    var $Object = Object;\n    var ObjectPrototype = $Object.prototype;\n    var $Function = Function;\n    var FunctionPrototype = $Function.prototype;\n    var $String = String;\n    var StringPrototype = $String.prototype;\n    var $Number = Number;\n    var NumberPrototype = $Number.prototype;\n    var array_slice = ArrayPrototype.slice;\n    var array_splice = ArrayPrototype.splice;\n    var array_push = ArrayPrototype.push;\n    var array_unshift = ArrayPrototype.unshift;\n    var array_concat = ArrayPrototype.concat;\n    var array_join = ArrayPrototype.join;\n    var call = FunctionPrototype.call;\n    var apply = FunctionPrototype.apply;\n    var max = Math.max;\n    var min = Math.min;\n\n    // Having a toString local variable name breaks in Opera so use to_string.\n    var to_string = ObjectPrototype.toString;\n\n    /* global Symbol */\n    /* eslint-disable one-var-declaration-per-line, no-redeclare, max-statements-per-line */\n    var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n    var isCallable; /* inlined from https://npmjs.com/is-callable */ var fnToStr = Function.prototype.toString, constructorRegex = /^\\s*class /, isES6ClassFn = function isES6ClassFn(value) { try { var fnStr = fnToStr.call(value); var singleStripped = fnStr.replace(/\\/\\/.*\\n/g, ''); var multiStripped = singleStripped.replace(/\\/\\*[.\\s\\S]*\\*\\//g, ''); var spaceStripped = multiStripped.replace(/\\n/mg, ' ').replace(/ {2}/g, ' '); return constructorRegex.test(spaceStripped); } catch (e) { return false; /* not a function */ } }, tryFunctionObject = function tryFunctionObject(value) { try { if (isES6ClassFn(value)) { return false; } fnToStr.call(value); return true; } catch (e) { return false; } }, fnClass = '[object Function]', genClass = '[object GeneratorFunction]', isCallable = function isCallable(value) { if (!value) { return false; } if (typeof value !== 'function' && typeof value !== 'object') { return false; } if (hasToStringTag) { return tryFunctionObject(value); } if (isES6ClassFn(value)) { return false; } var strClass = to_string.call(value); return strClass === fnClass || strClass === genClass; };\n\n    var isRegex; /* inlined from https://npmjs.com/is-regex */ var regexExec = RegExp.prototype.exec, tryRegexExec = function tryRegexExec(value) { try { regexExec.call(value); return true; } catch (e) { return false; } }, regexClass = '[object RegExp]'; isRegex = function isRegex(value) { if (typeof value !== 'object') { return false; } return hasToStringTag ? tryRegexExec(value) : to_string.call(value) === regexClass; };\n    var isString; /* inlined from https://npmjs.com/is-string */ var strValue = String.prototype.valueOf, tryStringObject = function tryStringObject(value) { try { strValue.call(value); return true; } catch (e) { return false; } }, stringClass = '[object String]'; isString = function isString(value) { if (typeof value === 'string') { return true; } if (typeof value !== 'object') { return false; } return hasToStringTag ? tryStringObject(value) : to_string.call(value) === stringClass; };\n    /* eslint-enable one-var-declaration-per-line, no-redeclare, max-statements-per-line */\n\n    /* inlined from http://npmjs.com/define-properties */\n    var supportsDescriptors = $Object.defineProperty && (function () {\n        try {\n            var obj = {};\n            $Object.defineProperty(obj, 'x', { enumerable: false, value: obj });\n            for (var _ in obj) { // jscs:ignore disallowUnusedVariables\n                return false;\n            }\n            return obj.x === obj;\n        } catch (e) { /* this is ES3 */\n            return false;\n        }\n    }());\n    var defineProperties = (function (has) {\n        // Define configurable, writable, and non-enumerable props\n        // if they don't exist.\n        var defineProperty;\n        if (supportsDescriptors) {\n            defineProperty = function (object, name, method, forceAssign) {\n                if (!forceAssign && (name in object)) {\n                    return;\n                }\n                $Object.defineProperty(object, name, {\n                    configurable: true,\n                    enumerable: false,\n                    writable: true,\n                    value: method\n                });\n            };\n        } else {\n            defineProperty = function (object, name, method, forceAssign) {\n                if (!forceAssign && (name in object)) {\n                    return;\n                }\n                object[name] = method;\n            };\n        }\n        return function defineProperties(object, map, forceAssign) {\n            for (var name in map) {\n                if (has.call(map, name)) {\n                    defineProperty(object, name, map[name], forceAssign);\n                }\n            }\n        };\n    }(ObjectPrototype.hasOwnProperty));\n\n    //\n    // Util\n    // ======\n    //\n\n    /* replaceable with https://npmjs.com/package/es-abstract /helpers/isPrimitive */\n    var isPrimitive = function isPrimitive(input) {\n        var type = typeof input;\n        return input === null || (type !== 'object' && type !== 'function');\n    };\n\n    var isActualNaN = $Number.isNaN || function isActualNaN(x) {\n        return x !== x;\n    };\n\n    var ES = {\n        // ES5 9.4\n        // http://es5.github.com/#x9.4\n        // http://jsperf.com/to-integer\n        /* replaceable with https://npmjs.com/package/es-abstract ES5.ToInteger */\n        ToInteger: function ToInteger(num) {\n            var n = +num;\n            if (isActualNaN(n)) {\n                n = 0;\n            } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {\n                n = (n > 0 || -1) * Math.floor(Math.abs(n));\n            }\n            return n;\n        },\n\n        /* replaceable with https://npmjs.com/package/es-abstract ES5.ToPrimitive */\n        ToPrimitive: function ToPrimitive(input) {\n            var val, valueOf, toStr;\n            if (isPrimitive(input)) {\n                return input;\n            }\n            valueOf = input.valueOf;\n            if (isCallable(valueOf)) {\n                val = valueOf.call(input);\n                if (isPrimitive(val)) {\n                    return val;\n                }\n            }\n            toStr = input.toString;\n            if (isCallable(toStr)) {\n                val = toStr.call(input);\n                if (isPrimitive(val)) {\n                    return val;\n                }\n            }\n            throw new TypeError();\n        },\n\n        // ES5 9.9\n        // http://es5.github.com/#x9.9\n        /* replaceable with https://npmjs.com/package/es-abstract ES5.ToObject */\n        ToObject: function (o) {\n            if (o == null) { // this matches both null and undefined\n                throw new TypeError(\"can't convert \" + o + ' to object');\n            }\n            return $Object(o);\n        },\n\n        /* replaceable with https://npmjs.com/package/es-abstract ES5.ToUint32 */\n        ToUint32: function ToUint32(x) {\n            return x >>> 0;\n        }\n    };\n\n    //\n    // Function\n    // ========\n    //\n\n    // ES-5 15.3.4.5\n    // http://es5.github.com/#x15.3.4.5\n\n    var Empty = function Empty() {};\n\n    defineProperties(FunctionPrototype, {\n        bind: function bind(that) { // .length is 1\n            // 1. Let Target be the this value.\n            var target = this;\n            // 2. If IsCallable(Target) is false, throw a TypeError exception.\n            if (!isCallable(target)) {\n                throw new TypeError('Function.prototype.bind called on incompatible ' + target);\n            }\n            // 3. Let A be a new (possibly empty) internal list of all of the\n            //   argument values provided after thisArg (arg1, arg2 etc), in order.\n            // XXX slicedArgs will stand in for \"A\" if used\n            var args = array_slice.call(arguments, 1); // for normal call\n            // 4. Let F be a new native ECMAScript object.\n            // 11. Set the [[Prototype]] internal property of F to the standard\n            //   built-in Function prototype object as specified in 15.3.3.1.\n            // 12. Set the [[Call]] internal property of F as described in\n            //   15.3.4.5.1.\n            // 13. Set the [[Construct]] internal property of F as described in\n            //   15.3.4.5.2.\n            // 14. Set the [[HasInstance]] internal property of F as described in\n            //   15.3.4.5.3.\n            var bound;\n            var binder = function () {\n\n                if (this instanceof bound) {\n                    // 15.3.4.5.2 [[Construct]]\n                    // When the [[Construct]] internal method of a function object,\n                    // F that was created using the bind function is called with a\n                    // list of arguments ExtraArgs, the following steps are taken:\n                    // 1. Let target be the value of F's [[TargetFunction]]\n                    //   internal property.\n                    // 2. If target has no [[Construct]] internal method, a\n                    //   TypeError exception is thrown.\n                    // 3. Let boundArgs be the value of F's [[BoundArgs]] internal\n                    //   property.\n                    // 4. Let args be a new list containing the same values as the\n                    //   list boundArgs in the same order followed by the same\n                    //   values as the list ExtraArgs in the same order.\n                    // 5. Return the result of calling the [[Construct]] internal\n                    //   method of target providing args as the arguments.\n\n                    var result = apply.call(\n                        target,\n                        this,\n                        array_concat.call(args, array_slice.call(arguments))\n                    );\n                    if ($Object(result) === result) {\n                        return result;\n                    }\n                    return this;\n\n                } else {\n                    // 15.3.4.5.1 [[Call]]\n                    // When the [[Call]] internal method of a function object, F,\n                    // which was created using the bind function is called with a\n                    // this value and a list of arguments ExtraArgs, the following\n                    // steps are taken:\n                    // 1. Let boundArgs be the value of F's [[BoundArgs]] internal\n                    //   property.\n                    // 2. Let boundThis be the value of F's [[BoundThis]] internal\n                    //   property.\n                    // 3. Let target be the value of F's [[TargetFunction]] internal\n                    //   property.\n                    // 4. Let args be a new list containing the same values as the\n                    //   list boundArgs in the same order followed by the same\n                    //   values as the list ExtraArgs in the same order.\n                    // 5. Return the result of calling the [[Call]] internal method\n                    //   of target providing boundThis as the this value and\n                    //   providing args as the arguments.\n\n                    // equiv: target.call(this, ...boundArgs, ...args)\n                    return apply.call(\n                        target,\n                        that,\n                        array_concat.call(args, array_slice.call(arguments))\n                    );\n\n                }\n\n            };\n\n            // 15. If the [[Class]] internal property of Target is \"Function\", then\n            //     a. Let L be the length property of Target minus the length of A.\n            //     b. Set the length own property of F to either 0 or L, whichever is\n            //       larger.\n            // 16. Else set the length own property of F to 0.\n\n            var boundLength = max(0, target.length - args.length);\n\n            // 17. Set the attributes of the length own property of F to the values\n            //   specified in 15.3.5.1.\n            var boundArgs = [];\n            for (var i = 0; i < boundLength; i++) {\n                array_push.call(boundArgs, '$' + i);\n            }\n\n            // XXX Build a dynamic function with desired amount of arguments is the only\n            // way to set the length property of a function.\n            // In environments where Content Security Policies enabled (Chrome extensions,\n            // for ex.) all use of eval or Function costructor throws an exception.\n            // However in all of these environments Function.prototype.bind exists\n            // and so this code will never be executed.\n            bound = $Function('binder', 'return function (' + array_join.call(boundArgs, ',') + '){ return binder.apply(this, arguments); }')(binder);\n\n            if (target.prototype) {\n                Empty.prototype = target.prototype;\n                bound.prototype = new Empty();\n                // Clean up dangling references.\n                Empty.prototype = null;\n            }\n\n            // TODO\n            // 18. Set the [[Extensible]] internal property of F to true.\n\n            // TODO\n            // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).\n            // 20. Call the [[DefineOwnProperty]] internal method of F with\n            //   arguments \"caller\", PropertyDescriptor {[[Get]]: thrower, [[Set]]:\n            //   thrower, [[Enumerable]]: false, [[Configurable]]: false}, and\n            //   false.\n            // 21. Call the [[DefineOwnProperty]] internal method of F with\n            //   arguments \"arguments\", PropertyDescriptor {[[Get]]: thrower,\n            //   [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},\n            //   and false.\n\n            // TODO\n            // NOTE Function objects created using Function.prototype.bind do not\n            // have a prototype property or the [[Code]], [[FormalParameters]], and\n            // [[Scope]] internal properties.\n            // XXX can't delete prototype in pure-js.\n\n            // 22. Return F.\n            return bound;\n        }\n    });\n\n    // _Please note: Shortcuts are defined after `Function.prototype.bind` as we\n    // use it in defining shortcuts.\n    var owns = call.bind(ObjectPrototype.hasOwnProperty);\n    var toStr = call.bind(ObjectPrototype.toString);\n    var arraySlice = call.bind(array_slice);\n    var arraySliceApply = apply.bind(array_slice);\n    /* globals document */\n    if (typeof document === 'object' && document && document.documentElement) {\n        try {\n            arraySlice(document.documentElement.childNodes);\n        } catch (e) {\n            var origArraySlice = arraySlice;\n            var origArraySliceApply = arraySliceApply;\n            arraySlice = function arraySliceIE(arr) {\n                var r = [];\n                var i = arr.length;\n                while (i-- > 0) {\n                    r[i] = arr[i];\n                }\n                return origArraySliceApply(r, origArraySlice(arguments, 1));\n            };\n            arraySliceApply = function arraySliceApplyIE(arr, args) {\n                return origArraySliceApply(arraySlice(arr), args);\n            };\n        }\n    }\n    var strSlice = call.bind(StringPrototype.slice);\n    var strSplit = call.bind(StringPrototype.split);\n    var strIndexOf = call.bind(StringPrototype.indexOf);\n    var pushCall = call.bind(array_push);\n    var isEnum = call.bind(ObjectPrototype.propertyIsEnumerable);\n    var arraySort = call.bind(ArrayPrototype.sort);\n\n    //\n    // Array\n    // =====\n    //\n\n    var isArray = $Array.isArray || function isArray(obj) {\n        return toStr(obj) === '[object Array]';\n    };\n\n    // ES5 15.4.4.12\n    // http://es5.github.com/#x15.4.4.13\n    // Return len+argCount.\n    // [bugfix, ielt8]\n    // IE < 8 bug: [].unshift(0) === undefined but should be \"1\"\n    var hasUnshiftReturnValueBug = [].unshift(0) !== 1;\n    defineProperties(ArrayPrototype, {\n        unshift: function () {\n            array_unshift.apply(this, arguments);\n            return this.length;\n        }\n    }, hasUnshiftReturnValueBug);\n\n    // ES5 15.4.3.2\n    // http://es5.github.com/#x15.4.3.2\n    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray\n    defineProperties($Array, { isArray: isArray });\n\n    // The IsCallable() check in the Array functions\n    // has been replaced with a strict check on the\n    // internal class of the object to trap cases where\n    // the provided function was actually a regular\n    // expression literal, which in V8 and\n    // JavaScriptCore is a typeof \"function\".  Only in\n    // V8 are regular expression literals permitted as\n    // reduce parameters, so it is desirable in the\n    // general case for the shim to match the more\n    // strict and common behavior of rejecting regular\n    // expressions.\n\n    // ES5 15.4.4.18\n    // http://es5.github.com/#x15.4.4.18\n    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach\n\n    // Check failure of by-index access of string characters (IE < 9)\n    // and failure of `0 in boxedString` (Rhino)\n    var boxedString = $Object('a');\n    var splitString = boxedString[0] !== 'a' || !(0 in boxedString);\n\n    var properlyBoxesContext = function properlyBoxed(method) {\n        // Check node 0.6.21 bug where third parameter is not boxed\n        var properlyBoxesNonStrict = true;\n        var properlyBoxesStrict = true;\n        var threwException = false;\n        if (method) {\n            try {\n                method.call('foo', function (_, __, context) {\n                    if (typeof context !== 'object') {\n                        properlyBoxesNonStrict = false;\n                    }\n                });\n\n                method.call([1], function () {\n                    'use strict';\n\n                    properlyBoxesStrict = typeof this === 'string';\n                }, 'x');\n            } catch (e) {\n                threwException = true;\n            }\n        }\n        return !!method && !threwException && properlyBoxesNonStrict && properlyBoxesStrict;\n    };\n\n    defineProperties(ArrayPrototype, {\n        forEach: function forEach(callbackfn/*, thisArg*/) {\n            var object = ES.ToObject(this);\n            var self = splitString && isString(this) ? strSplit(this, '') : object;\n            var i = -1;\n            var length = ES.ToUint32(self.length);\n            var T;\n            if (arguments.length > 1) {\n                T = arguments[1];\n            }\n\n            // If no callback function or if callback is not a callable function\n            if (!isCallable(callbackfn)) {\n                throw new TypeError('Array.prototype.forEach callback must be a function');\n            }\n\n            while (++i < length) {\n                if (i in self) {\n                    // Invoke the callback function with call, passing arguments:\n                    // context, property value, property key, thisArg object\n                    if (typeof T === 'undefined') {\n                        callbackfn(self[i], i, object);\n                    } else {\n                        callbackfn.call(T, self[i], i, object);\n                    }\n                }\n            }\n        }\n    }, !properlyBoxesContext(ArrayPrototype.forEach));\n\n    // ES5 15.4.4.19\n    // http://es5.github.com/#x15.4.4.19\n    // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map\n    defineProperties(ArrayPrototype, {\n        map: function map(callbackfn/*, thisArg*/) {\n            var object = ES.ToObject(this);\n            var self = splitString && isString(this) ? strSplit(this, '') : object;\n            var length = ES.ToUint32(self.length);\n            var result = $Array(length);\n            var T;\n            if (arguments.length > 1) {\n                T = arguments[1];\n            }\n\n            // If no callback function or if callback is not a callable function\n            if (!isCallable(callbackfn)) {\n                throw new TypeError('Array.prototype.map callback must be a function');\n            }\n\n            for (var i = 0; i < length; i++) {\n                if (i in self) {\n                    if (typeof T === 'undefined') {\n                        result[i] = callbackfn(self[i], i, object);\n                    } else {\n                        result[i] = callbackfn.call(T, self[i], i, object);\n                    }\n                }\n            }\n            return result;\n        }\n    }, !properlyBoxesContext(ArrayPrototype.map));\n\n    // ES5 15.4.4.20\n    // http://es5.github.com/#x15.4.4.20\n    // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter\n    defineProperties(ArrayPrototype, {\n        filter: function filter(callbackfn/*, thisArg*/) {\n            var object = ES.ToObject(this);\n            var self = splitString && isString(this) ? strSplit(this, '') : object;\n            var length = ES.ToUint32(self.length);\n            var result = [];\n            var value;\n            var T;\n            if (arguments.length > 1) {\n                T = arguments[1];\n            }\n\n            // If no callback function or if callback is not a callable function\n            if (!isCallable(callbackfn)) {\n                throw new TypeError('Array.prototype.filter callback must be a function');\n            }\n\n            for (var i = 0; i < length; i++) {\n                if (i in self) {\n                    value = self[i];\n                    if (typeof T === 'undefined' ? callbackfn(value, i, object) : callbackfn.call(T, value, i, object)) {\n                        pushCall(result, value);\n                    }\n                }\n            }\n            return result;\n        }\n    }, !properlyBoxesContext(ArrayPrototype.filter));\n\n    // ES5 15.4.4.16\n    // http://es5.github.com/#x15.4.4.16\n    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every\n    defineProperties(ArrayPrototype, {\n        every: function every(callbackfn/*, thisArg*/) {\n            var object = ES.ToObject(this);\n            var self = splitString && isString(this) ? strSplit(this, '') : object;\n            var length = ES.ToUint32(self.length);\n            var T;\n            if (arguments.length > 1) {\n                T = arguments[1];\n            }\n\n            // If no callback function or if callback is not a callable function\n            if (!isCallable(callbackfn)) {\n                throw new TypeError('Array.prototype.every callback must be a function');\n            }\n\n            for (var i = 0; i < length; i++) {\n                if (i in self && !(typeof T === 'undefined' ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }, !properlyBoxesContext(ArrayPrototype.every));\n\n    // ES5 15.4.4.17\n    // http://es5.github.com/#x15.4.4.17\n    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some\n    defineProperties(ArrayPrototype, {\n        some: function some(callbackfn/*, thisArg */) {\n            var object = ES.ToObject(this);\n            var self = splitString && isString(this) ? strSplit(this, '') : object;\n            var length = ES.ToUint32(self.length);\n            var T;\n            if (arguments.length > 1) {\n                T = arguments[1];\n            }\n\n            // If no callback function or if callback is not a callable function\n            if (!isCallable(callbackfn)) {\n                throw new TypeError('Array.prototype.some callback must be a function');\n            }\n\n            for (var i = 0; i < length; i++) {\n                if (i in self && (typeof T === 'undefined' ? callbackfn(self[i], i, object) : callbackfn.call(T, self[i], i, object))) {\n                    return true;\n                }\n            }\n            return false;\n        }\n    }, !properlyBoxesContext(ArrayPrototype.some));\n\n    // ES5 15.4.4.21\n    // http://es5.github.com/#x15.4.4.21\n    // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce\n    var reduceCoercesToObject = false;\n    if (ArrayPrototype.reduce) {\n        reduceCoercesToObject = typeof ArrayPrototype.reduce.call('es5', function (_, __, ___, list) {\n            return list;\n        }) === 'object';\n    }\n    defineProperties(ArrayPrototype, {\n        reduce: function reduce(callbackfn/*, initialValue*/) {\n            var object = ES.ToObject(this);\n            var self = splitString && isString(this) ? strSplit(this, '') : object;\n            var length = ES.ToUint32(self.length);\n\n            // If no callback function or if callback is not a callable function\n            if (!isCallable(callbackfn)) {\n                throw new TypeError('Array.prototype.reduce callback must be a function');\n            }\n\n            // no value to return if no initial value and an empty array\n            if (length === 0 && arguments.length === 1) {\n                throw new TypeError('reduce of empty array with no initial value');\n            }\n\n            var i = 0;\n            var result;\n            if (arguments.length >= 2) {\n                result = arguments[1];\n            } else {\n                do {\n                    if (i in self) {\n                        result = self[i++];\n                        break;\n                    }\n\n                    // if array contains no values, no initial value to return\n                    if (++i >= length) {\n                        throw new TypeError('reduce of empty array with no initial value');\n                    }\n                } while (true);\n            }\n\n            for (; i < length; i++) {\n                if (i in self) {\n                    result = callbackfn(result, self[i], i, object);\n                }\n            }\n\n            return result;\n        }\n    }, !reduceCoercesToObject);\n\n    // ES5 15.4.4.22\n    // http://es5.github.com/#x15.4.4.22\n    // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight\n    var reduceRightCoercesToObject = false;\n    if (ArrayPrototype.reduceRight) {\n        reduceRightCoercesToObject = typeof ArrayPrototype.reduceRight.call('es5', function (_, __, ___, list) {\n            return list;\n        }) === 'object';\n    }\n    defineProperties(ArrayPrototype, {\n        reduceRight: function reduceRight(callbackfn/*, initial*/) {\n            var object = ES.ToObject(this);\n            var self = splitString && isString(this) ? strSplit(this, '') : object;\n            var length = ES.ToUint32(self.length);\n\n            // If no callback function or if callback is not a callable function\n            if (!isCallable(callbackfn)) {\n                throw new TypeError('Array.prototype.reduceRight callback must be a function');\n            }\n\n            // no value to return if no initial value, empty array\n            if (length === 0 && arguments.length === 1) {\n                throw new TypeError('reduceRight of empty array with no initial value');\n            }\n\n            var result;\n            var i = length - 1;\n            if (arguments.length >= 2) {\n                result = arguments[1];\n            } else {\n                do {\n                    if (i in self) {\n                        result = self[i--];\n                        break;\n                    }\n\n                    // if array contains no values, no initial value to return\n                    if (--i < 0) {\n                        throw new TypeError('reduceRight of empty array with no initial value');\n                    }\n                } while (true);\n            }\n\n            if (i < 0) {\n                return result;\n            }\n\n            do {\n                if (i in self) {\n                    result = callbackfn(result, self[i], i, object);\n                }\n            } while (i--);\n\n            return result;\n        }\n    }, !reduceRightCoercesToObject);\n\n    // ES5 15.4.4.14\n    // http://es5.github.com/#x15.4.4.14\n    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf\n    var hasFirefox2IndexOfBug = ArrayPrototype.indexOf && [0, 1].indexOf(1, 2) !== -1;\n    defineProperties(ArrayPrototype, {\n        indexOf: function indexOf(searchElement/*, fromIndex */) {\n            var self = splitString && isString(this) ? strSplit(this, '') : ES.ToObject(this);\n            var length = ES.ToUint32(self.length);\n\n            if (length === 0) {\n                return -1;\n            }\n\n            var i = 0;\n            if (arguments.length > 1) {\n                i = ES.ToInteger(arguments[1]);\n            }\n\n            // handle negative indices\n            i = i >= 0 ? i : max(0, length + i);\n            for (; i < length; i++) {\n                if (i in self && self[i] === searchElement) {\n                    return i;\n                }\n            }\n            return -1;\n        }\n    }, hasFirefox2IndexOfBug);\n\n    // ES5 15.4.4.15\n    // http://es5.github.com/#x15.4.4.15\n    // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf\n    var hasFirefox2LastIndexOfBug = ArrayPrototype.lastIndexOf && [0, 1].lastIndexOf(0, -3) !== -1;\n    defineProperties(ArrayPrototype, {\n        lastIndexOf: function lastIndexOf(searchElement/*, fromIndex */) {\n            var self = splitString && isString(this) ? strSplit(this, '') : ES.ToObject(this);\n            var length = ES.ToUint32(self.length);\n\n            if (length === 0) {\n                return -1;\n            }\n            var i = length - 1;\n            if (arguments.length > 1) {\n                i = min(i, ES.ToInteger(arguments[1]));\n            }\n            // handle negative indices\n            i = i >= 0 ? i : length - Math.abs(i);\n            for (; i >= 0; i--) {\n                if (i in self && searchElement === self[i]) {\n                    return i;\n                }\n            }\n            return -1;\n        }\n    }, hasFirefox2LastIndexOfBug);\n\n    // ES5 15.4.4.12\n    // http://es5.github.com/#x15.4.4.12\n    var spliceNoopReturnsEmptyArray = (function () {\n        var a = [1, 2];\n        var result = a.splice();\n        return a.length === 2 && isArray(result) && result.length === 0;\n    }());\n    defineProperties(ArrayPrototype, {\n        // Safari 5.0 bug where .splice() returns undefined\n        splice: function splice(start, deleteCount) {\n            if (arguments.length === 0) {\n                return [];\n            } else {\n                return array_splice.apply(this, arguments);\n            }\n        }\n    }, !spliceNoopReturnsEmptyArray);\n\n    var spliceWorksWithEmptyObject = (function () {\n        var obj = {};\n        ArrayPrototype.splice.call(obj, 0, 0, 1);\n        return obj.length === 1;\n    }());\n    defineProperties(ArrayPrototype, {\n        splice: function splice(start, deleteCount) {\n            if (arguments.length === 0) {\n                return [];\n            }\n            var args = arguments;\n            this.length = max(ES.ToInteger(this.length), 0);\n            if (arguments.length > 0 && typeof deleteCount !== 'number') {\n                args = arraySlice(arguments);\n                if (args.length < 2) {\n                    pushCall(args, this.length - start);\n                } else {\n                    args[1] = ES.ToInteger(deleteCount);\n                }\n            }\n            return array_splice.apply(this, args);\n        }\n    }, !spliceWorksWithEmptyObject);\n    var spliceWorksWithLargeSparseArrays = (function () {\n        // Per https://github.com/es-shims/es5-shim/issues/295\n        // Safari 7/8 breaks with sparse arrays of size 1e5 or greater\n        var arr = new $Array(1e5);\n        // note: the index MUST be 8 or larger or the test will false pass\n        arr[8] = 'x';\n        arr.splice(1, 1);\n        // note: this test must be defined *after* the indexOf shim\n        // per https://github.com/es-shims/es5-shim/issues/313\n        return arr.indexOf('x') === 7;\n    }());\n    var spliceWorksWithSmallSparseArrays = (function () {\n        // Per https://github.com/es-shims/es5-shim/issues/295\n        // Opera 12.15 breaks on this, no idea why.\n        var n = 256;\n        var arr = [];\n        arr[n] = 'a';\n        arr.splice(n + 1, 0, 'b');\n        return arr[n] === 'a';\n    }());\n    defineProperties(ArrayPrototype, {\n        splice: function splice(start, deleteCount) {\n            var O = ES.ToObject(this);\n            var A = [];\n            var len = ES.ToUint32(O.length);\n            var relativeStart = ES.ToInteger(start);\n            var actualStart = relativeStart < 0 ? max((len + relativeStart), 0) : min(relativeStart, len);\n            var actualDeleteCount = min(max(ES.ToInteger(deleteCount), 0), len - actualStart);\n\n            var k = 0;\n            var from;\n            while (k < actualDeleteCount) {\n                from = $String(actualStart + k);\n                if (owns(O, from)) {\n                    A[k] = O[from];\n                }\n                k += 1;\n            }\n\n            var items = arraySlice(arguments, 2);\n            var itemCount = items.length;\n            var to;\n            if (itemCount < actualDeleteCount) {\n                k = actualStart;\n                var maxK = len - actualDeleteCount;\n                while (k < maxK) {\n                    from = $String(k + actualDeleteCount);\n                    to = $String(k + itemCount);\n                    if (owns(O, from)) {\n                        O[to] = O[from];\n                    } else {\n                        delete O[to];\n                    }\n                    k += 1;\n                }\n                k = len;\n                var minK = len - actualDeleteCount + itemCount;\n                while (k > minK) {\n                    delete O[k - 1];\n                    k -= 1;\n                }\n            } else if (itemCount > actualDeleteCount) {\n                k = len - actualDeleteCount;\n                while (k > actualStart) {\n                    from = $String(k + actualDeleteCount - 1);\n                    to = $String(k + itemCount - 1);\n                    if (owns(O, from)) {\n                        O[to] = O[from];\n                    } else {\n                        delete O[to];\n                    }\n                    k -= 1;\n                }\n            }\n            k = actualStart;\n            for (var i = 0; i < items.length; ++i) {\n                O[k] = items[i];\n                k += 1;\n            }\n            O.length = len - actualDeleteCount + itemCount;\n\n            return A;\n        }\n    }, !spliceWorksWithLargeSparseArrays || !spliceWorksWithSmallSparseArrays);\n\n    var originalJoin = ArrayPrototype.join;\n    var hasStringJoinBug;\n    try {\n        hasStringJoinBug = Array.prototype.join.call('123', ',') !== '1,2,3';\n    } catch (e) {\n        hasStringJoinBug = true;\n    }\n    if (hasStringJoinBug) {\n        defineProperties(ArrayPrototype, {\n            join: function join(separator) {\n                var sep = typeof separator === 'undefined' ? ',' : separator;\n                return originalJoin.call(isString(this) ? strSplit(this, '') : this, sep);\n            }\n        }, hasStringJoinBug);\n    }\n\n    var hasJoinUndefinedBug = [1, 2].join(undefined) !== '1,2';\n    if (hasJoinUndefinedBug) {\n        defineProperties(ArrayPrototype, {\n            join: function join(separator) {\n                var sep = typeof separator === 'undefined' ? ',' : separator;\n                return originalJoin.call(this, sep);\n            }\n        }, hasJoinUndefinedBug);\n    }\n\n    var pushShim = function push(item) {\n        var O = ES.ToObject(this);\n        var n = ES.ToUint32(O.length);\n        var i = 0;\n        while (i < arguments.length) {\n            O[n + i] = arguments[i];\n            i += 1;\n        }\n        O.length = n + i;\n        return n + i;\n    };\n\n    var pushIsNotGeneric = (function () {\n        var obj = {};\n        var result = Array.prototype.push.call(obj, undefined);\n        return result !== 1 || obj.length !== 1 || typeof obj[0] !== 'undefined' || !owns(obj, 0);\n    }());\n    defineProperties(ArrayPrototype, {\n        push: function push(item) {\n            if (isArray(this)) {\n                return array_push.apply(this, arguments);\n            }\n            return pushShim.apply(this, arguments);\n        }\n    }, pushIsNotGeneric);\n\n    // This fixes a very weird bug in Opera 10.6 when pushing `undefined\n    var pushUndefinedIsWeird = (function () {\n        var arr = [];\n        var result = arr.push(undefined);\n        return result !== 1 || arr.length !== 1 || typeof arr[0] !== 'undefined' || !owns(arr, 0);\n    }());\n    defineProperties(ArrayPrototype, { push: pushShim }, pushUndefinedIsWeird);\n\n    // ES5 15.2.3.14\n    // http://es5.github.io/#x15.4.4.10\n    // Fix boxed string bug\n    defineProperties(ArrayPrototype, {\n        slice: function (start, end) {\n            var arr = isString(this) ? strSplit(this, '') : this;\n            return arraySliceApply(arr, arguments);\n        }\n    }, splitString);\n\n    var sortIgnoresNonFunctions = (function () {\n        try {\n            [1, 2].sort(null);\n        } catch (e) {\n            try {\n                [1, 2].sort({});\n            } catch (e2) {\n                return false;\n            }\n        }\n        return true;\n    }());\n    var sortThrowsOnRegex = (function () {\n        // this is a problem in Firefox 4, in which `typeof /a/ === 'function'`\n        try {\n            [1, 2].sort(/a/);\n            return false;\n        } catch (e) {}\n        return true;\n    }());\n    var sortIgnoresUndefined = (function () {\n        // applies in IE 8, for one.\n        try {\n            [1, 2].sort(undefined);\n            return true;\n        } catch (e) {}\n        return false;\n    }());\n    defineProperties(ArrayPrototype, {\n        sort: function sort(compareFn) {\n            if (typeof compareFn === 'undefined') {\n                return arraySort(this);\n            }\n            if (!isCallable(compareFn)) {\n                throw new TypeError('Array.prototype.sort callback must be a function');\n            }\n            return arraySort(this, compareFn);\n        }\n    }, sortIgnoresNonFunctions || !sortIgnoresUndefined || !sortThrowsOnRegex);\n\n    //\n    // Object\n    // ======\n    //\n\n    // ES5 15.2.3.14\n    // http://es5.github.com/#x15.2.3.14\n\n    // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation\n    var hasDontEnumBug = !isEnum({ 'toString': null }, 'toString'); // jscs:ignore disallowQuotedKeysInObjects\n    var hasProtoEnumBug = isEnum(function () {}, 'prototype');\n    var hasStringEnumBug = !owns('x', '0');\n    var equalsConstructorPrototype = function (o) {\n        var ctor = o.constructor;\n        return ctor && ctor.prototype === o;\n    };\n    var excludedKeys = {\n        $window: true,\n        $console: true,\n        $parent: true,\n        $self: true,\n        $frame: true,\n        $frames: true,\n        $frameElement: true,\n        $webkitIndexedDB: true,\n        $webkitStorageInfo: true,\n        $external: true,\n        $width: true,\n        $height: true,\n        $top: true,\n        $localStorage: true\n    };\n    var hasAutomationEqualityBug = (function () {\n        /* globals window */\n        if (typeof window === 'undefined') {\n            return false;\n        }\n        for (var k in window) {\n            try {\n                if (!excludedKeys['$' + k] && owns(window, k) && window[k] !== null && typeof window[k] === 'object') {\n                    equalsConstructorPrototype(window[k]);\n                }\n            } catch (e) {\n                return true;\n            }\n        }\n        return false;\n    }());\n    var equalsConstructorPrototypeIfNotBuggy = function (object) {\n        if (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n            return equalsConstructorPrototype(object);\n        }\n        try {\n            return equalsConstructorPrototype(object);\n        } catch (e) {\n            return false;\n        }\n    };\n    var dontEnums = [\n        'toString',\n        'toLocaleString',\n        'valueOf',\n        'hasOwnProperty',\n        'isPrototypeOf',\n        'propertyIsEnumerable',\n        'constructor'\n    ];\n    var dontEnumsLength = dontEnums.length;\n\n    // taken directly from https://github.com/ljharb/is-arguments/blob/master/index.js\n    // can be replaced with require('is-arguments') if we ever use a build process instead\n    var isStandardArguments = function isArguments(value) {\n        return toStr(value) === '[object Arguments]';\n    };\n    var isLegacyArguments = function isArguments(value) {\n        return value !== null\n            && typeof value === 'object'\n            && typeof value.length === 'number'\n            && value.length >= 0\n            && !isArray(value)\n            && isCallable(value.callee);\n    };\n    var isArguments = isStandardArguments(arguments) ? isStandardArguments : isLegacyArguments;\n\n    defineProperties($Object, {\n        keys: function keys(object) {\n            var isFn = isCallable(object);\n            var isArgs = isArguments(object);\n            var isObject = object !== null && typeof object === 'object';\n            var isStr = isObject && isString(object);\n\n            if (!isObject && !isFn && !isArgs) {\n                throw new TypeError('Object.keys called on a non-object');\n            }\n\n            var theKeys = [];\n            var skipProto = hasProtoEnumBug && isFn;\n            if ((isStr && hasStringEnumBug) || isArgs) {\n                for (var i = 0; i < object.length; ++i) {\n                    pushCall(theKeys, $String(i));\n                }\n            }\n\n            if (!isArgs) {\n                for (var name in object) {\n                    if (!(skipProto && name === 'prototype') && owns(object, name)) {\n                        pushCall(theKeys, $String(name));\n                    }\n                }\n            }\n\n            if (hasDontEnumBug) {\n                var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n                for (var j = 0; j < dontEnumsLength; j++) {\n                    var dontEnum = dontEnums[j];\n                    if (!(skipConstructor && dontEnum === 'constructor') && owns(object, dontEnum)) {\n                        pushCall(theKeys, dontEnum);\n                    }\n                }\n            }\n            return theKeys;\n        }\n    });\n\n    var keysWorksWithArguments = $Object.keys && (function () {\n        // Safari 5.0 bug\n        return $Object.keys(arguments).length === 2;\n    }(1, 2));\n    var keysHasArgumentsLengthBug = $Object.keys && (function () {\n        var argKeys = $Object.keys(arguments);\n        return arguments.length !== 1 || argKeys.length !== 1 || argKeys[0] !== 1;\n    }(1));\n    var originalKeys = $Object.keys;\n    defineProperties($Object, {\n        keys: function keys(object) {\n            if (isArguments(object)) {\n                return originalKeys(arraySlice(object));\n            } else {\n                return originalKeys(object);\n            }\n        }\n    }, !keysWorksWithArguments || keysHasArgumentsLengthBug);\n\n    //\n    // Date\n    // ====\n    //\n\n    var hasNegativeMonthYearBug = new Date(-3509827329600292).getUTCMonth() !== 0;\n    var aNegativeTestDate = new Date(-1509842289600292);\n    var aPositiveTestDate = new Date(1449662400000);\n    var hasToUTCStringFormatBug = aNegativeTestDate.toUTCString() !== 'Mon, 01 Jan -45875 11:59:59 GMT';\n    var hasToDateStringFormatBug;\n    var hasToStringFormatBug;\n    var timeZoneOffset = aNegativeTestDate.getTimezoneOffset();\n    if (timeZoneOffset < -720) {\n        hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Tue Jan 02 -45875';\n        hasToStringFormatBug = !(/^Thu Dec 10 2015 \\d\\d:\\d\\d:\\d\\d GMT[-+]\\d\\d\\d\\d(?: |$)/).test(String(aPositiveTestDate));\n    } else {\n        hasToDateStringFormatBug = aNegativeTestDate.toDateString() !== 'Mon Jan 01 -45875';\n        hasToStringFormatBug = !(/^Wed Dec 09 2015 \\d\\d:\\d\\d:\\d\\d GMT[-+]\\d\\d\\d\\d(?: |$)/).test(String(aPositiveTestDate));\n    }\n\n    var originalGetFullYear = call.bind(Date.prototype.getFullYear);\n    var originalGetMonth = call.bind(Date.prototype.getMonth);\n    var originalGetDate = call.bind(Date.prototype.getDate);\n    var originalGetUTCFullYear = call.bind(Date.prototype.getUTCFullYear);\n    var originalGetUTCMonth = call.bind(Date.prototype.getUTCMonth);\n    var originalGetUTCDate = call.bind(Date.prototype.getUTCDate);\n    var originalGetUTCDay = call.bind(Date.prototype.getUTCDay);\n    var originalGetUTCHours = call.bind(Date.prototype.getUTCHours);\n    var originalGetUTCMinutes = call.bind(Date.prototype.getUTCMinutes);\n    var originalGetUTCSeconds = call.bind(Date.prototype.getUTCSeconds);\n    var originalGetUTCMilliseconds = call.bind(Date.prototype.getUTCMilliseconds);\n    var dayName = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n    var monthName = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n    var daysInMonth = function daysInMonth(month, year) {\n        return originalGetDate(new Date(year, month, 0));\n    };\n\n    defineProperties(Date.prototype, {\n        getFullYear: function getFullYear() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var year = originalGetFullYear(this);\n            if (year < 0 && originalGetMonth(this) > 11) {\n                return year + 1;\n            }\n            return year;\n        },\n        getMonth: function getMonth() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var year = originalGetFullYear(this);\n            var month = originalGetMonth(this);\n            if (year < 0 && month > 11) {\n                return 0;\n            }\n            return month;\n        },\n        getDate: function getDate() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var year = originalGetFullYear(this);\n            var month = originalGetMonth(this);\n            var date = originalGetDate(this);\n            if (year < 0 && month > 11) {\n                if (month === 12) {\n                    return date;\n                }\n                var days = daysInMonth(0, year + 1);\n                return (days - date) + 1;\n            }\n            return date;\n        },\n        getUTCFullYear: function getUTCFullYear() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var year = originalGetUTCFullYear(this);\n            if (year < 0 && originalGetUTCMonth(this) > 11) {\n                return year + 1;\n            }\n            return year;\n        },\n        getUTCMonth: function getUTCMonth() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var year = originalGetUTCFullYear(this);\n            var month = originalGetUTCMonth(this);\n            if (year < 0 && month > 11) {\n                return 0;\n            }\n            return month;\n        },\n        getUTCDate: function getUTCDate() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var year = originalGetUTCFullYear(this);\n            var month = originalGetUTCMonth(this);\n            var date = originalGetUTCDate(this);\n            if (year < 0 && month > 11) {\n                if (month === 12) {\n                    return date;\n                }\n                var days = daysInMonth(0, year + 1);\n                return (days - date) + 1;\n            }\n            return date;\n        }\n    }, hasNegativeMonthYearBug);\n\n    defineProperties(Date.prototype, {\n        toUTCString: function toUTCString() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var day = originalGetUTCDay(this);\n            var date = originalGetUTCDate(this);\n            var month = originalGetUTCMonth(this);\n            var year = originalGetUTCFullYear(this);\n            var hour = originalGetUTCHours(this);\n            var minute = originalGetUTCMinutes(this);\n            var second = originalGetUTCSeconds(this);\n            return dayName[day] + ', '\n                + (date < 10 ? '0' + date : date) + ' '\n                + monthName[month] + ' '\n                + year + ' '\n                + (hour < 10 ? '0' + hour : hour) + ':'\n                + (minute < 10 ? '0' + minute : minute) + ':'\n                + (second < 10 ? '0' + second : second) + ' GMT';\n        }\n    }, hasNegativeMonthYearBug || hasToUTCStringFormatBug);\n\n    // Opera 12 has `,`\n    defineProperties(Date.prototype, {\n        toDateString: function toDateString() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var day = this.getDay();\n            var date = this.getDate();\n            var month = this.getMonth();\n            var year = this.getFullYear();\n            return dayName[day] + ' '\n                + monthName[month] + ' '\n                + (date < 10 ? '0' + date : date) + ' '\n                + year;\n        }\n    }, hasNegativeMonthYearBug || hasToDateStringFormatBug);\n\n    // can't use defineProperties here because of toString enumeration issue in IE <= 8\n    if (hasNegativeMonthYearBug || hasToStringFormatBug) {\n        Date.prototype.toString = function toString() {\n            if (!this || !(this instanceof Date)) {\n                throw new TypeError('this is not a Date object.');\n            }\n            var day = this.getDay();\n            var date = this.getDate();\n            var month = this.getMonth();\n            var year = this.getFullYear();\n            var hour = this.getHours();\n            var minute = this.getMinutes();\n            var second = this.getSeconds();\n            var timezoneOffset = this.getTimezoneOffset();\n            var hoursOffset = Math.floor(Math.abs(timezoneOffset) / 60);\n            var minutesOffset = Math.floor(Math.abs(timezoneOffset) % 60);\n            return dayName[day] + ' '\n                + monthName[month] + ' '\n                + (date < 10 ? '0' + date : date) + ' '\n                + year + ' '\n                + (hour < 10 ? '0' + hour : hour) + ':'\n                + (minute < 10 ? '0' + minute : minute) + ':'\n                + (second < 10 ? '0' + second : second) + ' GMT'\n                + (timezoneOffset > 0 ? '-' : '+')\n                + (hoursOffset < 10 ? '0' + hoursOffset : hoursOffset)\n                + (minutesOffset < 10 ? '0' + minutesOffset : minutesOffset);\n        };\n        if (supportsDescriptors) {\n            $Object.defineProperty(Date.prototype, 'toString', {\n                configurable: true,\n                enumerable: false,\n                writable: true\n            });\n        }\n    }\n\n    // ES5 15.9.5.43\n    // http://es5.github.com/#x15.9.5.43\n    // This function returns a String value represent the instance in time\n    // represented by this Date object. The format of the String is the Date Time\n    // string format defined in 15.9.1.15. All fields are present in the String.\n    // The time zone is always UTC, denoted by the suffix Z. If the time value of\n    // this object is not a finite Number a RangeError exception is thrown.\n    var negativeDate = -62198755200000;\n    var negativeYearString = '-000001';\n    var hasNegativeDateBug = Date.prototype.toISOString && new Date(negativeDate).toISOString().indexOf(negativeYearString) === -1; // eslint-disable-line max-len\n    var hasSafari51DateBug = Date.prototype.toISOString && new Date(-1).toISOString() !== '1969-12-31T23:59:59.999Z';\n\n    var getTime = call.bind(Date.prototype.getTime);\n\n    defineProperties(Date.prototype, {\n        toISOString: function toISOString() {\n            if (!isFinite(this) || !isFinite(getTime(this))) {\n                // Adope Photoshop requires the second check.\n                throw new RangeError('Date.prototype.toISOString called on non-finite value.');\n            }\n\n            var year = originalGetUTCFullYear(this);\n\n            var month = originalGetUTCMonth(this);\n            // see https://github.com/es-shims/es5-shim/issues/111\n            year += Math.floor(month / 12);\n            month = ((month % 12) + 12) % 12;\n\n            // the date time string format is specified in 15.9.1.15.\n            var result = [\n                month + 1,\n                originalGetUTCDate(this),\n                originalGetUTCHours(this),\n                originalGetUTCMinutes(this),\n                originalGetUTCSeconds(this)\n            ];\n            year = (\n                (year < 0 ? '-' : (year > 9999 ? '+' : ''))\n                + strSlice('00000' + Math.abs(year), (0 <= year && year <= 9999) ? -4 : -6)\n            );\n\n            for (var i = 0; i < result.length; ++i) {\n                // pad months, days, hours, minutes, and seconds to have two digits.\n                result[i] = strSlice('00' + result[i], -2);\n            }\n            // pad milliseconds to have three digits.\n            return (\n                year + '-' + arraySlice(result, 0, 2).join('-')\n                + 'T' + arraySlice(result, 2).join(':') + '.'\n                + strSlice('000' + originalGetUTCMilliseconds(this), -3) + 'Z'\n            );\n        }\n    }, hasNegativeDateBug || hasSafari51DateBug);\n\n    // ES5 15.9.5.44\n    // http://es5.github.com/#x15.9.5.44\n    // This function provides a String representation of a Date object for use by\n    // JSON.stringify (15.12.3).\n    var dateToJSONIsSupported = (function () {\n        try {\n            return Date.prototype.toJSON\n                && new Date(NaN).toJSON() === null\n                && new Date(negativeDate).toJSON().indexOf(negativeYearString) !== -1\n                && Date.prototype.toJSON.call({ // generic\n                    toISOString: function () { return true; }\n                });\n        } catch (e) {\n            return false;\n        }\n    }());\n    if (!dateToJSONIsSupported) {\n        Date.prototype.toJSON = function toJSON(key) {\n            // When the toJSON method is called with argument key, the following\n            // steps are taken:\n\n            // 1.  Let O be the result of calling ToObject, giving it the this\n            // value as its argument.\n            // 2. Let tv be ES.ToPrimitive(O, hint Number).\n            var O = $Object(this);\n            var tv = ES.ToPrimitive(O);\n            // 3. If tv is a Number and is not finite, return null.\n            if (typeof tv === 'number' && !isFinite(tv)) {\n                return null;\n            }\n            // 4. Let toISO be the result of calling the [[Get]] internal method of\n            // O with argument \"toISOString\".\n            var toISO = O.toISOString;\n            // 5. If IsCallable(toISO) is false, throw a TypeError exception.\n            if (!isCallable(toISO)) {\n                throw new TypeError('toISOString property is not callable');\n            }\n            // 6. Return the result of calling the [[Call]] internal method of\n            //  toISO with O as the this value and an empty argument list.\n            return toISO.call(O);\n\n            // NOTE 1 The argument is ignored.\n\n            // NOTE 2 The toJSON function is intentionally generic; it does not\n            // require that its this value be a Date object. Therefore, it can be\n            // transferred to other kinds of objects for use as a method. However,\n            // it does require that any such object have a toISOString method. An\n            // object is free to use the argument key to filter its\n            // stringification.\n        };\n    }\n\n    // ES5 15.9.4.2\n    // http://es5.github.com/#x15.9.4.2\n    // based on work shared by Daniel Friesen (dantman)\n    // http://gist.github.com/303249\n    var supportsExtendedYears = Date.parse('+033658-09-27T01:46:40.000Z') === 1e15;\n    var acceptsInvalidDates = !isNaN(Date.parse('2012-04-04T24:00:00.500Z')) || !isNaN(Date.parse('2012-11-31T23:59:59.000Z')) || !isNaN(Date.parse('2012-12-31T23:59:60.000Z'));\n    var doesNotParseY2KNewYear = isNaN(Date.parse('2000-01-01T00:00:00.000Z'));\n    if (doesNotParseY2KNewYear || acceptsInvalidDates || !supportsExtendedYears) {\n        // XXX global assignment won't work in embeddings that use\n        // an alternate object for the context.\n        /* global Date: true */\n        var maxSafeUnsigned32Bit = Math.pow(2, 31) - 1;\n        var hasSafariSignedIntBug = isActualNaN(new Date(1970, 0, 1, 0, 0, 0, maxSafeUnsigned32Bit + 1).getTime());\n        // eslint-disable-next-line no-implicit-globals, no-global-assign\n        Date = (function (NativeDate) {\n            // Date.length === 7\n            var DateShim = function Date(Y, M, D, h, m, s, ms) {\n                var length = arguments.length;\n                var date;\n                if (this instanceof NativeDate) {\n                    var seconds = s;\n                    var millis = ms;\n                    if (hasSafariSignedIntBug && length >= 7 && ms > maxSafeUnsigned32Bit) {\n                        // work around a Safari 8/9 bug where it treats the seconds as signed\n                        var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit;\n                        var sToShift = Math.floor(msToShift / 1e3);\n                        seconds += sToShift;\n                        millis -= sToShift * 1e3;\n                    }\n                    date = length === 1 && $String(Y) === Y // isString(Y)\n                        // We explicitly pass it through parse:\n                        ? new NativeDate(DateShim.parse(Y))\n                        // We have to manually make calls depending on argument\n                        // length here\n                        : length >= 7 ? new NativeDate(Y, M, D, h, m, seconds, millis)\n                            : length >= 6 ? new NativeDate(Y, M, D, h, m, seconds)\n                                : length >= 5 ? new NativeDate(Y, M, D, h, m)\n                                    : length >= 4 ? new NativeDate(Y, M, D, h)\n                                        : length >= 3 ? new NativeDate(Y, M, D)\n                                            : length >= 2 ? new NativeDate(Y, M)\n                                                : length >= 1 ? new NativeDate(Y instanceof NativeDate ? +Y : Y)\n                                                    : new NativeDate();\n                } else {\n                    date = NativeDate.apply(this, arguments);\n                }\n                if (!isPrimitive(date)) {\n                    // Prevent mixups with unfixed Date object\n                    defineProperties(date, { constructor: DateShim }, true);\n                }\n                return date;\n            };\n\n            // 15.9.1.15 Date Time String Format.\n            var isoDateExpression = new RegExp('^'\n                + '(\\\\d{4}|[+-]\\\\d{6})' // four-digit year capture or sign + 6-digit extended year\n                + '(?:-(\\\\d{2})' // optional month capture\n                + '(?:-(\\\\d{2})' // optional day capture\n                + '(?:' // capture hours:minutes:seconds.milliseconds\n                    + 'T(\\\\d{2})' // hours capture\n                    + ':(\\\\d{2})' // minutes capture\n                    + '(?:' // optional :seconds.milliseconds\n                        + ':(\\\\d{2})' // seconds capture\n                        + '(?:(\\\\.\\\\d{1,}))?' // milliseconds capture\n                    + ')?'\n                + '(' // capture UTC offset component\n                    + 'Z|' // UTC capture\n                    + '(?:' // offset specifier +/-hours:minutes\n                        + '([-+])' // sign capture\n                        + '(\\\\d{2})' // hours offset capture\n                        + ':(\\\\d{2})' // minutes offset capture\n                    + ')'\n                + ')?)?)?)?'\n            + '$');\n\n            var months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n\n            var dayFromMonth = function dayFromMonth(year, month) {\n                var t = month > 1 ? 1 : 0;\n                return (\n                    months[month]\n                    + Math.floor((year - 1969 + t) / 4)\n                    - Math.floor((year - 1901 + t) / 100)\n                    + Math.floor((year - 1601 + t) / 400)\n                    + (365 * (year - 1970))\n                );\n            };\n\n            var toUTC = function toUTC(t) {\n                var s = 0;\n                var ms = t;\n                if (hasSafariSignedIntBug && ms > maxSafeUnsigned32Bit) {\n                    // work around a Safari 8/9 bug where it treats the seconds as signed\n                    var msToShift = Math.floor(ms / maxSafeUnsigned32Bit) * maxSafeUnsigned32Bit;\n                    var sToShift = Math.floor(msToShift / 1e3);\n                    s += sToShift;\n                    ms -= sToShift * 1e3;\n                }\n                return $Number(new NativeDate(1970, 0, 1, 0, 0, s, ms));\n            };\n\n            // Copy any custom methods a 3rd party library may have added\n            for (var key in NativeDate) {\n                if (owns(NativeDate, key)) {\n                    DateShim[key] = NativeDate[key];\n                }\n            }\n\n            // Copy \"native\" methods explicitly; they may be non-enumerable\n            defineProperties(DateShim, {\n                now: NativeDate.now,\n                UTC: NativeDate.UTC\n            }, true);\n            DateShim.prototype = NativeDate.prototype;\n            defineProperties(DateShim.prototype, { constructor: DateShim }, true);\n\n            // Upgrade Date.parse to handle simplified ISO 8601 strings\n            var parseShim = function parse(string) {\n                var match = isoDateExpression.exec(string);\n                if (match) {\n                    // parse months, days, hours, minutes, seconds, and milliseconds\n                    // provide default values if necessary\n                    // parse the UTC offset component\n                    var year = $Number(match[1]),\n                        month = $Number(match[2] || 1) - 1,\n                        day = $Number(match[3] || 1) - 1,\n                        hour = $Number(match[4] || 0),\n                        minute = $Number(match[5] || 0),\n                        second = $Number(match[6] || 0),\n                        millisecond = Math.floor($Number(match[7] || 0) * 1000),\n                        // When time zone is missed, local offset should be used\n                        // (ES 5.1 bug)\n                        // see https://bugs.ecmascript.org/show_bug.cgi?id=112\n                        isLocalTime = Boolean(match[4] && !match[8]),\n                        signOffset = match[9] === '-' ? 1 : -1,\n                        hourOffset = $Number(match[10] || 0),\n                        minuteOffset = $Number(match[11] || 0),\n                        result;\n                    var hasMinutesOrSecondsOrMilliseconds = minute > 0 || second > 0 || millisecond > 0;\n                    if (\n                        hour < (hasMinutesOrSecondsOrMilliseconds ? 24 : 25)\n                        && minute < 60 && second < 60 && millisecond < 1000\n                        && month > -1 && month < 12 && hourOffset < 24\n                        && minuteOffset < 60 // detect invalid offsets\n                        && day > -1\n                        && day < (dayFromMonth(year, month + 1) - dayFromMonth(year, month))\n                    ) {\n                        result = (\n                            ((dayFromMonth(year, month) + day) * 24)\n                            + hour\n                            + (hourOffset * signOffset)\n                        ) * 60;\n                        result = ((\n                            ((result + minute + (minuteOffset * signOffset)) * 60)\n                            + second\n                        ) * 1000) + millisecond;\n                        if (isLocalTime) {\n                            result = toUTC(result);\n                        }\n                        if (-8.64e15 <= result && result <= 8.64e15) {\n                            return result;\n                        }\n                    }\n                    return NaN;\n                }\n                return NativeDate.parse.apply(this, arguments);\n            };\n            defineProperties(DateShim, { parse: parseShim });\n\n            return DateShim;\n        }(Date));\n        /* global Date: false */\n    }\n\n    // ES5 15.9.4.4\n    // http://es5.github.com/#x15.9.4.4\n    if (!Date.now) {\n        Date.now = function now() {\n            return new Date().getTime();\n        };\n    }\n\n    //\n    // Number\n    // ======\n    //\n\n    // ES5.1 15.7.4.5\n    // http://es5.github.com/#x15.7.4.5\n    var hasToFixedBugs = NumberPrototype.toFixed && (\n        (0.00008).toFixed(3) !== '0.000'\n        || (0.9).toFixed(0) !== '1'\n        || (1.255).toFixed(2) !== '1.25'\n        || (1000000000000000128).toFixed(0) !== '1000000000000000128'\n    );\n\n    var toFixedHelpers = {\n        base: 1e7,\n        size: 6,\n        data: [0, 0, 0, 0, 0, 0],\n        multiply: function multiply(n, c) {\n            var i = -1;\n            var c2 = c;\n            while (++i < toFixedHelpers.size) {\n                c2 += n * toFixedHelpers.data[i];\n                toFixedHelpers.data[i] = c2 % toFixedHelpers.base;\n                c2 = Math.floor(c2 / toFixedHelpers.base);\n            }\n        },\n        divide: function divide(n) {\n            var i = toFixedHelpers.size;\n            var c = 0;\n            while (--i >= 0) {\n                c += toFixedHelpers.data[i];\n                toFixedHelpers.data[i] = Math.floor(c / n);\n                c = (c % n) * toFixedHelpers.base;\n            }\n        },\n        numToString: function numToString() {\n            var i = toFixedHelpers.size;\n            var s = '';\n            while (--i >= 0) {\n                if (s !== '' || i === 0 || toFixedHelpers.data[i] !== 0) {\n                    var t = $String(toFixedHelpers.data[i]);\n                    if (s === '') {\n                        s = t;\n                    } else {\n                        s += strSlice('0000000', 0, 7 - t.length) + t;\n                    }\n                }\n            }\n            return s;\n        },\n        pow: function pow(x, n, acc) {\n            return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc)));\n        },\n        log: function log(x) {\n            var n = 0;\n            var x2 = x;\n            while (x2 >= 4096) {\n                n += 12;\n                x2 /= 4096;\n            }\n            while (x2 >= 2) {\n                n += 1;\n                x2 /= 2;\n            }\n            return n;\n        }\n    };\n\n    var toFixedShim = function toFixed(fractionDigits) {\n        var f, x, s, m, e, z, j, k;\n\n        // Test for NaN and round fractionDigits down\n        f = $Number(fractionDigits);\n        f = isActualNaN(f) ? 0 : Math.floor(f);\n\n        if (f < 0 || f > 20) {\n            throw new RangeError('Number.toFixed called with invalid number of decimals');\n        }\n\n        x = $Number(this);\n\n        if (isActualNaN(x)) {\n            return 'NaN';\n        }\n\n        // If it is too big or small, return the string value of the number\n        if (x <= -1e21 || x >= 1e21) {\n            return $String(x);\n        }\n\n        s = '';\n\n        if (x < 0) {\n            s = '-';\n            x = -x;\n        }\n\n        m = '0';\n\n        if (x > 1e-21) {\n            // 1e-21 < x < 1e21\n            // -70 < log2(x) < 70\n            e = toFixedHelpers.log(x * toFixedHelpers.pow(2, 69, 1)) - 69;\n            z = (e < 0 ? x * toFixedHelpers.pow(2, -e, 1) : x / toFixedHelpers.pow(2, e, 1));\n            z *= 0x10000000000000; // Math.pow(2, 52);\n            e = 52 - e;\n\n            // -18 < e < 122\n            // x = z / 2 ^ e\n            if (e > 0) {\n                toFixedHelpers.multiply(0, z);\n                j = f;\n\n                while (j >= 7) {\n                    toFixedHelpers.multiply(1e7, 0);\n                    j -= 7;\n                }\n\n                toFixedHelpers.multiply(toFixedHelpers.pow(10, j, 1), 0);\n                j = e - 1;\n\n                while (j >= 23) {\n                    toFixedHelpers.divide(1 << 23);\n                    j -= 23;\n                }\n\n                toFixedHelpers.divide(1 << j);\n                toFixedHelpers.multiply(1, 1);\n                toFixedHelpers.divide(2);\n                m = toFixedHelpers.numToString();\n            } else {\n                toFixedHelpers.multiply(0, z);\n                toFixedHelpers.multiply(1 << (-e), 0);\n                m = toFixedHelpers.numToString() + strSlice('0.00000000000000000000', 2, 2 + f);\n            }\n        }\n\n        if (f > 0) {\n            k = m.length;\n\n            if (k <= f) {\n                m = s + strSlice('0.0000000000000000000', 0, f - k + 2) + m;\n            } else {\n                m = s + strSlice(m, 0, k - f) + '.' + strSlice(m, k - f);\n            }\n        } else {\n            m = s + m;\n        }\n\n        return m;\n    };\n    defineProperties(NumberPrototype, { toFixed: toFixedShim }, hasToFixedBugs);\n\n    var hasToPrecisionUndefinedBug = (function () {\n        try {\n            return 1.0.toPrecision(undefined) === '1';\n        } catch (e) {\n            return true;\n        }\n    }());\n    var originalToPrecision = NumberPrototype.toPrecision;\n    defineProperties(NumberPrototype, {\n        toPrecision: function toPrecision(precision) {\n            return typeof precision === 'undefined' ? originalToPrecision.call(this) : originalToPrecision.call(this, precision);\n        }\n    }, hasToPrecisionUndefinedBug);\n\n    //\n    // String\n    // ======\n    //\n\n    // ES5 15.5.4.14\n    // http://es5.github.com/#x15.5.4.14\n\n    // [bugfix, IE lt 9, firefox 4, Konqueror, Opera, obscure browsers]\n    // Many browsers do not split properly with regular expressions or they\n    // do not perform the split correctly under obscure conditions.\n    // See http://blog.stevenlevithan.com/archives/cross-browser-split\n    // I've tested in many browsers and this seems to cover the deviant ones:\n    //    'ab'.split(/(?:ab)*/) should be [\"\", \"\"], not [\"\"]\n    //    '.'.split(/(.?)(.?)/) should be [\"\", \".\", \"\", \"\"], not [\"\", \"\"]\n    //    'tesst'.split(/(s)*/) should be [\"t\", undefined, \"e\", \"s\", \"t\"], not\n    //       [undefined, \"t\", undefined, \"e\", ...]\n    //    ''.split(/.?/) should be [], not [\"\"]\n    //    '.'.split(/()()/) should be [\".\"], not [\"\", \"\", \".\"]\n\n    if (\n        'ab'.split(/(?:ab)*/).length !== 2\n        || '.'.split(/(.?)(.?)/).length !== 4\n        || 'tesst'.split(/(s)*/)[1] === 't'\n        || 'test'.split(/(?:)/, -1).length !== 4\n        || ''.split(/.?/).length\n        || '.'.split(/()()/).length > 1\n    ) {\n        (function () {\n            var compliantExecNpcg = typeof (/()??/).exec('')[1] === 'undefined'; // NPCG: nonparticipating capturing group\n            var maxSafe32BitInt = Math.pow(2, 32) - 1;\n\n            StringPrototype.split = function (separator, limit) {\n                var string = String(this);\n                if (typeof separator === 'undefined' && limit === 0) {\n                    return [];\n                }\n\n                // If `separator` is not a regex, use native split\n                if (!isRegex(separator)) {\n                    return strSplit(this, separator, limit);\n                }\n\n                var output = [];\n                var flags = (separator.ignoreCase ? 'i' : '')\n                            + (separator.multiline ? 'm' : '')\n                            + (separator.unicode ? 'u' : '') // in ES6\n                            + (separator.sticky ? 'y' : ''), // Firefox 3+ and ES6\n                    lastLastIndex = 0,\n                    // Make `global` and avoid `lastIndex` issues by working with a copy\n                    separator2, match, lastIndex, lastLength;\n                var separatorCopy = new RegExp(separator.source, flags + 'g');\n                if (!compliantExecNpcg) {\n                    // Doesn't need flags gy, but they don't hurt\n                    separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n                }\n                /* Values for `limit`, per the spec:\n                 * If undefined: 4294967295 // maxSafe32BitInt\n                 * If 0, Infinity, or NaN: 0\n                 * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\n                 * If negative number: 4294967296 - Math.floor(Math.abs(limit))\n                 * If other: Type-convert, then use the above rules\n                 */\n                var splitLimit = typeof limit === 'undefined' ? maxSafe32BitInt : ES.ToUint32(limit);\n                match = separatorCopy.exec(string);\n                while (match) {\n                    // `separatorCopy.lastIndex` is not reliable cross-browser\n                    lastIndex = match.index + match[0].length;\n                    if (lastIndex > lastLastIndex) {\n                        pushCall(output, strSlice(string, lastLastIndex, match.index));\n                        // Fix browsers whose `exec` methods don't consistently return `undefined` for\n                        // nonparticipating capturing groups\n                        if (!compliantExecNpcg && match.length > 1) {\n                            /* eslint-disable no-loop-func */\n                            match[0].replace(separator2, function () {\n                                for (var i = 1; i < arguments.length - 2; i++) {\n                                    if (typeof arguments[i] === 'undefined') {\n                                        match[i] = void 0;\n                                    }\n                                }\n                            });\n                            /* eslint-enable no-loop-func */\n                        }\n                        if (match.length > 1 && match.index < string.length) {\n                            array_push.apply(output, arraySlice(match, 1));\n                        }\n                        lastLength = match[0].length;\n                        lastLastIndex = lastIndex;\n                        if (output.length >= splitLimit) {\n                            break;\n                        }\n                    }\n                    if (separatorCopy.lastIndex === match.index) {\n                        separatorCopy.lastIndex++; // Avoid an infinite loop\n                    }\n                    match = separatorCopy.exec(string);\n                }\n                if (lastLastIndex === string.length) {\n                    if (lastLength || !separatorCopy.test('')) {\n                        pushCall(output, '');\n                    }\n                } else {\n                    pushCall(output, strSlice(string, lastLastIndex));\n                }\n                return output.length > splitLimit ? arraySlice(output, 0, splitLimit) : output;\n            };\n        }());\n\n    // [bugfix, chrome]\n    // If separator is undefined, then the result array contains just one String,\n    // which is the this value (converted to a String). If limit is not undefined,\n    // then the output array is truncated so that it contains no more than limit\n    // elements.\n    // \"0\".split(undefined, 0) -> []\n    } else if ('0'.split(void 0, 0).length) {\n        StringPrototype.split = function split(separator, limit) {\n            if (typeof separator === 'undefined' && limit === 0) {\n                return [];\n            }\n            return strSplit(this, separator, limit);\n        };\n    }\n\n    var str_replace = StringPrototype.replace;\n    var replaceReportsGroupsCorrectly = (function () {\n        var groups = [];\n        'x'.replace(/x(.)?/g, function (match, group) {\n            pushCall(groups, group);\n        });\n        return groups.length === 1 && typeof groups[0] === 'undefined';\n    }());\n\n    if (!replaceReportsGroupsCorrectly) {\n        StringPrototype.replace = function replace(searchValue, replaceValue) {\n            var isFn = isCallable(replaceValue);\n            var hasCapturingGroups = isRegex(searchValue) && (/\\)[*?]/).test(searchValue.source);\n            if (!isFn || !hasCapturingGroups) {\n                return str_replace.call(this, searchValue, replaceValue);\n            } else {\n                var wrappedReplaceValue = function (match) {\n                    var length = arguments.length;\n                    var originalLastIndex = searchValue.lastIndex;\n                    searchValue.lastIndex = 0;\n                    var args = searchValue.exec(match) || [];\n                    searchValue.lastIndex = originalLastIndex;\n                    pushCall(args, arguments[length - 2], arguments[length - 1]);\n                    return replaceValue.apply(this, args);\n                };\n                return str_replace.call(this, searchValue, wrappedReplaceValue);\n            }\n        };\n    }\n\n    // ECMA-262, 3rd B.2.3\n    // Not an ECMAScript standard, although ECMAScript 3rd Edition has a\n    // non-normative section suggesting uniform semantics and it should be\n    // normalized across all browsers\n    // [bugfix, IE lt 9] IE < 9 substr() with negative value not working in IE\n    var string_substr = StringPrototype.substr;\n    var hasNegativeSubstrBug = ''.substr && '0b'.substr(-1) !== 'b';\n    defineProperties(StringPrototype, {\n        substr: function substr(start, length) {\n            var normalizedStart = start;\n            if (start < 0) {\n                normalizedStart = max(this.length + start, 0);\n            }\n            return string_substr.call(this, normalizedStart, length);\n        }\n    }, hasNegativeSubstrBug);\n\n    // ES5 15.5.4.20\n    // whitespace from: http://es5.github.io/#x15.5.4.20\n    var ws = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003'\n        + '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028'\n        + '\\u2029\\uFEFF';\n    var zeroWidth = '\\u200b';\n    var wsRegexChars = '[' + ws + ']';\n    var trimBeginRegexp = new RegExp('^' + wsRegexChars + wsRegexChars + '*');\n    var trimEndRegexp = new RegExp(wsRegexChars + wsRegexChars + '*$');\n    var hasTrimWhitespaceBug = StringPrototype.trim && (ws.trim() || !zeroWidth.trim());\n    defineProperties(StringPrototype, {\n        // http://blog.stevenlevithan.com/archives/faster-trim-javascript\n        // http://perfectionkills.com/whitespace-deviations/\n        trim: function trim() {\n            if (typeof this === 'undefined' || this === null) {\n                throw new TypeError(\"can't convert \" + this + ' to object');\n            }\n            return $String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, '');\n        }\n    }, hasTrimWhitespaceBug);\n    var trim = call.bind(String.prototype.trim);\n\n    var hasLastIndexBug = StringPrototype.lastIndexOf && 'abcあい'.lastIndexOf('あい', 2) !== -1;\n    defineProperties(StringPrototype, {\n        lastIndexOf: function lastIndexOf(searchString) {\n            if (typeof this === 'undefined' || this === null) {\n                throw new TypeError(\"can't convert \" + this + ' to object');\n            }\n            var S = $String(this);\n            var searchStr = $String(searchString);\n            var numPos = arguments.length > 1 ? $Number(arguments[1]) : NaN;\n            var pos = isActualNaN(numPos) ? Infinity : ES.ToInteger(numPos);\n            var start = min(max(pos, 0), S.length);\n            var searchLen = searchStr.length;\n            var k = start + searchLen;\n            while (k > 0) {\n                k = max(0, k - searchLen);\n                var index = strIndexOf(strSlice(S, k, start + searchLen), searchStr);\n                if (index !== -1) {\n                    return k + index;\n                }\n            }\n            return -1;\n        }\n    }, hasLastIndexBug);\n\n    var originalLastIndexOf = StringPrototype.lastIndexOf;\n    defineProperties(StringPrototype, {\n        lastIndexOf: function lastIndexOf(searchString) {\n            return originalLastIndexOf.apply(this, arguments);\n        }\n    }, StringPrototype.lastIndexOf.length !== 1);\n\n    // ES-5 15.1.2.2\n    // eslint-disable-next-line radix\n    if (parseInt(ws + '08') !== 8 || parseInt(ws + '0x16') !== 22) {\n        /* global parseInt: true */\n        parseInt = (function (origParseInt) {\n            var hexRegex = /^[-+]?0[xX]/;\n            return function parseInt(str, radix) {\n                if (typeof str === 'symbol') {\n                    // handle Symbols in node 8.3/8.4\n                    // eslint-disable-next-line no-implicit-coercion, no-unused-expressions\n                    '' + str; // jscs:ignore disallowImplicitTypeConversion\n                }\n\n                var string = trim(String(str));\n                var defaultedRadix = $Number(radix) || (hexRegex.test(string) ? 16 : 10);\n                return origParseInt(string, defaultedRadix);\n            };\n        }(parseInt));\n    }\n\n    // https://es5.github.io/#x15.1.2.3\n    if (1 / parseFloat('-0') !== -Infinity) {\n        /* global parseFloat: true */\n        parseFloat = (function (origParseFloat) {\n            return function parseFloat(string) {\n                var inputString = trim(String(string));\n                var result = origParseFloat(inputString);\n                return result === 0 && strSlice(inputString, 0, 1) === '-' ? -0 : result;\n            };\n        }(parseFloat));\n    }\n\n    if (String(new RangeError('test')) !== 'RangeError: test') {\n        var errorToStringShim = function toString() {\n            if (typeof this === 'undefined' || this === null) {\n                throw new TypeError(\"can't convert \" + this + ' to object');\n            }\n            var name = this.name;\n            if (typeof name === 'undefined') {\n                name = 'Error';\n            } else if (typeof name !== 'string') {\n                name = $String(name);\n            }\n            var msg = this.message;\n            if (typeof msg === 'undefined') {\n                msg = '';\n            } else if (typeof msg !== 'string') {\n                msg = $String(msg);\n            }\n            if (!name) {\n                return msg;\n            }\n            if (!msg) {\n                return name;\n            }\n            return name + ': ' + msg;\n        };\n        // can't use defineProperties here because of toString enumeration issue in IE <= 8\n        Error.prototype.toString = errorToStringShim;\n    }\n\n    if (supportsDescriptors) {\n        var ensureNonEnumerable = function (obj, prop) {\n            if (isEnum(obj, prop)) {\n                var desc = Object.getOwnPropertyDescriptor(obj, prop);\n                if (desc.configurable) {\n                    desc.enumerable = false;\n                    Object.defineProperty(obj, prop, desc);\n                }\n            }\n        };\n        ensureNonEnumerable(Error.prototype, 'message');\n        if (Error.prototype.message !== '') {\n            Error.prototype.message = '';\n        }\n        ensureNonEnumerable(Error.prototype, 'name');\n    }\n\n    if (String(/a/mig) !== '/a/gim') {\n        var regexToString = function toString() {\n            var str = '/' + this.source + '/';\n            if (this.global) {\n                str += 'g';\n            }\n            if (this.ignoreCase) {\n                str += 'i';\n            }\n            if (this.multiline) {\n                str += 'm';\n            }\n            return str;\n        };\n        // can't use defineProperties here because of toString enumeration issue in IE <= 8\n        RegExp.prototype.toString = regexToString;\n    }\n}));\n\n},{}],39:[function(_dereq_,module,exports){\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\n\n\nmodule.exports = function(obj) {\n    each.call(slice.call(arguments, 1), function(source) {\n        if (source) {\n            for (var prop in source) {\n                obj[prop] = source[prop];\n            }\n        }\n    });\n    return obj;\n};\n\n},{}],40:[function(_dereq_,module,exports){\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n\n},{}],41:[function(_dereq_,module,exports){\n\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};\n},{}],42:[function(_dereq_,module,exports){\nmodule.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n  var string = toString.call(fn)\n  return string === '[object Function]' ||\n    (typeof fn === 'function' && string !== '[object RegExp]') ||\n    (typeof window !== 'undefined' &&\n     // IE8 and below\n     (fn === window.setTimeout ||\n      fn === window.alert ||\n      fn === window.confirm ||\n      fn === window.prompt))\n};\n\n},{}],43:[function(_dereq_,module,exports){\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\n},{}],44:[function(_dereq_,module,exports){\n(function (global){\n/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],45:[function(_dereq_,module,exports){\n/*!\n  * $script.js JS loader & dependency manager\n  * https://github.com/ded/script.js\n  * (c) Dustin Diaz 2014 | License MIT\n  */\n\n(function (name, definition) {\n  if (typeof module != 'undefined' && module.exports) module.exports = definition()\n  else if (typeof define == 'function' && define.amd) define(definition)\n  else this[name] = definition()\n})('$script', function () {\n  var doc = document\n    , head = doc.getElementsByTagName('head')[0]\n    , s = 'string'\n    , f = false\n    , push = 'push'\n    , readyState = 'readyState'\n    , onreadystatechange = 'onreadystatechange'\n    , list = {}\n    , ids = {}\n    , delay = {}\n    , scripts = {}\n    , scriptpath\n    , urlArgs\n\n  function every(ar, fn) {\n    for (var i = 0, j = ar.length; i < j; ++i) if (!fn(ar[i])) return f\n    return 1\n  }\n  function each(ar, fn) {\n    every(ar, function (el) {\n      return !fn(el)\n    })\n  }\n\n  function $script(paths, idOrDone, optDone) {\n    paths = paths[push] ? paths : [paths]\n    var idOrDoneIsDone = idOrDone && idOrDone.call\n      , done = idOrDoneIsDone ? idOrDone : optDone\n      , id = idOrDoneIsDone ? paths.join('') : idOrDone\n      , queue = paths.length\n    function loopFn(item) {\n      return item.call ? item() : list[item]\n    }\n    function callback() {\n      if (!--queue) {\n        list[id] = 1\n        done && done()\n        for (var dset in delay) {\n          every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = [])\n        }\n      }\n    }\n    setTimeout(function () {\n      each(paths, function loading(path, force) {\n        if (path === null) return callback()\n        \n        if (!force && !/^https?:\\/\\//.test(path) && scriptpath) {\n          path = (path.indexOf('.js') === -1) ? scriptpath + path + '.js' : scriptpath + path;\n        }\n        \n        if (scripts[path]) {\n          if (id) ids[id] = 1\n          return (scripts[path] == 2) ? callback() : setTimeout(function () { loading(path, true) }, 0)\n        }\n\n        scripts[path] = 1\n        if (id) ids[id] = 1\n        create(path, callback)\n      })\n    }, 0)\n    return $script\n  }\n\n  function create(path, fn) {\n    var el = doc.createElement('script'), loaded\n    el.onload = el.onerror = el[onreadystatechange] = function () {\n      if ((el[readyState] && !(/^c|loade/.test(el[readyState]))) || loaded) return;\n      el.onload = el[onreadystatechange] = null\n      loaded = 1\n      scripts[path] = 2\n      fn()\n    }\n    el.async = 1\n    el.src = urlArgs ? path + (path.indexOf('?') === -1 ? '?' : '&') + urlArgs : path;\n    head.insertBefore(el, head.lastChild)\n  }\n\n  $script.get = create\n\n  $script.order = function (scripts, id, done) {\n    (function callback(s) {\n      s = scripts.shift()\n      !scripts.length ? $script(s, id, done) : $script(s, callback)\n    }())\n  }\n\n  $script.path = function (p) {\n    scriptpath = p\n  }\n  $script.urlArgs = function (str) {\n    urlArgs = str;\n  }\n  $script.ready = function (deps, ready, req) {\n    deps = deps[push] ? deps : [deps]\n    var missing = [];\n    !each(deps, function (dep) {\n      list[dep] || missing[push](dep);\n    }) && every(deps, function (dep) {return list[dep]}) ?\n      ready() : !function (key) {\n      delay[key] = delay[key] || []\n      delay[key][push](ready)\n      req && req(missing)\n    }(deps.join('|'))\n    return $script\n  }\n\n  $script.done = function (idOrDone) {\n    $script([null], idOrDone)\n  }\n\n  return $script\n});\n\n},{}]},{},[32])(32)\n});\n","var temml=function(){\"use strict\";class e{constructor(t,r){let n,s=\" \"+t;const o=r&&r.loc;if(o&&o.start<=o.end){const e=o.lexer.input;n=o.start;const t=o.end;n===e.length?s+=\" at end of input: \":s+=\" at position \"+(n+1)+\": \\n\";const r=e.slice(n,t).replace(/[^]/g,\"$&̲\");let a,l;a=n>15?\"…\"+e.slice(n-15,n):e.slice(0,n),l=t+15<e.length?e.slice(t,t+15)+\"…\":e.slice(t),s+=a+r+l}const a=new Error(s);return a.name=\"ParseError\",a.__proto__=e.prototype,a.position=n,a}}e.prototype.__proto__=Error.prototype;const t=/([A-Z])/g,r={\"&\":\"&amp;\",\">\":\"&gt;\",\"<\":\"&lt;\",'\"':\"&quot;\",\"'\":\"&#x27;\"},n=/[&><\"']/g;const s=function(e){return\"ordgroup\"===e.type||\"color\"===e.type?1===e.body.length?s(e.body[0]):e:\"font\"===e.type?s(e.body):e};var o={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(n,(e=>r[e]))},hyphenate:function(e){return e.replace(t,\"-$1\").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){const t=s(e);return\"mathord\"===t.type||\"textord\"===t.type||\"atom\"===t.type},protocolFromUrl:function(e){const t=/^[\\x00-\\x20]*([^\\\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(e);return t?\":\"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\\-.]*$/.test(t[1])?t[1].toLowerCase():null:\"_relative\"},round:function(e){return+e.toFixed(4)}};class a{constructor(e){e=e||{},this.displayMode=o.deflt(e.displayMode,!1),this.annotate=o.deflt(e.annotate,!1),this.leqno=o.deflt(e.leqno,!1),this.throwOnError=o.deflt(e.throwOnError,!1),this.errorColor=o.deflt(e.errorColor,\"#b22222\"),this.macros=e.macros||{},this.wrap=o.deflt(e.wrap,\"tex\"),this.xml=o.deflt(e.xml,!1),this.colorIsTextColor=o.deflt(e.colorIsTextColor,!1),this.strict=o.deflt(e.strict,!1),this.trust=o.deflt(e.trust,!1),this.maxSize=void 0===e.maxSize?[1/0,1/0]:Array.isArray(e.maxSize)?e.maxSize:[1/0,1/0],this.maxExpand=Math.max(0,o.deflt(e.maxExpand,1e3))}isTrusted(e){if(e.url&&!e.protocol){const t=o.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}const t=\"function\"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)}}const l={},i={};function c({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n};for(let e=0;e<t.length;++e)l[t[e]]=o;e&&s&&(i[e]=s)}function d({type:e,mathmlBuilder:t}){c({type:e,names:[],props:{numArgs:0},handler(){throw new Error(\"Should never be called.\")},mathmlBuilder:t})}const m=function(e){return\"ordgroup\"===e.type&&1===e.body.length?e.body[0]:e},p=function(e){return\"ordgroup\"===e.type?e.body:[e]};class u{constructor(e){this.children=e,this.classes=[],this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){const e=document.createDocumentFragment();for(let t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){let e=\"\";for(let t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e}toText(){return this.children.map((e=>e.toText())).join(\"\")}}const h=function(e){return e.filter((e=>e)).join(\" \")},g=function(e,t){this.classes=e||[],this.attributes={},this.style=t||{}},f=function(e){const t=document.createElement(e);t.className=h(this.classes);for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(const e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e<this.children.length;e++)t.appendChild(this.children[e].toNode());return t},b=function(e){let t=`<${e}`;this.classes.length&&(t+=` class=\"${o.escape(h(this.classes))}\"`);let r=\"\";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(r+=`${o.hyphenate(e)}:${this.style[e]};`);r&&(t+=` style=\"${r}\"`);for(const e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=` ${e}=\"${o.escape(this.attributes[e])}\"`);t+=\">\";for(let e=0;e<this.children.length;e++)t+=this.children[e].toMarkup();return t+=`</${e}>`,t};class y{constructor(e,t,r){g.call(this,e,r),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}toNode(){return f.call(this,\"span\")}toMarkup(){return b.call(this,\"span\")}}let w=class{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.text)}};class x{constructor(e,t,r){this.href=e,this.classes=t,this.children=r||[]}toNode(){const e=document.createElement(\"a\");e.setAttribute(\"href\",this.href),this.classes.length>0&&(e.className=h(this.classes));for(let t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){let e=`<a href='${o.escape(this.href)}'`;this.classes.length>0&&(e+=` class=\"${o.escape(h(this.classes))}\"`),e+=\">\";for(let t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e+=\"</a>\",e}}class k{constructor(e,t,r){this.alt=t,this.src=e,this.classes=[\"mord\"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){const e=document.createElement(\"img\");e.src=this.src,e.alt=this.alt,e.className=\"mord\";for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);return e}toMarkup(){let e=`<img src='${this.src}' alt='${this.alt}'`,t=\"\";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t+=`${o.hyphenate(e)}:${this.style[e]};`);return t&&(e+=` style=\"${o.escape(t)}\"`),e+=\">\",e}}class v{constructor(e,t,r,n){this.type=e,this.attributes={},this.children=t||[],this.classes=r||[],this.style=n||{},this.label=\"\"}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}setLabel(e){this.label=e}toNode(){const e=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",this.type);for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=h(this.classes));for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(let t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e}toMarkup(){let e=\"<\"+this.type;for(const t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=\" \"+t+'=\"',e+=o.escape(this.attributes[t]),e+='\"');this.classes.length>0&&(e+=` class=\"${o.escape(h(this.classes))}\"`);let t=\"\";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t+=`${o.hyphenate(e)}:${this.style[e]};`);t&&(e+=` style=\"${t}\"`),e+=\">\";for(let t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e+=\"</\"+this.type+\">\",e}toText(){return this.children.map((e=>e.toText())).join(\"\")}}class A{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.toText())}toText(){return this.text}}const N=e=>{let t;return 1===e.length&&\"mrow\"===e[0].type?(t=e.pop(),t.type=\"mstyle\"):t=new v(\"mstyle\",e),t};var T={MathNode:v,TextNode:A,newDocumentFragment:function(e){return new u(e)}};const S=e=>{let t=0;if(e.body&&Array.isArray(e.body))for(const r of e.body)t+=S(r);else if(e.body)t+=S(e.body);else if(\"supsub\"===e.type)t+=S(e.base),e.sub&&(t+=.7*S(e.sub)),e.sup&&(t+=.7*S(e.sup));else if(\"mathord\"===e.type||\"textord\"===e.type)for(const r of e.text.split(\"\")){const e=r.codePointAt(0);t+=96<e&&e<123||944<e&&e<970?.56:47<e&&e<58?.5:.92}else t+=1;return t},q={widehat:\"^\",widecheck:\"ˇ\",widetilde:\"~\",wideparen:\"⏜\",utilde:\"~\",overleftarrow:\"←\",underleftarrow:\"←\",xleftarrow:\"←\",overrightarrow:\"→\",underrightarrow:\"→\",xrightarrow:\"→\",underbrace:\"⏟\",overbrace:\"⏞\",overgroup:\"⏠\",overparen:\"⏜\",undergroup:\"⏡\",underparen:\"⏝\",overleftrightarrow:\"↔\",underleftrightarrow:\"↔\",xleftrightarrow:\"↔\",Overrightarrow:\"⇒\",xRightarrow:\"⇒\",overleftharpoon:\"↼\",xleftharpoonup:\"↼\",overrightharpoon:\"⇀\",xrightharpoonup:\"⇀\",xLeftarrow:\"⇐\",xLeftrightarrow:\"⇔\",xhookleftarrow:\"↩\",xhookrightarrow:\"↪\",xmapsto:\"↦\",xrightharpoondown:\"⇁\",xleftharpoondown:\"↽\",xtwoheadleftarrow:\"↞\",xtwoheadrightarrow:\"↠\",xlongequal:\"=\",xrightleftarrows:\"⇄\",xtofrom:\"⇄\",xleftrightharpoons:\"⇋\",xrightleftharpoons:\"⇌\",yields:\"→\",yieldsLeft:\"←\",mesomerism:\"↔\",longrightharpoonup:\"⇀\",longleftharpoondown:\"↽\",eqrightharpoonup:\"⇀\",eqleftharpoondown:\"↽\",\"\\\\cdrightarrow\":\"→\",\"\\\\cdleftarrow\":\"←\",\"\\\\cdlongequal\":\"=\",yieldsLeftRight:\"⇄\",chemequilibrium:\"⇌\"},O=function(e){const t=new T.TextNode(q[e.slice(1)]),r=new T.MathNode(\"mo\",[t]);return r.setAttribute(\"stretchy\",\"true\"),r},M=[\"\\\\widetilde\",\"\\\\widehat\",\"\\\\widecheck\",\"\\\\utilde\"];var B=O,C=e=>{const t=O(e.label);if(M.includes(e.label)){const r=S(e.base);1<r&&r<1.6?t.classes.push(\"tml-crooked-2\"):1.6<=r&&r<2.5?t.classes.push(\"tml-crooked-3\"):2.5<=r&&t.classes.push(\"tml-crooked-4\")}return t};const z={bin:1,close:1,inner:1,open:1,punct:1,rel:1},$={\"accent-token\":1,mathord:1,\"op-token\":1,spacing:1,textord:1},E={math:{},text:{}};function I(e,t,r,n,s){E[e][n]={group:t,replace:r},s&&r&&(E[e][r]=E[e][n])}const L=\"math\",F=\"text\",D=\"accent-token\",G=\"bin\",j=\"close\",P=\"inner\",R=\"mathord\",U=\"op-token\",H=\"open\",V=\"punct\",_=\"rel\",W=\"spacing\",X=\"textord\";I(L,_,\"≡\",\"\\\\equiv\",!0),I(L,_,\"≺\",\"\\\\prec\",!0),I(L,_,\"≻\",\"\\\\succ\",!0),I(L,_,\"∼\",\"\\\\sim\",!0),I(L,_,\"⟂\",\"\\\\perp\",!0),I(L,_,\"⪯\",\"\\\\preceq\",!0),I(L,_,\"⪰\",\"\\\\succeq\",!0),I(L,_,\"≃\",\"\\\\simeq\",!0),I(L,_,\"≌\",\"\\\\backcong\",!0),I(L,_,\"|\",\"\\\\mid\",!0),I(L,_,\"≪\",\"\\\\ll\",!0),I(L,_,\"≫\",\"\\\\gg\",!0),I(L,_,\"≍\",\"\\\\asymp\",!0),I(L,_,\"∥\",\"\\\\parallel\"),I(L,_,\"⌣\",\"\\\\smile\",!0),I(L,_,\"⊑\",\"\\\\sqsubseteq\",!0),I(L,_,\"⊒\",\"\\\\sqsupseteq\",!0),I(L,_,\"≐\",\"\\\\doteq\",!0),I(L,_,\"⌢\",\"\\\\frown\",!0),I(L,_,\"∋\",\"\\\\ni\",!0),I(L,_,\"∌\",\"\\\\notni\",!0),I(L,_,\"∝\",\"\\\\propto\",!0),I(L,_,\"⊢\",\"\\\\vdash\",!0),I(L,_,\"⊣\",\"\\\\dashv\",!0),I(L,_,\"∋\",\"\\\\owns\"),I(L,_,\"≘\",\"\\\\arceq\",!0),I(L,_,\"≙\",\"\\\\wedgeq\",!0),I(L,_,\"≚\",\"\\\\veeeq\",!0),I(L,_,\"≛\",\"\\\\stareq\",!0),I(L,_,\"≝\",\"\\\\eqdef\",!0),I(L,_,\"≞\",\"\\\\measeq\",!0),I(L,_,\"≟\",\"\\\\questeq\",!0),I(L,_,\"≠\",\"\\\\ne\",!0),I(L,_,\"≠\",\"\\\\neq\"),I(L,_,\"⩵\",\"\\\\eqeq\",!0),I(L,_,\"⩶\",\"\\\\eqeqeq\",!0),I(L,_,\"∷\",\"\\\\dblcolon\",!0),I(L,_,\"≔\",\"\\\\coloneqq\",!0),I(L,_,\"≕\",\"\\\\eqqcolon\",!0),I(L,_,\"∹\",\"\\\\eqcolon\",!0),I(L,_,\"⩴\",\"\\\\Coloneqq\",!0),I(L,V,\".\",\"\\\\ldotp\"),I(L,V,\"·\",\"\\\\cdotp\"),I(L,X,\"#\",\"\\\\#\"),I(F,X,\"#\",\"\\\\#\"),I(L,X,\"&\",\"\\\\&\"),I(F,X,\"&\",\"\\\\&\"),I(L,X,\"ℵ\",\"\\\\aleph\",!0),I(L,X,\"∀\",\"\\\\forall\",!0),I(L,X,\"ℏ\",\"\\\\hbar\",!0),I(L,X,\"∃\",\"\\\\exists\",!0),I(L,G,\"∇\",\"\\\\nabla\",!0),I(L,X,\"♭\",\"\\\\flat\",!0),I(L,X,\"ℓ\",\"\\\\ell\",!0),I(L,X,\"♮\",\"\\\\natural\",!0),I(L,X,\"Å\",\"\\\\Angstrom\",!0),I(F,X,\"Å\",\"\\\\Angstrom\",!0),I(L,X,\"♣\",\"\\\\clubsuit\",!0),I(L,X,\"♧\",\"\\\\varclubsuit\",!0),I(L,X,\"℘\",\"\\\\wp\",!0),I(L,X,\"♯\",\"\\\\sharp\",!0),I(L,X,\"♢\",\"\\\\diamondsuit\",!0),I(L,X,\"♦\",\"\\\\vardiamondsuit\",!0),I(L,X,\"ℜ\",\"\\\\Re\",!0),I(L,X,\"♡\",\"\\\\heartsuit\",!0),I(L,X,\"♥\",\"\\\\varheartsuit\",!0),I(L,X,\"ℑ\",\"\\\\Im\",!0),I(L,X,\"♠\",\"\\\\spadesuit\",!0),I(L,X,\"♤\",\"\\\\varspadesuit\",!0),I(L,X,\"♀\",\"\\\\female\",!0),I(L,X,\"♂\",\"\\\\male\",!0),I(L,X,\"§\",\"\\\\S\",!0),I(F,X,\"§\",\"\\\\S\"),I(L,X,\"¶\",\"\\\\P\",!0),I(F,X,\"¶\",\"\\\\P\"),I(F,X,\"☺\",\"\\\\smiley\",!0),I(L,X,\"☺\",\"\\\\smiley\",!0),I(L,X,\"†\",\"\\\\dag\"),I(F,X,\"†\",\"\\\\dag\"),I(F,X,\"†\",\"\\\\textdagger\"),I(L,X,\"‡\",\"\\\\ddag\"),I(F,X,\"‡\",\"\\\\ddag\"),I(F,X,\"‡\",\"\\\\textdaggerdbl\"),I(L,j,\"⎱\",\"\\\\rmoustache\",!0),I(L,H,\"⎰\",\"\\\\lmoustache\",!0),I(L,j,\"⟯\",\"\\\\rgroup\",!0),I(L,H,\"⟮\",\"\\\\lgroup\",!0),I(L,G,\"∓\",\"\\\\mp\",!0),I(L,G,\"⊖\",\"\\\\ominus\",!0),I(L,G,\"⊎\",\"\\\\uplus\",!0),I(L,G,\"⊓\",\"\\\\sqcap\",!0),I(L,G,\"∗\",\"\\\\ast\"),I(L,G,\"⊔\",\"\\\\sqcup\",!0),I(L,G,\"◯\",\"\\\\bigcirc\",!0),I(L,G,\"∙\",\"\\\\bullet\",!0),I(L,G,\"‡\",\"\\\\ddagger\"),I(L,G,\"≀\",\"\\\\wr\",!0),I(L,G,\"⨿\",\"\\\\amalg\"),I(L,G,\"&\",\"\\\\And\"),I(L,G,\"⫽\",\"\\\\sslash\",!0),I(L,_,\"⟵\",\"\\\\longleftarrow\",!0),I(L,_,\"⇐\",\"\\\\Leftarrow\",!0),I(L,_,\"⟸\",\"\\\\Longleftarrow\",!0),I(L,_,\"⟶\",\"\\\\longrightarrow\",!0),I(L,_,\"⇒\",\"\\\\Rightarrow\",!0),I(L,_,\"⟹\",\"\\\\Longrightarrow\",!0),I(L,_,\"↔\",\"\\\\leftrightarrow\",!0),I(L,_,\"⟷\",\"\\\\longleftrightarrow\",!0),I(L,_,\"⇔\",\"\\\\Leftrightarrow\",!0),I(L,_,\"⟺\",\"\\\\Longleftrightarrow\",!0),I(L,_,\"↤\",\"\\\\mapsfrom\",!0),I(L,_,\"↦\",\"\\\\mapsto\",!0),I(L,_,\"⟼\",\"\\\\longmapsto\",!0),I(L,_,\"↗\",\"\\\\nearrow\",!0),I(L,_,\"↩\",\"\\\\hookleftarrow\",!0),I(L,_,\"↪\",\"\\\\hookrightarrow\",!0),I(L,_,\"↘\",\"\\\\searrow\",!0),I(L,_,\"↼\",\"\\\\leftharpoonup\",!0),I(L,_,\"⇀\",\"\\\\rightharpoonup\",!0),I(L,_,\"↙\",\"\\\\swarrow\",!0),I(L,_,\"↽\",\"\\\\leftharpoondown\",!0),I(L,_,\"⇁\",\"\\\\rightharpoondown\",!0),I(L,_,\"↖\",\"\\\\nwarrow\",!0),I(L,_,\"⇌\",\"\\\\rightleftharpoons\",!0),I(L,R,\"↯\",\"\\\\lightning\",!0),I(L,R,\"∎\",\"\\\\QED\",!0),I(L,R,\"‰\",\"\\\\permil\",!0),I(F,X,\"‰\",\"\\\\permil\"),I(L,R,\"☉\",\"\\\\astrosun\",!0),I(L,R,\"☼\",\"\\\\sun\",!0),I(L,R,\"☾\",\"\\\\leftmoon\",!0),I(L,R,\"☽\",\"\\\\rightmoon\",!0),I(L,R,\"⊕\",\"\\\\Earth\"),I(L,_,\"≮\",\"\\\\nless\",!0),I(L,_,\"⪇\",\"\\\\lneq\",!0),I(L,_,\"≨\",\"\\\\lneqq\",!0),I(L,_,\"≨︀\",\"\\\\lvertneqq\"),I(L,_,\"⋦\",\"\\\\lnsim\",!0),I(L,_,\"⪉\",\"\\\\lnapprox\",!0),I(L,_,\"⊀\",\"\\\\nprec\",!0),I(L,_,\"⋠\",\"\\\\npreceq\",!0),I(L,_,\"⋨\",\"\\\\precnsim\",!0),I(L,_,\"⪹\",\"\\\\precnapprox\",!0),I(L,_,\"≁\",\"\\\\nsim\",!0),I(L,_,\"∤\",\"\\\\nmid\",!0),I(L,_,\"∤\",\"\\\\nshortmid\"),I(L,_,\"⊬\",\"\\\\nvdash\",!0),I(L,_,\"⊭\",\"\\\\nvDash\",!0),I(L,_,\"⋪\",\"\\\\ntriangleleft\"),I(L,_,\"⋬\",\"\\\\ntrianglelefteq\",!0),I(L,_,\"⊄\",\"\\\\nsubset\",!0),I(L,_,\"⊅\",\"\\\\nsupset\",!0),I(L,_,\"⊊\",\"\\\\subsetneq\",!0),I(L,_,\"⊊︀\",\"\\\\varsubsetneq\"),I(L,_,\"⫋\",\"\\\\subsetneqq\",!0),I(L,_,\"⫋︀\",\"\\\\varsubsetneqq\"),I(L,_,\"≯\",\"\\\\ngtr\",!0),I(L,_,\"⪈\",\"\\\\gneq\",!0),I(L,_,\"≩\",\"\\\\gneqq\",!0),I(L,_,\"≩︀\",\"\\\\gvertneqq\"),I(L,_,\"⋧\",\"\\\\gnsim\",!0),I(L,_,\"⪊\",\"\\\\gnapprox\",!0),I(L,_,\"⊁\",\"\\\\nsucc\",!0),I(L,_,\"⋡\",\"\\\\nsucceq\",!0),I(L,_,\"⋩\",\"\\\\succnsim\",!0),I(L,_,\"⪺\",\"\\\\succnapprox\",!0),I(L,_,\"≆\",\"\\\\ncong\",!0),I(L,_,\"∦\",\"\\\\nparallel\",!0),I(L,_,\"∦\",\"\\\\nshortparallel\"),I(L,_,\"⊯\",\"\\\\nVDash\",!0),I(L,_,\"⋫\",\"\\\\ntriangleright\"),I(L,_,\"⋭\",\"\\\\ntrianglerighteq\",!0),I(L,_,\"⊋\",\"\\\\supsetneq\",!0),I(L,_,\"⊋\",\"\\\\varsupsetneq\"),I(L,_,\"⫌\",\"\\\\supsetneqq\",!0),I(L,_,\"⫌︀\",\"\\\\varsupsetneqq\"),I(L,_,\"⊮\",\"\\\\nVdash\",!0),I(L,_,\"⪵\",\"\\\\precneqq\",!0),I(L,_,\"⪶\",\"\\\\succneqq\",!0),I(L,G,\"⊴\",\"\\\\unlhd\"),I(L,G,\"⊵\",\"\\\\unrhd\"),I(L,_,\"↚\",\"\\\\nleftarrow\",!0),I(L,_,\"↛\",\"\\\\nrightarrow\",!0),I(L,_,\"⇍\",\"\\\\nLeftarrow\",!0),I(L,_,\"⇏\",\"\\\\nRightarrow\",!0),I(L,_,\"↮\",\"\\\\nleftrightarrow\",!0),I(L,_,\"⇎\",\"\\\\nLeftrightarrow\",!0),I(L,_,\"△\",\"\\\\vartriangle\"),I(L,X,\"ℏ\",\"\\\\hslash\"),I(L,X,\"▽\",\"\\\\triangledown\"),I(L,X,\"◊\",\"\\\\lozenge\"),I(L,X,\"Ⓢ\",\"\\\\circledS\"),I(L,X,\"®\",\"\\\\circledR\",!0),I(F,X,\"®\",\"\\\\circledR\"),I(F,X,\"®\",\"\\\\textregistered\"),I(L,X,\"∡\",\"\\\\measuredangle\",!0),I(L,X,\"∄\",\"\\\\nexists\"),I(L,X,\"℧\",\"\\\\mho\"),I(L,X,\"Ⅎ\",\"\\\\Finv\",!0),I(L,X,\"⅁\",\"\\\\Game\",!0),I(L,X,\"‵\",\"\\\\backprime\"),I(L,X,\"‶\",\"\\\\backdprime\"),I(L,X,\"‷\",\"\\\\backtrprime\"),I(L,X,\"▲\",\"\\\\blacktriangle\"),I(L,X,\"▼\",\"\\\\blacktriangledown\"),I(L,X,\"■\",\"\\\\blacksquare\"),I(L,X,\"⧫\",\"\\\\blacklozenge\"),I(L,X,\"★\",\"\\\\bigstar\"),I(L,X,\"∢\",\"\\\\sphericalangle\",!0),I(L,X,\"∁\",\"\\\\complement\",!0),I(L,X,\"╱\",\"\\\\diagup\"),I(L,X,\"╲\",\"\\\\diagdown\"),I(L,X,\"□\",\"\\\\square\"),I(L,X,\"□\",\"\\\\Box\"),I(L,X,\"◊\",\"\\\\Diamond\"),I(L,X,\"¥\",\"\\\\yen\",!0),I(F,X,\"¥\",\"\\\\yen\",!0),I(L,X,\"✓\",\"\\\\checkmark\",!0),I(F,X,\"✓\",\"\\\\checkmark\"),I(L,X,\"✗\",\"\\\\ballotx\",!0),I(F,X,\"✗\",\"\\\\ballotx\"),I(F,X,\"•\",\"\\\\textbullet\"),I(L,X,\"ℶ\",\"\\\\beth\",!0),I(L,X,\"ℸ\",\"\\\\daleth\",!0),I(L,X,\"ℷ\",\"\\\\gimel\",!0),I(L,X,\"ϝ\",\"\\\\digamma\",!0),I(L,X,\"ϰ\",\"\\\\varkappa\"),I(L,H,\"⌜\",\"\\\\ulcorner\",!0),I(L,j,\"⌝\",\"\\\\urcorner\",!0),I(L,H,\"⌞\",\"\\\\llcorner\",!0),I(L,j,\"⌟\",\"\\\\lrcorner\",!0),I(L,_,\"≦\",\"\\\\leqq\",!0),I(L,_,\"⩽\",\"\\\\leqslant\",!0),I(L,_,\"⪕\",\"\\\\eqslantless\",!0),I(L,_,\"≲\",\"\\\\lesssim\",!0),I(L,_,\"⪅\",\"\\\\lessapprox\",!0),I(L,_,\"≊\",\"\\\\approxeq\",!0),I(L,G,\"⋖\",\"\\\\lessdot\"),I(L,_,\"⋘\",\"\\\\lll\",!0),I(L,_,\"≶\",\"\\\\lessgtr\",!0),I(L,_,\"⋚\",\"\\\\lesseqgtr\",!0),I(L,_,\"⪋\",\"\\\\lesseqqgtr\",!0),I(L,_,\"≑\",\"\\\\doteqdot\"),I(L,_,\"≓\",\"\\\\risingdotseq\",!0),I(L,_,\"≒\",\"\\\\fallingdotseq\",!0),I(L,_,\"∽\",\"\\\\backsim\",!0),I(L,_,\"⋍\",\"\\\\backsimeq\",!0),I(L,_,\"⫅\",\"\\\\subseteqq\",!0),I(L,_,\"⋐\",\"\\\\Subset\",!0),I(L,_,\"⊏\",\"\\\\sqsubset\",!0),I(L,_,\"≼\",\"\\\\preccurlyeq\",!0),I(L,_,\"⋞\",\"\\\\curlyeqprec\",!0),I(L,_,\"≾\",\"\\\\precsim\",!0),I(L,_,\"⪷\",\"\\\\precapprox\",!0),I(L,_,\"⊲\",\"\\\\vartriangleleft\"),I(L,_,\"⊴\",\"\\\\trianglelefteq\"),I(L,_,\"⊨\",\"\\\\vDash\",!0),I(L,_,\"⊫\",\"\\\\VDash\",!0),I(L,_,\"⊪\",\"\\\\Vvdash\",!0),I(L,_,\"⌣\",\"\\\\smallsmile\"),I(L,_,\"⌢\",\"\\\\smallfrown\"),I(L,_,\"≏\",\"\\\\bumpeq\",!0),I(L,_,\"≎\",\"\\\\Bumpeq\",!0),I(L,_,\"≧\",\"\\\\geqq\",!0),I(L,_,\"⩾\",\"\\\\geqslant\",!0),I(L,_,\"⪖\",\"\\\\eqslantgtr\",!0),I(L,_,\"≳\",\"\\\\gtrsim\",!0),I(L,_,\"⪆\",\"\\\\gtrapprox\",!0),I(L,G,\"⋗\",\"\\\\gtrdot\"),I(L,_,\"⋙\",\"\\\\ggg\",!0),I(L,_,\"≷\",\"\\\\gtrless\",!0),I(L,_,\"⋛\",\"\\\\gtreqless\",!0),I(L,_,\"⪌\",\"\\\\gtreqqless\",!0),I(L,_,\"≖\",\"\\\\eqcirc\",!0),I(L,_,\"≗\",\"\\\\circeq\",!0),I(L,_,\"≜\",\"\\\\triangleq\",!0),I(L,_,\"∼\",\"\\\\thicksim\"),I(L,_,\"≈\",\"\\\\thickapprox\"),I(L,_,\"⫆\",\"\\\\supseteqq\",!0),I(L,_,\"⋑\",\"\\\\Supset\",!0),I(L,_,\"⊐\",\"\\\\sqsupset\",!0),I(L,_,\"≽\",\"\\\\succcurlyeq\",!0),I(L,_,\"⋟\",\"\\\\curlyeqsucc\",!0),I(L,_,\"≿\",\"\\\\succsim\",!0),I(L,_,\"⪸\",\"\\\\succapprox\",!0),I(L,_,\"⊳\",\"\\\\vartriangleright\"),I(L,_,\"⊵\",\"\\\\trianglerighteq\"),I(L,_,\"⊩\",\"\\\\Vdash\",!0),I(L,_,\"∣\",\"\\\\shortmid\"),I(L,_,\"∥\",\"\\\\shortparallel\"),I(L,_,\"≬\",\"\\\\between\",!0),I(L,_,\"⋔\",\"\\\\pitchfork\",!0),I(L,_,\"∝\",\"\\\\varpropto\"),I(L,_,\"◀\",\"\\\\blacktriangleleft\"),I(L,_,\"∴\",\"\\\\therefore\",!0),I(L,_,\"∍\",\"\\\\backepsilon\"),I(L,_,\"▶\",\"\\\\blacktriangleright\"),I(L,_,\"∵\",\"\\\\because\",!0),I(L,_,\"⋘\",\"\\\\llless\"),I(L,_,\"⋙\",\"\\\\gggtr\"),I(L,G,\"⊲\",\"\\\\lhd\"),I(L,G,\"⊳\",\"\\\\rhd\"),I(L,_,\"≂\",\"\\\\eqsim\",!0),I(L,_,\"≑\",\"\\\\Doteq\",!0),I(L,_,\"⥽\",\"\\\\strictif\",!0),I(L,_,\"⥼\",\"\\\\strictfi\",!0),I(L,G,\"∔\",\"\\\\dotplus\",!0),I(L,G,\"∖\",\"\\\\smallsetminus\"),I(L,G,\"⋒\",\"\\\\Cap\",!0),I(L,G,\"⋓\",\"\\\\Cup\",!0),I(L,G,\"⩞\",\"\\\\doublebarwedge\",!0),I(L,G,\"⊟\",\"\\\\boxminus\",!0),I(L,G,\"⊞\",\"\\\\boxplus\",!0),I(L,G,\"⧄\",\"\\\\boxslash\",!0),I(L,G,\"⋇\",\"\\\\divideontimes\",!0),I(L,G,\"⋉\",\"\\\\ltimes\",!0),I(L,G,\"⋊\",\"\\\\rtimes\",!0),I(L,G,\"⋋\",\"\\\\leftthreetimes\",!0),I(L,G,\"⋌\",\"\\\\rightthreetimes\",!0),I(L,G,\"⋏\",\"\\\\curlywedge\",!0),I(L,G,\"⋎\",\"\\\\curlyvee\",!0),I(L,G,\"⊝\",\"\\\\circleddash\",!0),I(L,G,\"⊛\",\"\\\\circledast\",!0),I(L,G,\"⊺\",\"\\\\intercal\",!0),I(L,G,\"⋒\",\"\\\\doublecap\"),I(L,G,\"⋓\",\"\\\\doublecup\"),I(L,G,\"⊠\",\"\\\\boxtimes\",!0),I(L,G,\"⋈\",\"\\\\bowtie\",!0),I(L,G,\"⋈\",\"\\\\Join\"),I(L,G,\"⟕\",\"\\\\leftouterjoin\",!0),I(L,G,\"⟖\",\"\\\\rightouterjoin\",!0),I(L,G,\"⟗\",\"\\\\fullouterjoin\",!0),I(L,G,\"∸\",\"\\\\dotminus\",!0),I(L,G,\"⟑\",\"\\\\wedgedot\",!0),I(L,G,\"⟇\",\"\\\\veedot\",!0),I(L,G,\"⩢\",\"\\\\doublebarvee\",!0),I(L,G,\"⩣\",\"\\\\veedoublebar\",!0),I(L,G,\"⩟\",\"\\\\wedgebar\",!0),I(L,G,\"⩠\",\"\\\\wedgedoublebar\",!0),I(L,G,\"⩔\",\"\\\\Vee\",!0),I(L,G,\"⩓\",\"\\\\Wedge\",!0),I(L,G,\"⩃\",\"\\\\barcap\",!0),I(L,G,\"⩂\",\"\\\\barcup\",!0),I(L,G,\"⩈\",\"\\\\capbarcup\",!0),I(L,G,\"⩀\",\"\\\\capdot\",!0),I(L,G,\"⩇\",\"\\\\capovercup\",!0),I(L,G,\"⩆\",\"\\\\cupovercap\",!0),I(L,G,\"⩍\",\"\\\\closedvarcap\",!0),I(L,G,\"⩌\",\"\\\\closedvarcup\",!0),I(L,G,\"⨪\",\"\\\\minusdot\",!0),I(L,G,\"⨫\",\"\\\\minusfdots\",!0),I(L,G,\"⨬\",\"\\\\minusrdots\",!0),I(L,G,\"⊻\",\"\\\\Xor\",!0),I(L,G,\"⊼\",\"\\\\Nand\",!0),I(L,G,\"⊽\",\"\\\\Nor\",!0),I(L,G,\"⊽\",\"\\\\barvee\"),I(L,G,\"⫴\",\"\\\\interleave\",!0),I(L,G,\"⧢\",\"\\\\shuffle\",!0),I(L,G,\"⫶\",\"\\\\threedotcolon\",!0),I(L,G,\"⦂\",\"\\\\typecolon\",!0),I(L,G,\"∾\",\"\\\\invlazys\",!0),I(L,G,\"⩋\",\"\\\\twocaps\",!0),I(L,G,\"⩊\",\"\\\\twocups\",!0),I(L,G,\"⩎\",\"\\\\Sqcap\",!0),I(L,G,\"⩏\",\"\\\\Sqcup\",!0),I(L,G,\"⩖\",\"\\\\veeonvee\",!0),I(L,G,\"⩕\",\"\\\\wedgeonwedge\",!0),I(L,G,\"⧗\",\"\\\\blackhourglass\",!0),I(L,G,\"⧆\",\"\\\\boxast\",!0),I(L,G,\"⧈\",\"\\\\boxbox\",!0),I(L,G,\"⧇\",\"\\\\boxcircle\",!0),I(L,G,\"⊜\",\"\\\\circledequal\",!0),I(L,G,\"⦷\",\"\\\\circledparallel\",!0),I(L,G,\"⦶\",\"\\\\circledvert\",!0),I(L,G,\"⦵\",\"\\\\circlehbar\",!0),I(L,G,\"⟡\",\"\\\\concavediamond\",!0),I(L,G,\"⟢\",\"\\\\concavediamondtickleft\",!0),I(L,G,\"⟣\",\"\\\\concavediamondtickright\",!0),I(L,G,\"⋄\",\"\\\\diamond\",!0),I(L,G,\"⧖\",\"\\\\hourglass\",!0),I(L,G,\"⟠\",\"\\\\lozengeminus\",!0),I(L,G,\"⌽\",\"\\\\obar\",!0),I(L,G,\"⦸\",\"\\\\obslash\",!0),I(L,G,\"⨸\",\"\\\\odiv\",!0),I(L,G,\"⧁\",\"\\\\ogreaterthan\",!0),I(L,G,\"⧀\",\"\\\\olessthan\",!0),I(L,G,\"⦹\",\"\\\\operp\",!0),I(L,G,\"⨷\",\"\\\\Otimes\",!0),I(L,G,\"⨶\",\"\\\\otimeshat\",!0),I(L,G,\"⋆\",\"\\\\star\",!0),I(L,G,\"△\",\"\\\\triangle\",!0),I(L,G,\"⨺\",\"\\\\triangleminus\",!0),I(L,G,\"⨹\",\"\\\\triangleplus\",!0),I(L,G,\"⨻\",\"\\\\triangletimes\",!0),I(L,G,\"⟤\",\"\\\\whitesquaretickleft\",!0),I(L,G,\"⟥\",\"\\\\whitesquaretickright\",!0),I(L,G,\"⨳\",\"\\\\smashtimes\",!0),I(L,_,\"⇢\",\"\\\\dashrightarrow\",!0),I(L,_,\"⇠\",\"\\\\dashleftarrow\",!0),I(L,_,\"⇇\",\"\\\\leftleftarrows\",!0),I(L,_,\"⇆\",\"\\\\leftrightarrows\",!0),I(L,_,\"⇚\",\"\\\\Lleftarrow\",!0),I(L,_,\"↞\",\"\\\\twoheadleftarrow\",!0),I(L,_,\"↢\",\"\\\\leftarrowtail\",!0),I(L,_,\"↫\",\"\\\\looparrowleft\",!0),I(L,_,\"⇋\",\"\\\\leftrightharpoons\",!0),I(L,_,\"↶\",\"\\\\curvearrowleft\",!0),I(L,_,\"↺\",\"\\\\circlearrowleft\",!0),I(L,_,\"↰\",\"\\\\Lsh\",!0),I(L,_,\"⇈\",\"\\\\upuparrows\",!0),I(L,_,\"↿\",\"\\\\upharpoonleft\",!0),I(L,_,\"⇃\",\"\\\\downharpoonleft\",!0),I(L,_,\"⊶\",\"\\\\origof\",!0),I(L,_,\"⊷\",\"\\\\imageof\",!0),I(L,_,\"⊸\",\"\\\\multimap\",!0),I(L,_,\"↭\",\"\\\\leftrightsquigarrow\",!0),I(L,_,\"⇉\",\"\\\\rightrightarrows\",!0),I(L,_,\"⇄\",\"\\\\rightleftarrows\",!0),I(L,_,\"↠\",\"\\\\twoheadrightarrow\",!0),I(L,_,\"↣\",\"\\\\rightarrowtail\",!0),I(L,_,\"↬\",\"\\\\looparrowright\",!0),I(L,_,\"↷\",\"\\\\curvearrowright\",!0),I(L,_,\"↻\",\"\\\\circlearrowright\",!0),I(L,_,\"↱\",\"\\\\Rsh\",!0),I(L,_,\"⇊\",\"\\\\downdownarrows\",!0),I(L,_,\"↾\",\"\\\\upharpoonright\",!0),I(L,_,\"⇂\",\"\\\\downharpoonright\",!0),I(L,_,\"⇝\",\"\\\\rightsquigarrow\",!0),I(L,_,\"⇝\",\"\\\\leadsto\"),I(L,_,\"⇛\",\"\\\\Rrightarrow\",!0),I(L,_,\"↾\",\"\\\\restriction\"),I(L,X,\"‘\",\"`\"),I(L,X,\"$\",\"\\\\$\"),I(F,X,\"$\",\"\\\\$\"),I(F,X,\"$\",\"\\\\textdollar\"),I(L,X,\"¢\",\"\\\\cent\"),I(F,X,\"¢\",\"\\\\cent\"),I(L,X,\"%\",\"\\\\%\"),I(F,X,\"%\",\"\\\\%\"),I(L,X,\"_\",\"\\\\_\"),I(F,X,\"_\",\"\\\\_\"),I(F,X,\"_\",\"\\\\textunderscore\"),I(F,X,\"␣\",\"\\\\textvisiblespace\",!0),I(L,X,\"∠\",\"\\\\angle\",!0),I(L,X,\"∞\",\"\\\\infty\",!0),I(L,X,\"′\",\"\\\\prime\"),I(L,X,\"″\",\"\\\\dprime\"),I(L,X,\"‴\",\"\\\\trprime\"),I(L,X,\"⁗\",\"\\\\qprime\"),I(L,X,\"△\",\"\\\\triangle\"),I(F,X,\"Α\",\"\\\\Alpha\",!0),I(F,X,\"Β\",\"\\\\Beta\",!0),I(F,X,\"Γ\",\"\\\\Gamma\",!0),I(F,X,\"Δ\",\"\\\\Delta\",!0),I(F,X,\"Ε\",\"\\\\Epsilon\",!0),I(F,X,\"Ζ\",\"\\\\Zeta\",!0),I(F,X,\"Η\",\"\\\\Eta\",!0),I(F,X,\"Θ\",\"\\\\Theta\",!0),I(F,X,\"Ι\",\"\\\\Iota\",!0),I(F,X,\"Κ\",\"\\\\Kappa\",!0),I(F,X,\"Λ\",\"\\\\Lambda\",!0),I(F,X,\"Μ\",\"\\\\Mu\",!0),I(F,X,\"Ν\",\"\\\\Nu\",!0),I(F,X,\"Ξ\",\"\\\\Xi\",!0),I(F,X,\"Ο\",\"\\\\Omicron\",!0),I(F,X,\"Π\",\"\\\\Pi\",!0),I(F,X,\"Ρ\",\"\\\\Rho\",!0),I(F,X,\"Σ\",\"\\\\Sigma\",!0),I(F,X,\"Τ\",\"\\\\Tau\",!0),I(F,X,\"Υ\",\"\\\\Upsilon\",!0),I(F,X,\"Φ\",\"\\\\Phi\",!0),I(F,X,\"Χ\",\"\\\\Chi\",!0),I(F,X,\"Ψ\",\"\\\\Psi\",!0),I(F,X,\"Ω\",\"\\\\Omega\",!0),I(L,R,\"Α\",\"\\\\Alpha\",!0),I(L,R,\"Β\",\"\\\\Beta\",!0),I(L,R,\"Γ\",\"\\\\Gamma\",!0),I(L,R,\"Δ\",\"\\\\Delta\",!0),I(L,R,\"Ε\",\"\\\\Epsilon\",!0),I(L,R,\"Ζ\",\"\\\\Zeta\",!0),I(L,R,\"Η\",\"\\\\Eta\",!0),I(L,R,\"Θ\",\"\\\\Theta\",!0),I(L,R,\"Ι\",\"\\\\Iota\",!0),I(L,R,\"Κ\",\"\\\\Kappa\",!0),I(L,R,\"Λ\",\"\\\\Lambda\",!0),I(L,R,\"Μ\",\"\\\\Mu\",!0),I(L,R,\"Ν\",\"\\\\Nu\",!0),I(L,R,\"Ξ\",\"\\\\Xi\",!0),I(L,R,\"Ο\",\"\\\\Omicron\",!0),I(L,R,\"Π\",\"\\\\Pi\",!0),I(L,R,\"Ρ\",\"\\\\Rho\",!0),I(L,R,\"Σ\",\"\\\\Sigma\",!0),I(L,R,\"Τ\",\"\\\\Tau\",!0),I(L,R,\"Υ\",\"\\\\Upsilon\",!0),I(L,R,\"Φ\",\"\\\\Phi\",!0),I(L,R,\"Χ\",\"\\\\Chi\",!0),I(L,R,\"Ψ\",\"\\\\Psi\",!0),I(L,R,\"Ω\",\"\\\\Omega\",!0),I(L,H,\"¬\",\"\\\\neg\",!0),I(L,H,\"¬\",\"\\\\lnot\"),I(L,X,\"⊤\",\"\\\\top\"),I(L,X,\"⊥\",\"\\\\bot\"),I(L,X,\"∅\",\"\\\\emptyset\"),I(L,X,\"⌀\",\"\\\\varnothing\"),I(L,R,\"α\",\"\\\\alpha\",!0),I(L,R,\"β\",\"\\\\beta\",!0),I(L,R,\"γ\",\"\\\\gamma\",!0),I(L,R,\"δ\",\"\\\\delta\",!0),I(L,R,\"ϵ\",\"\\\\epsilon\",!0),I(L,R,\"ζ\",\"\\\\zeta\",!0),I(L,R,\"η\",\"\\\\eta\",!0),I(L,R,\"θ\",\"\\\\theta\",!0),I(L,R,\"ι\",\"\\\\iota\",!0),I(L,R,\"κ\",\"\\\\kappa\",!0),I(L,R,\"λ\",\"\\\\lambda\",!0),I(L,R,\"μ\",\"\\\\mu\",!0),I(L,R,\"ν\",\"\\\\nu\",!0),I(L,R,\"ξ\",\"\\\\xi\",!0),I(L,R,\"ο\",\"\\\\omicron\",!0),I(L,R,\"π\",\"\\\\pi\",!0),I(L,R,\"ρ\",\"\\\\rho\",!0),I(L,R,\"σ\",\"\\\\sigma\",!0),I(L,R,\"τ\",\"\\\\tau\",!0),I(L,R,\"υ\",\"\\\\upsilon\",!0),I(L,R,\"ϕ\",\"\\\\phi\",!0),I(L,R,\"χ\",\"\\\\chi\",!0),I(L,R,\"ψ\",\"\\\\psi\",!0),I(L,R,\"ω\",\"\\\\omega\",!0),I(L,R,\"ε\",\"\\\\varepsilon\",!0),I(L,R,\"ϑ\",\"\\\\vartheta\",!0),I(L,R,\"ϖ\",\"\\\\varpi\",!0),I(L,R,\"ϱ\",\"\\\\varrho\",!0),I(L,R,\"ς\",\"\\\\varsigma\",!0),I(L,R,\"φ\",\"\\\\varphi\",!0),I(L,R,\"Ϙ\",\"\\\\Coppa\",!0),I(L,R,\"ϙ\",\"\\\\coppa\",!0),I(L,R,\"ϙ\",\"\\\\varcoppa\",!0),I(L,R,\"Ϟ\",\"\\\\Koppa\",!0),I(L,R,\"ϟ\",\"\\\\koppa\",!0),I(L,R,\"Ϡ\",\"\\\\Sampi\",!0),I(L,R,\"ϡ\",\"\\\\sampi\",!0),I(L,R,\"Ϛ\",\"\\\\Stigma\",!0),I(L,R,\"ϛ\",\"\\\\stigma\",!0),I(L,R,\"⫫\",\"\\\\Bot\"),I(L,X,\"ð\",\"\\\\eth\",!0),I(F,X,\"ð\",\"ð\"),I(L,X,\"Å\",\"\\\\AA\"),I(F,X,\"Å\",\"\\\\AA\",!0),I(L,X,\"Æ\",\"\\\\AE\",!0),I(F,X,\"Æ\",\"\\\\AE\",!0),I(L,X,\"Ð\",\"\\\\DH\",!0),I(F,X,\"Ð\",\"\\\\DH\",!0),I(L,X,\"Þ\",\"\\\\TH\",!0),I(F,X,\"Þ\",\"\\\\TH\",!0),I(L,X,\"ß\",\"\\\\ss\",!0),I(F,X,\"ß\",\"\\\\ss\",!0),I(L,X,\"å\",\"\\\\aa\"),I(F,X,\"å\",\"\\\\aa\",!0),I(L,X,\"æ\",\"\\\\ae\",!0),I(F,X,\"æ\",\"\\\\ae\",!0),I(L,X,\"ð\",\"\\\\dh\"),I(F,X,\"ð\",\"\\\\dh\",!0),I(L,X,\"þ\",\"\\\\th\",!0),I(F,X,\"þ\",\"\\\\th\",!0),I(L,X,\"Đ\",\"\\\\DJ\",!0),I(F,X,\"Đ\",\"\\\\DJ\",!0),I(L,X,\"đ\",\"\\\\dj\",!0),I(F,X,\"đ\",\"\\\\dj\",!0),I(L,X,\"Ł\",\"\\\\L\",!0),I(F,X,\"Ł\",\"\\\\L\",!0),I(L,X,\"Ł\",\"\\\\l\",!0),I(F,X,\"Ł\",\"\\\\l\",!0),I(L,X,\"Ŋ\",\"\\\\NG\",!0),I(F,X,\"Ŋ\",\"\\\\NG\",!0),I(L,X,\"ŋ\",\"\\\\ng\",!0),I(F,X,\"ŋ\",\"\\\\ng\",!0),I(L,X,\"Œ\",\"\\\\OE\",!0),I(F,X,\"Œ\",\"\\\\OE\",!0),I(L,X,\"œ\",\"\\\\oe\",!0),I(F,X,\"œ\",\"\\\\oe\",!0),I(L,G,\"∗\",\"∗\",!0),I(L,G,\"+\",\"+\"),I(L,G,\"∗\",\"*\"),I(L,G,\"⁄\",\"/\",!0),I(L,G,\"⁄\",\"⁄\"),I(L,G,\"−\",\"-\",!0),I(L,G,\"⋅\",\"\\\\cdot\",!0),I(L,G,\"∘\",\"\\\\circ\",!0),I(L,G,\"÷\",\"\\\\div\",!0),I(L,G,\"±\",\"\\\\pm\",!0),I(L,G,\"×\",\"\\\\times\",!0),I(L,G,\"∩\",\"\\\\cap\",!0),I(L,G,\"∪\",\"\\\\cup\",!0),I(L,G,\"∖\",\"\\\\setminus\",!0),I(L,G,\"∧\",\"\\\\land\"),I(L,G,\"∨\",\"\\\\lor\"),I(L,G,\"∧\",\"\\\\wedge\",!0),I(L,G,\"∨\",\"\\\\vee\",!0),I(L,H,\"⟦\",\"\\\\llbracket\",!0),I(L,j,\"⟧\",\"\\\\rrbracket\",!0),I(L,H,\"⟨\",\"\\\\langle\",!0),I(L,H,\"⟪\",\"\\\\lAngle\",!0),I(L,H,\"⦉\",\"\\\\llangle\",!0),I(L,H,\"|\",\"\\\\lvert\"),I(L,H,\"‖\",\"\\\\lVert\",!0),I(L,X,\"!\",\"\\\\oc\"),I(L,X,\"?\",\"\\\\wn\"),I(L,X,\"↓\",\"\\\\shpos\"),I(L,X,\"↕\",\"\\\\shift\"),I(L,X,\"↑\",\"\\\\shneg\"),I(L,j,\"?\",\"?\"),I(L,j,\"!\",\"!\"),I(L,j,\"‼\",\"‼\"),I(L,j,\"⟩\",\"\\\\rangle\",!0),I(L,j,\"⟫\",\"\\\\rAngle\",!0),I(L,j,\"⦊\",\"\\\\rrangle\",!0),I(L,j,\"|\",\"\\\\rvert\"),I(L,j,\"‖\",\"\\\\rVert\"),I(L,H,\"⦃\",\"\\\\lBrace\",!0),I(L,j,\"⦄\",\"\\\\rBrace\",!0),I(L,_,\"=\",\"\\\\equal\",!0),I(L,_,\":\",\":\"),I(L,_,\"≈\",\"\\\\approx\",!0),I(L,_,\"≅\",\"\\\\cong\",!0),I(L,_,\"≥\",\"\\\\ge\"),I(L,_,\"≥\",\"\\\\geq\",!0),I(L,_,\"←\",\"\\\\gets\"),I(L,_,\">\",\"\\\\gt\",!0),I(L,_,\"∈\",\"\\\\in\",!0),I(L,_,\"∉\",\"\\\\notin\",!0),I(L,_,\"\",\"\\\\@not\"),I(L,_,\"⊂\",\"\\\\subset\",!0),I(L,_,\"⊃\",\"\\\\supset\",!0),I(L,_,\"⊆\",\"\\\\subseteq\",!0),I(L,_,\"⊇\",\"\\\\supseteq\",!0),I(L,_,\"⊈\",\"\\\\nsubseteq\",!0),I(L,_,\"⊈\",\"\\\\nsubseteqq\"),I(L,_,\"⊉\",\"\\\\nsupseteq\",!0),I(L,_,\"⊉\",\"\\\\nsupseteqq\"),I(L,_,\"⊨\",\"\\\\models\"),I(L,_,\"←\",\"\\\\leftarrow\",!0),I(L,_,\"≤\",\"\\\\le\"),I(L,_,\"≤\",\"\\\\leq\",!0),I(L,_,\"<\",\"\\\\lt\",!0),I(L,_,\"→\",\"\\\\rightarrow\",!0),I(L,_,\"→\",\"\\\\to\"),I(L,_,\"≱\",\"\\\\ngeq\",!0),I(L,_,\"≱\",\"\\\\ngeqq\"),I(L,_,\"≱\",\"\\\\ngeqslant\"),I(L,_,\"≰\",\"\\\\nleq\",!0),I(L,_,\"≰\",\"\\\\nleqq\"),I(L,_,\"≰\",\"\\\\nleqslant\"),I(L,_,\"⫫\",\"\\\\Perp\",!0),I(L,W,\" \",\"\\\\ \"),I(L,W,\" \",\"\\\\space\"),I(L,W,\" \",\"\\\\nobreakspace\"),I(F,W,\" \",\"\\\\ \"),I(F,W,\" \",\" \"),I(F,W,\" \",\"\\\\space\"),I(F,W,\" \",\"\\\\nobreakspace\"),I(L,W,null,\"\\\\nobreak\"),I(L,W,null,\"\\\\allowbreak\"),I(L,V,\",\",\",\"),I(F,V,\":\",\":\"),I(L,V,\";\",\";\"),I(L,G,\"⊼\",\"\\\\barwedge\"),I(L,G,\"⊻\",\"\\\\veebar\"),I(L,G,\"⊙\",\"\\\\odot\",!0),I(L,G,\"⊕︎\",\"\\\\oplus\"),I(L,G,\"⊗\",\"\\\\otimes\",!0),I(L,X,\"∂\",\"\\\\partial\",!0),I(L,G,\"⊘\",\"\\\\oslash\",!0),I(L,G,\"⊚\",\"\\\\circledcirc\",!0),I(L,G,\"⊡\",\"\\\\boxdot\",!0),I(L,G,\"△\",\"\\\\bigtriangleup\"),I(L,G,\"▽\",\"\\\\bigtriangledown\"),I(L,G,\"†\",\"\\\\dagger\"),I(L,G,\"⋄\",\"\\\\diamond\"),I(L,G,\"◃\",\"\\\\triangleleft\"),I(L,G,\"▹\",\"\\\\triangleright\"),I(L,H,\"{\",\"\\\\{\"),I(F,X,\"{\",\"\\\\{\"),I(F,X,\"{\",\"\\\\textbraceleft\"),I(L,j,\"}\",\"\\\\}\"),I(F,X,\"}\",\"\\\\}\"),I(F,X,\"}\",\"\\\\textbraceright\"),I(L,H,\"{\",\"\\\\lbrace\"),I(L,j,\"}\",\"\\\\rbrace\"),I(L,H,\"[\",\"\\\\lbrack\",!0),I(F,X,\"[\",\"\\\\lbrack\",!0),I(L,j,\"]\",\"\\\\rbrack\",!0),I(F,X,\"]\",\"\\\\rbrack\",!0),I(L,H,\"(\",\"\\\\lparen\",!0),I(L,j,\")\",\"\\\\rparen\",!0),I(L,H,\"⦇\",\"\\\\llparenthesis\",!0),I(L,j,\"⦈\",\"\\\\rrparenthesis\",!0),I(F,X,\"<\",\"\\\\textless\",!0),I(F,X,\">\",\"\\\\textgreater\",!0),I(L,H,\"⌊\",\"\\\\lfloor\",!0),I(L,j,\"⌋\",\"\\\\rfloor\",!0),I(L,H,\"⌈\",\"\\\\lceil\",!0),I(L,j,\"⌉\",\"\\\\rceil\",!0),I(L,X,\"\\\\\",\"\\\\backslash\"),I(L,X,\"|\",\"|\"),I(L,X,\"|\",\"\\\\vert\"),I(F,X,\"|\",\"\\\\textbar\",!0),I(L,X,\"‖\",\"\\\\|\"),I(L,X,\"‖\",\"\\\\Vert\"),I(F,X,\"‖\",\"\\\\textbardbl\"),I(F,X,\"~\",\"\\\\textasciitilde\"),I(F,X,\"\\\\\",\"\\\\textbackslash\"),I(F,X,\"^\",\"\\\\textasciicircum\"),I(L,_,\"↑\",\"\\\\uparrow\",!0),I(L,_,\"⇑\",\"\\\\Uparrow\",!0),I(L,_,\"↓\",\"\\\\downarrow\",!0),I(L,_,\"⇓\",\"\\\\Downarrow\",!0),I(L,_,\"↕\",\"\\\\updownarrow\",!0),I(L,_,\"⇕\",\"\\\\Updownarrow\",!0),I(L,U,\"∐\",\"\\\\coprod\"),I(L,U,\"⋁\",\"\\\\bigvee\"),I(L,U,\"⋀\",\"\\\\bigwedge\"),I(L,U,\"⨄\",\"\\\\biguplus\"),I(L,U,\"⨄\",\"\\\\bigcupplus\"),I(L,U,\"⨃\",\"\\\\bigcupdot\"),I(L,U,\"⨇\",\"\\\\bigdoublevee\"),I(L,U,\"⨈\",\"\\\\bigdoublewedge\"),I(L,U,\"⋂\",\"\\\\bigcap\"),I(L,U,\"⋃\",\"\\\\bigcup\"),I(L,U,\"∫\",\"\\\\int\"),I(L,U,\"∫\",\"\\\\intop\"),I(L,U,\"∬\",\"\\\\iint\"),I(L,U,\"∭\",\"\\\\iiint\"),I(L,U,\"∏\",\"\\\\prod\"),I(L,U,\"∑\",\"\\\\sum\"),I(L,U,\"⨂\",\"\\\\bigotimes\"),I(L,U,\"⨁\",\"\\\\bigoplus\"),I(L,U,\"⨀\",\"\\\\bigodot\"),I(L,U,\"⨉\",\"\\\\bigtimes\"),I(L,U,\"∮\",\"\\\\oint\"),I(L,U,\"∯\",\"\\\\oiint\"),I(L,U,\"∰\",\"\\\\oiiint\"),I(L,U,\"∱\",\"\\\\intclockwise\"),I(L,U,\"∲\",\"\\\\varointclockwise\"),I(L,U,\"⨌\",\"\\\\iiiint\"),I(L,U,\"⨍\",\"\\\\intbar\"),I(L,U,\"⨎\",\"\\\\intBar\"),I(L,U,\"⨏\",\"\\\\fint\"),I(L,U,\"⨒\",\"\\\\rppolint\"),I(L,U,\"⨓\",\"\\\\scpolint\"),I(L,U,\"⨕\",\"\\\\pointint\"),I(L,U,\"⨖\",\"\\\\sqint\"),I(L,U,\"⨗\",\"\\\\intlarhk\"),I(L,U,\"⨘\",\"\\\\intx\"),I(L,U,\"⨙\",\"\\\\intcap\"),I(L,U,\"⨚\",\"\\\\intcup\"),I(L,U,\"⨅\",\"\\\\bigsqcap\"),I(L,U,\"⨆\",\"\\\\bigsqcup\"),I(L,U,\"∫\",\"\\\\smallint\"),I(F,P,\"…\",\"\\\\textellipsis\"),I(L,P,\"…\",\"\\\\mathellipsis\"),I(F,P,\"…\",\"\\\\ldots\",!0),I(L,P,\"…\",\"\\\\ldots\",!0),I(L,P,\"⋰\",\"\\\\iddots\",!0),I(L,P,\"⋯\",\"\\\\@cdots\",!0),I(L,P,\"⋱\",\"\\\\ddots\",!0),I(L,X,\"⋮\",\"\\\\varvdots\"),I(F,X,\"⋮\",\"\\\\varvdots\"),I(L,D,\"´\",\"\\\\acute\"),I(L,D,\"`\",\"\\\\grave\"),I(L,D,\"¨\",\"\\\\ddot\"),I(L,D,\"…\",\"\\\\dddot\"),I(L,D,\"….\",\"\\\\ddddot\"),I(L,D,\"~\",\"\\\\tilde\"),I(L,D,\"‾\",\"\\\\bar\"),I(L,D,\"˘\",\"\\\\breve\"),I(L,D,\"ˇ\",\"\\\\check\"),I(L,D,\"^\",\"\\\\hat\"),I(L,D,\"→\",\"\\\\vec\"),I(L,D,\"˙\",\"\\\\dot\"),I(L,D,\"˚\",\"\\\\mathring\"),I(L,R,\"ı\",\"\\\\imath\",!0),I(L,R,\"ȷ\",\"\\\\jmath\",!0),I(L,X,\"ı\",\"ı\"),I(L,X,\"ȷ\",\"ȷ\"),I(F,X,\"ı\",\"\\\\i\",!0),I(F,X,\"ȷ\",\"\\\\j\",!0),I(F,X,\"ø\",\"\\\\o\",!0),I(L,R,\"ø\",\"\\\\o\",!0),I(F,X,\"Ø\",\"\\\\O\",!0),I(L,R,\"Ø\",\"\\\\O\",!0),I(F,D,\"ˊ\",\"\\\\'\"),I(F,D,\"ˋ\",\"\\\\`\"),I(F,D,\"ˆ\",\"\\\\^\"),I(F,D,\"~\",\"\\\\~\"),I(F,D,\"ˉ\",\"\\\\=\"),I(F,D,\"˘\",\"\\\\u\"),I(F,D,\"˙\",\"\\\\.\"),I(F,D,\"¸\",\"\\\\c\"),I(F,D,\"˚\",\"\\\\r\"),I(F,D,\"ˇ\",\"\\\\v\");I(F,D,\"¨\",'\\\\\"'),I(F,D,\"˝\",\"\\\\H\"),I(L,D,\"ˊ\",\"\\\\'\"),I(L,D,\"ˋ\",\"\\\\`\"),I(L,D,\"ˆ\",\"\\\\^\"),I(L,D,\"~\",\"\\\\~\"),I(L,D,\"ˉ\",\"\\\\=\"),I(L,D,\"˘\",\"\\\\u\"),I(L,D,\"˙\",\"\\\\.\"),I(L,D,\"¸\",\"\\\\c\"),I(L,D,\"˚\",\"\\\\r\"),I(L,D,\"ˇ\",\"\\\\v\"),I(L,D,\"¨\",'\\\\\"'),I(L,D,\"˝\",\"\\\\H\");const Z={\"--\":!0,\"---\":!0,\"``\":!0,\"''\":!0};I(F,X,\"–\",\"--\",!0),I(F,X,\"–\",\"\\\\textendash\"),I(F,X,\"—\",\"---\",!0),I(F,X,\"—\",\"\\\\textemdash\"),I(F,X,\"‘\",\"`\",!0),I(F,X,\"‘\",\"\\\\textquoteleft\"),I(F,X,\"’\",\"'\",!0),I(F,X,\"’\",\"\\\\textquoteright\"),I(F,X,\"“\",\"``\",!0),I(F,X,\"“\",\"\\\\textquotedblleft\"),I(F,X,\"”\",\"''\",!0),I(F,X,\"”\",\"\\\\textquotedblright\"),I(L,X,\"°\",\"\\\\degree\",!0),I(F,X,\"°\",\"\\\\degree\"),I(F,X,\"°\",\"\\\\textdegree\",!0),I(L,X,\"£\",\"\\\\pounds\"),I(L,X,\"£\",\"\\\\mathsterling\",!0),I(F,X,\"£\",\"\\\\pounds\"),I(F,X,\"£\",\"\\\\textsterling\",!0),I(L,X,\"✠\",\"\\\\maltese\"),I(F,X,\"✠\",\"\\\\maltese\"),I(L,X,\"€\",\"\\\\euro\",!0),I(F,X,\"€\",\"\\\\euro\",!0),I(F,X,\"€\",\"\\\\texteuro\"),I(L,X,\"©\",\"\\\\copyright\",!0),I(F,X,\"©\",\"\\\\textcopyright\"),I(L,X,\"⌀\",\"\\\\diameter\",!0),I(F,X,\"⌀\",\"\\\\diameter\"),I(L,X,\"𝛤\",\"\\\\varGamma\"),I(L,X,\"𝛥\",\"\\\\varDelta\"),I(L,X,\"𝛩\",\"\\\\varTheta\"),I(L,X,\"𝛬\",\"\\\\varLambda\"),I(L,X,\"𝛯\",\"\\\\varXi\"),I(L,X,\"𝛱\",\"\\\\varPi\"),I(L,X,\"𝛴\",\"\\\\varSigma\"),I(L,X,\"𝛶\",\"\\\\varUpsilon\"),I(L,X,\"𝛷\",\"\\\\varPhi\"),I(L,X,\"𝛹\",\"\\\\varPsi\"),I(L,X,\"𝛺\",\"\\\\varOmega\"),I(F,X,\"𝛤\",\"\\\\varGamma\"),I(F,X,\"𝛥\",\"\\\\varDelta\"),I(F,X,\"𝛩\",\"\\\\varTheta\"),I(F,X,\"𝛬\",\"\\\\varLambda\"),I(F,X,\"𝛯\",\"\\\\varXi\"),I(F,X,\"𝛱\",\"\\\\varPi\"),I(F,X,\"𝛴\",\"\\\\varSigma\"),I(F,X,\"𝛶\",\"\\\\varUpsilon\"),I(F,X,\"𝛷\",\"\\\\varPhi\"),I(F,X,\"𝛹\",\"\\\\varPsi\"),I(F,X,\"𝛺\",\"\\\\varOmega\");const Y='0123456789/@.\"';for(let e=0;e<14;e++){const t=Y.charAt(e);I(L,X,t,t)}const J='0123456789!@*()-=+\";:?/.,';for(let e=0;e<25;e++){const t=J.charAt(e);I(F,X,t,t)}const K=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";for(let e=0;e<52;e++){const t=K.charAt(e);I(L,R,t,t),I(F,X,t,t)}const Q=\"ÇÐÞçþℂℍℕℙℚℝℤℎℏℊℋℌℐℑℒℓ℘ℛℜℬℰℱℳℭℨ\";for(let e=0;e<30;e++){const t=Q.charAt(e);I(L,R,t,t),I(F,X,t,t)}let ee=\"\";for(let e=0;e<52;e++){ee=String.fromCharCode(55349,56320+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56372+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56424+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56580+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56736+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56788+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56840+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56944+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56632+e),I(L,R,ee,ee),I(F,X,ee,ee);const t=K.charAt(e);ee=String.fromCharCode(55349,56476+e),I(L,R,t,ee),I(F,X,t,ee)}for(let e=0;e<10;e++)ee=String.fromCharCode(55349,57294+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57314+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57324+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57334+e),I(L,R,ee,ee),I(F,X,ee,ee);const te=function(e,t,r){return!E[t][e]||!E[t][e].replace||55349===e.charCodeAt(0)||Object.prototype.hasOwnProperty.call(Z,e)&&r&&(r.fontFamily&&\"tt\"===r.fontFamily.slice(4,6)||r.font&&\"tt\"===r.font.slice(4,6))||(e=E[t][e].replace),new T.TextNode(e)},re=(e,t)=>{if(0===e.children.length||\"mtext\"!==e.children[e.children.length-1].type){const r=new T.MathNode(\"mtext\",[new T.TextNode(t.children[0].text)]);e.children.push(r)}else e.children[e.children.length-1].children[0].text+=t.children[0].text},ne=e=>{if(\"mrow\"!==e.type&&\"mstyle\"!==e.type)return e;if(0===e.children.length)return e;const t=new T.MathNode(\"mrow\");for(let r=0;r<e.children.length;r++){const n=e.children[r];if(\"mtext\"===n.type&&0===Object.keys(n.attributes).length)re(t,n);else if(\"mrow\"===n.type){let e=!0;for(let t=0;t<n.children.length;t++){if(\"mtext\"!==n.children[t].type||0!==Object.keys(n.attributes).length){e=!1;break}}if(e)for(let e=0;e<n.children.length;e++){const r=n.children[e];re(t,r)}else t.children.push(n)}else t.children.push(n)}for(let r=0;r<t.children.length;r++)if(\"mtext\"===t.children[r].type){const n=t.children[r];\" \"===n.children[0].text.charAt(0)&&(n.children[0].text=\" \"+n.children[0].text.slice(1));const s=n.children[0].text.length;s>0&&\" \"===n.children[0].text.charAt(s-1)&&(n.children[0].text=n.children[0].text.slice(0,-1)+\" \");for(const[t,r]of Object.entries(e.attributes))n.attributes[t]=r}return 1===t.children.length&&\"mtext\"===t.children[0].type?t.children[0]:t},se=function(e,t=!1){if(!(1!==e.length||e[0]instanceof u))return e[0];if(!t){e[0]instanceof v&&\"mo\"===e[0].type&&!e[0].attributes.fence&&(e[0].attributes.lspace=\"0em\",e[0].attributes.rspace=\"0em\");const t=e.length-1;e[t]instanceof v&&\"mo\"===e[t].type&&!e[t].attributes.fence&&(e[t].attributes.lspace=\"0em\",e[t].attributes.rspace=\"0em\")}return new T.MathNode(\"mrow\",e)};function oe(e){if(!e)return!1;if(\"mi\"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&\".\"===t.text}if(\"mtext\"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&\" \"===t.text}if(\"mo\"===e.type&&1===e.children.length&&\"true\"===e.getAttribute(\"separator\")&&\"0em\"===e.getAttribute(\"lspace\")&&\"0em\"===e.getAttribute(\"rspace\")){const t=e.children[0];return t instanceof A&&\",\"===t.text}return!1}const ae=(e,t)=>{const r=e[t],n=e[t+1];return\"atom\"===r.type&&\",\"===r.text&&r.loc&&n.loc&&r.loc.end===n.loc.start},le=e=>\"atom\"===e.type&&\"rel\"===e.family||\"mclass\"===e.type&&\"mrel\"===e.mclass,ie=function(e,t,r=!1){if(!r&&1===e.length){const r=de(e[0],t);return r instanceof v&&\"mo\"===r.type&&(r.setAttribute(\"lspace\",\"0em\"),r.setAttribute(\"rspace\",\"0em\")),[r]}const n=[],s=[];let o;for(let r=0;r<e.length;r++)s.push(de(e[r],t));for(let t=0;t<s.length;t++){const r=s[t];if(t<e.length-1&&le(e[t])&&le(e[t+1])&&r.setAttribute(\"rspace\",\"0em\"),t>0&&le(e[t])&&le(e[t-1])&&r.setAttribute(\"lspace\",\"0em\"),\"mn\"===r.type&&o&&\"mn\"===o.type)o.children.push(...r.children);else if(oe(r)&&o&&\"mn\"===o.type)o.children.push(...r.children);else if(o&&\"mn\"===o.type&&t<s.length-1&&\"mn\"===s[t+1].type&&ae(e,t))o.children.push(...r.children);else{if(\"mn\"===r.type&&oe(o))r.children=[...o.children,...r.children],n.pop();else if((\"msup\"===r.type||\"msub\"===r.type)&&r.children.length>=1&&o&&(\"mn\"===o.type||oe(o))){const e=r.children[0];e instanceof v&&\"mn\"===e.type&&o&&(e.children=[...o.children,...e.children],n.pop())}n.push(r),o=r}}return n},ce=function(e,t,r=!1){return se(ie(e,t,r),r)},de=function(t,r){if(!t)return new T.MathNode(\"mrow\");if(i[t.type]){return i[t.type](t,r)}throw new e(\"Got group of unknown type: '\"+t.type+\"'\")},me=e=>new T.MathNode(\"mtd\",[],[],{padding:\"0\",width:\"50%\"}),pe=[\"mrow\",\"mtd\",\"mtable\",\"mtr\"],ue=e=>{for(const t of e.children)if(t.type&&pe.includes(t.type)){if(t.classes&&\"tml-label\"===t.classes[0]){return t.label}{const e=ue(t);if(e)return e}}else if(!t.type){const e=ue(t);if(e)return e}};function he(e,t,r,n){let s=null;1===e.length&&\"tag\"===e[0].type&&(s=e[0].tag,e=e[0].body);const o=ie(e,r);if(1===o.length&&o[0]instanceof x)return o[0];const a=n.displayMode||n.annotate?\"none\":n.wrap,l=0===o.length?null:o[0];let i=1===o.length&&null===s&&l instanceof v?o[0]:function(e,t,r){const n=[];let s=[],o=[],a=0,l=0,i=0;for(;l<e.length;){for(;e[l]instanceof u;)e.splice(l,1,...e[l].children);const r=e[l];if(r.attributes&&r.attributes.linebreak&&\"newline\"===r.attributes.linebreak){o.length>0&&s.push(new T.MathNode(\"mrow\",o)),s.push(r),o=[];const e=new T.MathNode(\"mtd\",s);e.style.textAlign=\"left\",n.push(new T.MathNode(\"mtr\",[e])),s=[],l+=1}else{if(o.push(r),r.type&&\"mo\"===r.type&&1===r.children.length&&!Object.prototype.hasOwnProperty.call(r.attributes,\"movablelimits\")){const n=r.children[0].text;if(\"([{⌊⌈⟨⟮⎰⟦⦃\".indexOf(n)>-1)i+=1;else if(\")]}⌋⌉⟩⟯⎱⟦⦄\".indexOf(n)>-1)i-=1;else if(0===i&&\"=\"===t&&\"=\"===n){if(a+=1,a>1){o.pop();const e=new T.MathNode(\"mrow\",o);s.push(e),o=[r]}}else if(0===i&&\"tex\"===t&&\"∇\"!==n){const t=l<e.length-1?e[l+1]:null;let r=!0;if(!t||\"mtext\"!==t.type||!t.attributes.linebreak||\"nobreak\"!==t.attributes.linebreak)for(let t=l+1;t<e.length;t++){const n=e[t];if(!n.type||\"mspace\"!==n.type||n.attributes.linebreak&&\"newline\"===n.attributes.linebreak)break;o.push(n),l+=1,n.attributes&&n.attributes.linebreak&&\"nobreak\"===n.attributes.linebreak&&(r=!1)}if(r){const e=new T.MathNode(\"mrow\",o);s.push(e),o=[]}}}l+=1}}if(o.length>0){const e=new T.MathNode(\"mrow\",o);s.push(e)}if(n.length>0){const e=new T.MathNode(\"mtd\",s);e.style.textAlign=\"left\";const t=new T.MathNode(\"mtr\",[e]);n.push(t);const o=new T.MathNode(\"mtable\",n);return r||(o.setAttribute(\"columnalign\",\"left\"),o.setAttribute(\"rowspacing\",\"0em\")),o}return T.newDocumentFragment(s)}(o,a,n.displayMode);if(s&&(i=((e,t,r,n)=>{t=ce(t[0].body,r),(t=ne(t)).classes.push(\"tml-tag\");const s=ue(e);e=new T.MathNode(\"mtd\",[e]);const o=[me(),e,me()];o[n?0:2].children.push(t);const a=new T.MathNode(\"mtr\",o,[\"tml-tageqn\"]);s&&a.setAttribute(\"id\",s);const l=new T.MathNode(\"mtable\",[a]);return l.style.width=\"100%\",l.setAttribute(\"displaystyle\",\"true\"),l})(i,s,r,n.leqno)),n.annotate){const e=new T.MathNode(\"annotation\",[new T.TextNode(t)]);e.setAttribute(\"encoding\",\"application/x-tex\"),i=new T.MathNode(\"semantics\",[i,e])}const c=new T.MathNode(\"math\",[i]);return n.xml&&c.setAttribute(\"xmlns\",\"http://www.w3.org/1998/Math/MathML\"),n.displayMode&&(c.setAttribute(\"display\",\"block\"),c.style.display=\"block math\",c.classes=[\"tml-display\"]),c}const ge=(e,t)=>{const r=e.isStretchy?C(e):new T.MathNode(\"mo\",[te(e.label,e.mode)]);e.isStretchy||r.setAttribute(\"stretchy\",\"false\"),\"\\\\vec\"!==e.label&&(r.style.mathDepth=\"0\");const n=\"\\\\c\"===e.label?\"munder\":\"mover\",s=be.has(e.label);if(\"mover\"===n&&\"math\"===e.mode&&!e.isStretchy&&e.base.text&&1===e.base.text.length){const t=e.base.text,n=\"\\\\vec\"===e.label,o=\"\\\\vec\"===n?\"-vec\":\"\";n&&r.classes.push(\"tml-vec\");const a=n?\"-vec\":s?\"-acc\":\"\";\"DHKLUcegorsuvxyzΠΥΨαδηιμνοτυχϵ\".indexOf(t)>-1?(r.classes.push(`chr-sml${o}`),r.classes.push(`wbk-sml${a}`)):\"BCEGIMNOPQRSTXZlpqtwΓΘΞΣΦΩβεζθξρςφψϑϕϱ\".indexOf(t)>-1?(r.classes.push(`chr-med${o}`),r.classes.push(`wbk-med${a}`)):\"AFJdfΔΛ\".indexOf(t)>-1?(r.classes.push(`chr-lrg${o}`),r.classes.push(`wbk-lrg${a}`)):n?r.classes.push(\"wbk-vec\"):s&&r.classes.push(\"wbk-acc\")}else s&&r.classes.push(\"wbk-acc\");return new T.MathNode(n,[de(e.base,t),r])},fe=new Set([\"\\\\acute\",\"\\\\check\",\"\\\\grave\",\"\\\\ddot\",\"\\\\dddot\",\"\\\\ddddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\",\"\\\\mathring\"]),be=new Set([\"\\\\acute\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\dot\",\"\\\\ddot\",\"\\\\grave\",\"\\\\hat\",\"\\\\mathring\",\"\\\\`\",\"\\\\'\",\"\\\\^\",\"\\\\=\",\"\\\\u\",\"\\\\.\",'\\\\\"',\"\\\\r\",\"\\\\H\",\"\\\\v\"]),ye={\"\\\\`\":\"̀\",\"\\\\'\":\"́\",\"\\\\^\":\"̂\",\"\\\\~\":\"̃\",\"\\\\=\":\"̄\",\"\\\\u\":\"̆\",\"\\\\.\":\"̇\",'\\\\\"':\"̈\",\"\\\\r\":\"̊\",\"\\\\H\":\"̋\",\"\\\\v\":\"̌\",\"\\\\c\":\"̧\"};c({type:\"accent\",names:[\"\\\\acute\",\"\\\\grave\",\"\\\\ddot\",\"\\\\dddot\",\"\\\\ddddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\",\"\\\\mathring\",\"\\\\overparen\",\"\\\\widecheck\",\"\\\\widehat\",\"\\\\wideparen\",\"\\\\widetilde\",\"\\\\overrightarrow\",\"\\\\overleftarrow\",\"\\\\Overrightarrow\",\"\\\\overleftrightarrow\",\"\\\\overgroup\",\"\\\\overleftharpoon\",\"\\\\overrightharpoon\"],props:{numArgs:1},handler:(e,t)=>{const r=m(t[0]),n=!fe.has(e.funcName);return{type:\"accent\",mode:e.parser.mode,label:e.funcName,isStretchy:n,base:r}},mathmlBuilder:ge}),c({type:\"accent\",names:[\"\\\\'\",\"\\\\`\",\"\\\\^\",\"\\\\~\",\"\\\\=\",\"\\\\c\",\"\\\\u\",\"\\\\.\",'\\\\\"',\"\\\\r\",\"\\\\H\",\"\\\\v\"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:[\"primitive\"]},handler:(e,t)=>{const r=m(t[0]),n=e.parser.mode;return\"math\"===n&&e.parser.settings.strict&&console.log(`Temml parse error: Command ${e.funcName} is invalid in math mode.`),\"text\"===n&&r.text&&1===r.text.length&&e.funcName in ye&&\"acegıȷmnopqrsuvwxyzαγεηικμνοπρςστυχωϕ𝐚𝐜𝐞𝐠𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐮𝐯𝐰𝐱𝐲𝐳\".indexOf(r.text)>-1?{type:\"textord\",mode:\"text\",text:r.text+ye[e.funcName]}:\"\\\\c\"===e.funcName&&\"text\"===n&&r.text&&1===r.text.length?{type:\"textord\",mode:\"text\",text:r.text+\"̧\"}:{type:\"accent\",mode:n,label:e.funcName,isStretchy:!1,base:r}},mathmlBuilder:ge}),c({type:\"accentUnder\",names:[\"\\\\underleftarrow\",\"\\\\underrightarrow\",\"\\\\underleftrightarrow\",\"\\\\undergroup\",\"\\\\underparen\",\"\\\\utilde\"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>{const n=r[0];return{type:\"accentUnder\",mode:e.mode,label:t,base:n}},mathmlBuilder:(e,t)=>{const r=C(e);r.style[\"math-depth\"]=0;return new T.MathNode(\"munder\",[de(e.base,t),r])}});const we={pt:800/803,pc:9600/803,dd:1238/1157*800/803,cc:12.792133216944668,nd:685/642*800/803,nc:1370/107*800/803,sp:1/65536*800/803,mm:25.4/72,cm:2.54/72,in:1/72,px:96/72},xe=[\"em\",\"ex\",\"mu\",\"pt\",\"mm\",\"cm\",\"in\",\"px\",\"bp\",\"pc\",\"dd\",\"cc\",\"nd\",\"nc\",\"sp\"],ke=function(e){return\"string\"!=typeof e&&(e=e.unit),xe.indexOf(e)>-1},ve=e=>[1,.7,.5][Math.max(e-1,0)],Ae=function(t,r){let n=t.number;if(r.maxSize[0]<0&&n>0)return{number:0,unit:\"em\"};const s=t.unit;switch(s){case\"mm\":case\"cm\":case\"in\":case\"px\":return n*we[s]>r.maxSize[1]?{number:r.maxSize[1],unit:\"pt\"}:{number:n,unit:s};case\"em\":case\"ex\":return\"ex\"===s&&(n*=.431),n=Math.min(n/ve(r.level),r.maxSize[0]),{number:o.round(n),unit:\"em\"};case\"bp\":return n>r.maxSize[1]&&(n=r.maxSize[1]),{number:n,unit:\"pt\"};case\"pt\":case\"pc\":case\"dd\":case\"cc\":case\"nd\":case\"nc\":case\"sp\":return n=Math.min(n*we[s],r.maxSize[1]),{number:o.round(n),unit:\"pt\"};case\"mu\":return n=Math.min(n/18,r.maxSize[0]),{number:o.round(n),unit:\"em\"};default:throw new e(\"Invalid unit: '\"+s+\"'\")}},Ne=e=>{const t=new T.MathNode(\"mspace\");return t.setAttribute(\"width\",e+\"em\"),t},Te=(e,t=.3,r=0,n=!1)=>{if(null==e&&0===r)return Ne(t);const s=e?[e]:[];if(0!==t&&s.unshift(Ne(t)),r>0&&s.push(Ne(r)),n){const e=new T.MathNode(\"mpadded\",s);return e.setAttribute(\"height\",\"0.1px\"),e}return new T.MathNode(\"mrow\",s)},Se=(e,t)=>Number(e)/ve(t),qe=(e,t,r,n)=>{const s=B(e),o=\"eq\"===e.slice(1,3),a=\"x\"===e.charAt(1)?\"1.75\":\"cd\"===e.slice(2,4)?\"3.0\":o?\"1.0\":\"2.0\";s.setAttribute(\"lspace\",\"0\"),s.setAttribute(\"rspace\",o?\"0.5em\":\"0\");const l=n.withLevel(n.level<2?2:3),i=Se(a,l.level),c=Se(a,3),d=Te(null,i.toFixed(4),0),m=Te(null,c.toFixed(4),0),p=Se(o?0:.3,l.level).toFixed(4);let u,h;const g=t&&t.body&&(t.body.body||t.body.length>0);if(g){let r=de(t,l);r=Te(r,p,p,\"\\\\\\\\cdrightarrow\"===e||\"\\\\\\\\cdleftarrow\"===e),u=new T.MathNode(\"mover\",[r,m])}const f=r&&r.body&&(r.body.body||r.body.length>0);if(f){let e=de(r,l);e=Te(e,p,p),h=new T.MathNode(\"munder\",[e,m])}let b;return b=g||f?g&&f?new T.MathNode(\"munderover\",[s,h,u]):g?new T.MathNode(\"mover\",[s,u]):new T.MathNode(\"munder\",[s,h]):new T.MathNode(\"mover\",[s,d]),\"3.0\"===a&&(b.style.height=\"1em\"),b.setAttribute(\"accent\",\"false\"),b};c({type:\"xArrow\",names:[\"\\\\xleftarrow\",\"\\\\xrightarrow\",\"\\\\xLeftarrow\",\"\\\\xRightarrow\",\"\\\\xleftrightarrow\",\"\\\\xLeftrightarrow\",\"\\\\xhookleftarrow\",\"\\\\xhookrightarrow\",\"\\\\xmapsto\",\"\\\\xrightharpoondown\",\"\\\\xrightharpoonup\",\"\\\\xleftharpoondown\",\"\\\\xleftharpoonup\",\"\\\\xlongequal\",\"\\\\xtwoheadrightarrow\",\"\\\\xtwoheadleftarrow\",\"\\\\xtofrom\",\"\\\\xleftrightharpoons\",\"\\\\xrightleftharpoons\",\"\\\\yields\",\"\\\\yieldsLeft\",\"\\\\mesomerism\",\"\\\\longrightharpoonup\",\"\\\\longleftharpoondown\",\"\\\\yieldsLeftRight\",\"\\\\chemequilibrium\",\"\\\\\\\\cdrightarrow\",\"\\\\\\\\cdleftarrow\",\"\\\\\\\\cdlongequal\"],props:{numArgs:1,numOptionalArgs:1},handler:({parser:e,funcName:t},r,n)=>({type:\"xArrow\",mode:e.mode,name:t,body:r[0],below:n[0]}),mathmlBuilder(e,t){const r=[qe(e.name,e.body,e.below,t)];return r.unshift(Ne(.2778)),r.push(Ne(.2778)),new T.MathNode(\"mrow\",r)}});const Oe={\"\\\\equilibriumRight\":[\"\\\\longrightharpoonup\",\"\\\\eqleftharpoondown\"],\"\\\\equilibriumLeft\":[\"\\\\eqrightharpoonup\",\"\\\\longleftharpoondown\"]};c({type:\"stackedArrow\",names:[\"\\\\equilibriumRight\",\"\\\\equilibriumLeft\"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e,funcName:t},r,n){const s=r[0]?{type:\"hphantom\",mode:e.mode,body:r[0]}:null,o=n[0]?{type:\"hphantom\",mode:e.mode,body:n[0]}:null;return{type:\"stackedArrow\",mode:e.mode,name:t,body:r[0],upperArrowBelow:o,lowerArrowBody:s,below:n[0]}},mathmlBuilder(e,t){const r=Oe[e.name][0],n=Oe[e.name][1],s=qe(r,e.body,e.upperArrowBelow,t),o=qe(n,e.lowerArrowBody,e.below,t);let a;const l=new T.MathNode(\"mpadded\",[s]);if(l.setAttribute(\"voffset\",\"0.3em\"),l.setAttribute(\"height\",\"+0.3em\"),l.setAttribute(\"depth\",\"-0.3em\"),\"\\\\equilibriumLeft\"===e.name){const e=new T.MathNode(\"mpadded\",[o]);e.setAttribute(\"width\",\"0.5em\"),a=new T.MathNode(\"mpadded\",[Ne(.2778),e,l,Ne(.2778)])}else l.setAttribute(\"width\",\"\\\\equilibriumRight\"===e.name?\"0.5em\":\"0\"),a=new T.MathNode(\"mpadded\",[Ne(.2778),l,o,Ne(.2778)]);return a.setAttribute(\"voffset\",\"-0.18em\"),a.setAttribute(\"height\",\"-0.18em\"),a.setAttribute(\"depth\",\"+0.18em\"),a}});const Me={};function Be({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n};for(let e=0;e<t.length;++e)Me[t[e]]=o;s&&(i[e]=s)}function Ce(e,t){if(!e||e.type!==t)throw new Error(`Expected node of type ${t}, but got `+(e?`node of type ${e.type}`:String(e)));return e}function ze(e){const t=$e(e);if(!t)throw new Error(\"Expected node of symbol group type, but got \"+(e?`node of type ${e.type}`:String(e)));return t}function $e(e){return e&&(\"atom\"===e.type||Object.prototype.hasOwnProperty.call($,e.type))?e:null}const Ee={\">\":\"\\\\\\\\cdrightarrow\",\"<\":\"\\\\\\\\cdleftarrow\",\"=\":\"\\\\\\\\cdlongequal\",A:\"\\\\uparrow\",V:\"\\\\downarrow\",\"|\":\"\\\\Vert\",\".\":\"no arrow\"},Ie=e=>\"textord\"===e.type&&\"@\"===e.text;function Le(e,t,r){const n=Ee[e];switch(n){case\"\\\\\\\\cdrightarrow\":case\"\\\\\\\\cdleftarrow\":return r.callFunction(n,[t[0]],[t[1]]);case\"\\\\uparrow\":case\"\\\\downarrow\":{const e={type:\"atom\",text:n,mode:\"math\",family:\"rel\"},s={type:\"ordgroup\",mode:\"math\",body:[r.callFunction(\"\\\\\\\\cdleft\",[t[0]],[]),r.callFunction(\"\\\\Big\",[e],[]),r.callFunction(\"\\\\\\\\cdright\",[t[1]],[])],semisimple:!0};return r.callFunction(\"\\\\\\\\cdparent\",[s],[])}case\"\\\\\\\\cdlongequal\":return r.callFunction(\"\\\\\\\\cdlongequal\",[],[]);case\"\\\\Vert\":{const e={type:\"textord\",text:\"\\\\Vert\",mode:\"math\"};return r.callFunction(\"\\\\Big\",[e],[])}default:return{type:\"textord\",text:\" \",mode:\"math\"}}}c({type:\"cdlabel\",names:[\"\\\\\\\\cdleft\",\"\\\\\\\\cdright\"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:\"cdlabel\",mode:e.mode,side:t.slice(4),label:r[0]}),mathmlBuilder(e,t){if(0===e.label.body.length)return new T.MathNode(\"mrow\",t);const r=de(e.label,t);\"left\"===e.side&&r.classes.push(\"tml-shift-left\");const n=new T.MathNode(\"mtd\",[r]);n.style.padding=\"0\";const s=new T.MathNode(\"mtr\",[n]),o=new T.MathNode(\"mtable\",[s]),a=new T.MathNode(\"mpadded\",[o]);return a.setAttribute(\"width\",\"0.1px\"),a.setAttribute(\"displaystyle\",\"false\"),a.setAttribute(\"scriptlevel\",\"1\"),a}}),c({type:\"cdlabelparent\",names:[\"\\\\\\\\cdparent\"],props:{numArgs:1},handler:({parser:e},t)=>({type:\"cdlabelparent\",mode:e.mode,fragment:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode(\"mrow\",[de(e.fragment,t)])});const Fe=e=>({type:\"ordgroup\",mode:\"math\",body:e,semisimple:!0}),De=(e,t)=>({type:t,mode:\"math\",body:Fe(e)});class Ge{constructor(e,t,r){this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new Ge(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class je{constructor(e,t){this.text=e,this.loc=t}range(e,t){return new je(t,Ge.range(this,e))}}const Pe=0,Re=1,Ue=2,He=3,Ve={};function _e(e,t){Ve[e]=t}const We=Ve;_e(\"\\\\noexpand\",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),_e(\"\\\\expandafter\",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),_e(\"\\\\@firstoftwo\",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),_e(\"\\\\@secondoftwo\",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),_e(\"\\\\@ifnextchar\",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),_e(\"\\\\@ifstar\",\"\\\\@ifnextchar *{\\\\@firstoftwo{#1}}\"),_e(\"\\\\TextOrMath\",(function(e){const t=e.consumeArgs(2);return\"text\"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const Xe=e=>{let t=\"\";for(let r=e.length-1;r>-1;r--)t+=e[r].text;return t},Ze={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15},Ye=e=>{const t=e.future().text;return\"EOF\"===t?[null,\"\"]:[Ze[t.charAt(0)],t]},Je=(e,t,r)=>{for(let n=1;n<t.length;n++){e*=r,e+=Ze[t.charAt(n)]}return e};function Ke(e){const t=e.consumeArgs(1)[0];let r=\"\",n=t[t.length-1].loc.start;for(let e=t.length-1;e>=0;e--){const s=t[e].loc.start;s>n&&(r+=\" \",n=s),r+=t[e].text,n+=t[e].text.length}return r}_e(\"\\\\char\",(function(t){let r,n=t.popToken(),s=\"\";if(\"'\"===n.text)r=8,n=t.popToken();else if('\"'===n.text)r=16,n=t.popToken();else if(\"`\"===n.text)if(n=t.popToken(),\"\\\\\"===n.text[0])s=n.text.charCodeAt(1);else{if(\"EOF\"===n.text)throw new e(\"\\\\char` missing argument\");s=n.text.charCodeAt(0)}else r=10;if(r){let o,a=n.text;if(s=Ze[a.charAt(0)],null==s||s>=r)throw new e(`Invalid base-${r} digit ${n.text}`);for(s=Je(s,a,r),[o,a]=Ye(t);null!=o&&o<r;)s*=r,s+=o,s=Je(s,a,r),t.popToken(),[o,a]=Ye(t)}return`\\\\@char{${s}}`})),_e(\"\\\\surd\",\"\\\\sqrt{\\\\vphantom{|}}\"),_e(\"⊕\",\"\\\\oplus\"),_e(\"\\\\long\",\"\"),_e(\"\\\\bgroup\",\"{\"),_e(\"\\\\egroup\",\"}\"),_e(\"~\",\"\\\\nobreakspace\"),_e(\"\\\\lq\",\"`\"),_e(\"\\\\rq\",\"'\"),_e(\"\\\\aa\",\"\\\\r a\"),_e(\"\\\\Bbbk\",\"\\\\Bbb{k}\"),_e(\"\\\\mathstrut\",\"\\\\vphantom{(}\"),_e(\"\\\\underbar\",\"\\\\underline{\\\\text{#1}}\"),_e(\"\\\\vdots\",\"{\\\\varvdots\\\\rule{0pt}{15pt}}\"),_e(\"⋮\",\"\\\\vdots\"),_e(\"\\\\arraystretch\",\"1\"),_e(\"\\\\arraycolsep\",\"6pt\"),_e(\"\\\\substack\",\"\\\\begin{subarray}{c}#1\\\\end{subarray}\"),_e(\"\\\\iff\",\"\\\\DOTSB\\\\;\\\\Longleftrightarrow\\\\;\"),_e(\"\\\\implies\",\"\\\\DOTSB\\\\;\\\\Longrightarrow\\\\;\"),_e(\"\\\\impliedby\",\"\\\\DOTSB\\\\;\\\\Longleftarrow\\\\;\");const Qe={\",\":\"\\\\dotsc\",\"\\\\not\":\"\\\\dotsb\",\"+\":\"\\\\dotsb\",\"=\":\"\\\\dotsb\",\"<\":\"\\\\dotsb\",\">\":\"\\\\dotsb\",\"-\":\"\\\\dotsb\",\"*\":\"\\\\dotsb\",\":\":\"\\\\dotsb\",\"\\\\DOTSB\":\"\\\\dotsb\",\"\\\\coprod\":\"\\\\dotsb\",\"\\\\bigvee\":\"\\\\dotsb\",\"\\\\bigwedge\":\"\\\\dotsb\",\"\\\\biguplus\":\"\\\\dotsb\",\"\\\\bigcap\":\"\\\\dotsb\",\"\\\\bigcup\":\"\\\\dotsb\",\"\\\\prod\":\"\\\\dotsb\",\"\\\\sum\":\"\\\\dotsb\",\"\\\\bigotimes\":\"\\\\dotsb\",\"\\\\bigoplus\":\"\\\\dotsb\",\"\\\\bigodot\":\"\\\\dotsb\",\"\\\\bigsqcap\":\"\\\\dotsb\",\"\\\\bigsqcup\":\"\\\\dotsb\",\"\\\\bigtimes\":\"\\\\dotsb\",\"\\\\And\":\"\\\\dotsb\",\"\\\\longrightarrow\":\"\\\\dotsb\",\"\\\\Longrightarrow\":\"\\\\dotsb\",\"\\\\longleftarrow\":\"\\\\dotsb\",\"\\\\Longleftarrow\":\"\\\\dotsb\",\"\\\\longleftrightarrow\":\"\\\\dotsb\",\"\\\\Longleftrightarrow\":\"\\\\dotsb\",\"\\\\mapsto\":\"\\\\dotsb\",\"\\\\longmapsto\":\"\\\\dotsb\",\"\\\\hookrightarrow\":\"\\\\dotsb\",\"\\\\doteq\":\"\\\\dotsb\",\"\\\\mathbin\":\"\\\\dotsb\",\"\\\\mathrel\":\"\\\\dotsb\",\"\\\\relbar\":\"\\\\dotsb\",\"\\\\Relbar\":\"\\\\dotsb\",\"\\\\xrightarrow\":\"\\\\dotsb\",\"\\\\xleftarrow\":\"\\\\dotsb\",\"\\\\DOTSI\":\"\\\\dotsi\",\"\\\\int\":\"\\\\dotsi\",\"\\\\oint\":\"\\\\dotsi\",\"\\\\iint\":\"\\\\dotsi\",\"\\\\iiint\":\"\\\\dotsi\",\"\\\\iiiint\":\"\\\\dotsi\",\"\\\\idotsint\":\"\\\\dotsi\",\"\\\\DOTSX\":\"\\\\dotsx\"};_e(\"\\\\dots\",(function(e){let t=\"\\\\dotso\";const r=e.expandAfterFuture().text;return r in Qe?t=Qe[r]:(\"\\\\not\"===r.slice(0,4)||r in E.math&&[\"bin\",\"rel\"].includes(E.math[r].group))&&(t=\"\\\\dotsb\"),t}));const et={\")\":!0,\"]\":!0,\"\\\\rbrack\":!0,\"\\\\}\":!0,\"\\\\rbrace\":!0,\"\\\\rangle\":!0,\"\\\\rceil\":!0,\"\\\\rfloor\":!0,\"\\\\rgroup\":!0,\"\\\\rmoustache\":!0,\"\\\\right\":!0,\"\\\\bigr\":!0,\"\\\\biggr\":!0,\"\\\\Bigr\":!0,\"\\\\Biggr\":!0,$:!0,\";\":!0,\".\":!0,\",\":!0};_e(\"\\\\dotso\",(function(e){return e.future().text in et?\"\\\\ldots\\\\,\":\"\\\\ldots\"})),_e(\"\\\\dotsc\",(function(e){const t=e.future().text;return t in et&&\",\"!==t?\"\\\\ldots\\\\,\":\"\\\\ldots\"})),_e(\"\\\\cdots\",(function(e){return e.future().text in et?\"\\\\@cdots\\\\,\":\"\\\\@cdots\"})),_e(\"\\\\dotsb\",\"\\\\cdots\"),_e(\"\\\\dotsm\",\"\\\\cdots\"),_e(\"\\\\dotsi\",\"\\\\!\\\\cdots\"),_e(\"\\\\idotsint\",\"\\\\dotsi\"),_e(\"\\\\dotsx\",\"\\\\ldots\\\\,\"),_e(\"\\\\DOTSI\",\"\\\\relax\"),_e(\"\\\\DOTSB\",\"\\\\relax\"),_e(\"\\\\DOTSX\",\"\\\\relax\"),_e(\"\\\\tmspace\",\"\\\\TextOrMath{\\\\kern#1#3}{\\\\mskip#1#2}\\\\relax\"),_e(\"\\\\,\",\"{\\\\tmspace+{3mu}{.1667em}}\"),_e(\"\\\\thinspace\",\"\\\\,\"),_e(\"\\\\>\",\"\\\\mskip{4mu}\"),_e(\"\\\\:\",\"{\\\\tmspace+{4mu}{.2222em}}\"),_e(\"\\\\medspace\",\"\\\\:\"),_e(\"\\\\;\",\"{\\\\tmspace+{5mu}{.2777em}}\"),_e(\"\\\\thickspace\",\"\\\\;\"),_e(\"\\\\!\",\"{\\\\tmspace-{3mu}{.1667em}}\"),_e(\"\\\\negthinspace\",\"\\\\!\"),_e(\"\\\\negmedspace\",\"{\\\\tmspace-{4mu}{.2222em}}\"),_e(\"\\\\negthickspace\",\"{\\\\tmspace-{5mu}{.277em}}\"),_e(\"\\\\enspace\",\"\\\\kern.5em \"),_e(\"\\\\enskip\",\"\\\\hskip.5em\\\\relax\"),_e(\"\\\\quad\",\"\\\\hskip1em\\\\relax\"),_e(\"\\\\qquad\",\"\\\\hskip2em\\\\relax\"),_e(\"\\\\AA\",\"\\\\TextOrMath{\\\\Angstrom}{\\\\mathring{A}}\\\\relax\"),_e(\"\\\\tag\",\"\\\\@ifstar\\\\tag@literal\\\\tag@paren\"),_e(\"\\\\tag@paren\",\"\\\\tag@literal{({#1})}\"),_e(\"\\\\tag@literal\",(t=>{if(t.macros.get(\"\\\\df@tag\"))throw new e(\"Multiple \\\\tag\");return\"\\\\gdef\\\\df@tag{\\\\text{#1}}\"})),_e(\"\\\\notag\",\"\\\\nonumber\"),_e(\"\\\\nonumber\",\"\\\\gdef\\\\@eqnsw{0}\"),_e(\"\\\\bmod\",\"\\\\mathbin{\\\\text{mod}}\"),_e(\"\\\\pod\",\"\\\\allowbreak\\\\mathchoice{\\\\mkern18mu}{\\\\mkern8mu}{\\\\mkern8mu}{\\\\mkern8mu}(#1)\"),_e(\"\\\\pmod\",\"\\\\pod{{\\\\rm mod}\\\\mkern6mu#1}\"),_e(\"\\\\mod\",\"\\\\allowbreak\\\\mathchoice{\\\\mkern18mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\rm mod}\\\\,\\\\,#1\"),_e(\"\\\\newline\",\"\\\\\\\\\\\\relax\"),_e(\"\\\\TeX\",\"\\\\textrm{T}\\\\kern-.1667em\\\\raisebox{-.5ex}{E}\\\\kern-.125em\\\\textrm{X}\"),_e(\"\\\\LaTeX\",\"\\\\textrm{L}\\\\kern-.35em\\\\raisebox{0.2em}{\\\\scriptstyle A}\\\\kern-.15em\\\\TeX\"),_e(\"\\\\Temml\",\"\\\\textrm{T}\\\\kern-0.2em\\\\lower{0.2em}{\\\\textrm{E}}\\\\kern-0.08em{\\\\textrm{M}\\\\kern-0.08em\\\\raise{0.2em}\\\\textrm{M}\\\\kern-0.08em\\\\textrm{L}}\"),_e(\"\\\\hspace\",\"\\\\@ifstar\\\\@hspacer\\\\@hspace\"),_e(\"\\\\@hspace\",\"\\\\hskip #1\\\\relax\"),_e(\"\\\\@hspacer\",\"\\\\rule{0pt}{0pt}\\\\hskip #1\\\\relax\"),_e(\"\\\\colon\",'\\\\mathpunct{\\\\char\"3a}'),_e(\"\\\\prescript\",\"\\\\pres@cript{_{#1}^{#2}}{}{#3}\"),_e(\"\\\\ordinarycolon\",'\\\\char\"3a'),_e(\"\\\\vcentcolon\",\"\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}}\"),_e(\"\\\\coloneq\",'\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"2212}'),_e(\"\\\\Coloneq\",'\\\\mathrel{\\\\char\"2237\\\\char\"2212}'),_e(\"\\\\Eqqcolon\",'\\\\mathrel{\\\\char\"3d\\\\char\"2237}'),_e(\"\\\\Eqcolon\",'\\\\mathrel{\\\\char\"2212\\\\char\"2237}'),_e(\"\\\\colonapprox\",'\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"2248}'),_e(\"\\\\Colonapprox\",'\\\\mathrel{\\\\char\"2237\\\\char\"2248}'),_e(\"\\\\colonsim\",'\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"223c}'),_e(\"\\\\Colonsim\",'\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"223c}'),_e(\"\\\\ratio\",\"\\\\vcentcolon\"),_e(\"\\\\coloncolon\",\"\\\\dblcolon\"),_e(\"\\\\colonequals\",\"\\\\coloneqq\"),_e(\"\\\\coloncolonequals\",\"\\\\Coloneqq\"),_e(\"\\\\equalscolon\",\"\\\\eqqcolon\"),_e(\"\\\\equalscoloncolon\",\"\\\\Eqqcolon\"),_e(\"\\\\colonminus\",\"\\\\coloneq\"),_e(\"\\\\coloncolonminus\",\"\\\\Coloneq\"),_e(\"\\\\minuscolon\",\"\\\\eqcolon\"),_e(\"\\\\minuscoloncolon\",\"\\\\Eqcolon\"),_e(\"\\\\coloncolonapprox\",\"\\\\Colonapprox\"),_e(\"\\\\coloncolonsim\",\"\\\\Colonsim\"),_e(\"\\\\notni\",\"\\\\mathrel{\\\\char`∌}\"),_e(\"\\\\limsup\",\"\\\\DOTSB\\\\operatorname*{lim\\\\,sup}\"),_e(\"\\\\liminf\",\"\\\\DOTSB\\\\operatorname*{lim\\\\,inf}\"),_e(\"\\\\injlim\",\"\\\\DOTSB\\\\operatorname*{inj\\\\,lim}\"),_e(\"\\\\projlim\",\"\\\\DOTSB\\\\operatorname*{proj\\\\,lim}\"),_e(\"\\\\varlimsup\",\"\\\\DOTSB\\\\operatorname*{\\\\overline{\\\\text{lim}}}\"),_e(\"\\\\varliminf\",\"\\\\DOTSB\\\\operatorname*{\\\\underline{\\\\text{lim}}}\"),_e(\"\\\\varinjlim\",\"\\\\DOTSB\\\\operatorname*{\\\\underrightarrow{\\\\text{lim}}}\"),_e(\"\\\\varprojlim\",\"\\\\DOTSB\\\\operatorname*{\\\\underleftarrow{\\\\text{lim}}}\"),_e(\"\\\\centerdot\",\"{\\\\medspace\\\\rule{0.167em}{0.189em}\\\\medspace}\"),_e(\"\\\\argmin\",\"\\\\DOTSB\\\\operatorname*{arg\\\\,min}\"),_e(\"\\\\argmax\",\"\\\\DOTSB\\\\operatorname*{arg\\\\,max}\"),_e(\"\\\\plim\",\"\\\\DOTSB\\\\operatorname*{plim}\"),_e(\"\\\\leftmodels\",\"\\\\mathop{\\\\reflectbox{$\\\\models$}}\"),_e(\"\\\\bra\",\"\\\\mathinner{\\\\langle{#1}|}\"),_e(\"\\\\ket\",\"\\\\mathinner{|{#1}\\\\rangle}\"),_e(\"\\\\braket\",\"\\\\mathinner{\\\\langle{#1}\\\\rangle}\"),_e(\"\\\\Bra\",\"\\\\left\\\\langle#1\\\\right|\"),_e(\"\\\\Ket\",\"\\\\left|#1\\\\right\\\\rangle\");const tt=(e,t)=>{const r=`}\\\\,\\\\middle${\"|\"===t[0]?\"\\\\vert\":\"\\\\Vert\"}\\\\,{`;return e.slice(0,t.index)+r+e.slice(t.index+t[0].length)};_e(\"\\\\Braket\",(function(e){let t=Ke(e);const r=/\\|\\||\\||\\\\\\|/g;let n;for(;null!==(n=r.exec(t));)t=tt(t,n);return\"\\\\left\\\\langle{\"+t+\"}\\\\right\\\\rangle\"})),_e(\"\\\\Set\",(function(e){let t=Ke(e);const r=/\\|\\||\\||\\\\\\|/.exec(t);return r&&(t=tt(t,r)),\"\\\\left\\\\{\\\\:{\"+t+\"}\\\\:\\\\right\\\\}\"})),_e(\"\\\\set\",(function(e){return\"\\\\{{\"+Ke(e).replace(/\\|/,\"}\\\\mid{\")+\"}\\\\}\"})),_e(\"\\\\angln\",\"{\\\\angl n}\"),_e(\"\\\\odv\",\"\\\\@ifstar\\\\odv@next\\\\odv@numerator\"),_e(\"\\\\odv@numerator\",\"\\\\frac{\\\\mathrm{d}#1}{\\\\mathrm{d}#2}\"),_e(\"\\\\odv@next\",\"\\\\frac{\\\\mathrm{d}}{\\\\mathrm{d}#2}#1\"),_e(\"\\\\pdv\",\"\\\\@ifstar\\\\pdv@next\\\\pdv@numerator\");const rt=e=>{const t=e[0][0].text,r=Xe(e[1]).split(\",\"),n=String(r.length),s=\"1\"===n?\"\\\\partial\":`\\\\partial^${n}`;let o=\"\";return r.map((e=>{o+=\"\\\\partial \"+e.trim()+\"\\\\,\"})),[t,s,o.replace(/\\\\,$/,\"\")]};function nt(e){const t=[];e.consumeSpaces();let r=e.fetch().text;for(\"\\\\relax\"===r&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);\"\\\\hline\"===r||\"\\\\hdashline\"===r;)e.consume(),t.push(\"\\\\hdashline\"===r),e.consumeSpaces(),r=e.fetch().text;return t}_e(\"\\\\pdv@numerator\",(function(e){const[t,r,n]=rt(e.consumeArgs(2));return`\\\\frac{${r} ${t}}{${n}}`})),_e(\"\\\\pdv@next\",(function(e){const[t,r,n]=rt(e.consumeArgs(2));return`\\\\frac{${r}}{${n}} ${t}`})),_e(\"\\\\upalpha\",\"\\\\up@greek{\\\\alpha}\"),_e(\"\\\\upbeta\",\"\\\\up@greek{\\\\beta}\"),_e(\"\\\\upgamma\",\"\\\\up@greek{\\\\gamma}\"),_e(\"\\\\updelta\",\"\\\\up@greek{\\\\delta}\"),_e(\"\\\\upepsilon\",\"\\\\up@greek{\\\\epsilon}\"),_e(\"\\\\upzeta\",\"\\\\up@greek{\\\\zeta}\"),_e(\"\\\\upeta\",\"\\\\up@greek{\\\\eta}\"),_e(\"\\\\uptheta\",\"\\\\up@greek{\\\\theta}\"),_e(\"\\\\upiota\",\"\\\\up@greek{\\\\iota}\"),_e(\"\\\\upkappa\",\"\\\\up@greek{\\\\kappa}\"),_e(\"\\\\uplambda\",\"\\\\up@greek{\\\\lambda}\"),_e(\"\\\\upmu\",\"\\\\up@greek{\\\\mu}\"),_e(\"\\\\upnu\",\"\\\\up@greek{\\\\nu}\"),_e(\"\\\\upxi\",\"\\\\up@greek{\\\\xi}\"),_e(\"\\\\upomicron\",\"\\\\up@greek{\\\\omicron}\"),_e(\"\\\\uppi\",\"\\\\up@greek{\\\\pi}\"),_e(\"\\\\upalpha\",\"\\\\up@greek{\\\\alpha}\"),_e(\"\\\\uprho\",\"\\\\up@greek{\\\\rho}\"),_e(\"\\\\upsigma\",\"\\\\up@greek{\\\\sigma}\"),_e(\"\\\\uptau\",\"\\\\up@greek{\\\\tau}\"),_e(\"\\\\upupsilon\",\"\\\\up@greek{\\\\upsilon}\"),_e(\"\\\\upphi\",\"\\\\up@greek{\\\\phi}\"),_e(\"\\\\upchi\",\"\\\\up@greek{\\\\chi}\"),_e(\"\\\\uppsi\",\"\\\\up@greek{\\\\psi}\"),_e(\"\\\\upomega\",\"\\\\up@greek{\\\\omega}\"),_e(\"\\\\invamp\",'\\\\mathbin{\\\\char\"214b}'),_e(\"\\\\parr\",'\\\\mathbin{\\\\char\"214b}'),_e(\"\\\\with\",'\\\\mathbin{\\\\char\"26}'),_e(\"\\\\multimapinv\",'\\\\mathrel{\\\\char\"27dc}'),_e(\"\\\\multimapboth\",'\\\\mathrel{\\\\char\"29df}'),_e(\"\\\\scoh\",'{\\\\mkern5mu\\\\char\"2322\\\\mkern5mu}'),_e(\"\\\\sincoh\",'{\\\\mkern5mu\\\\char\"2323\\\\mkern5mu}'),_e(\"\\\\coh\",'{\\\\mkern5mu\\\\rule{}{0.7em}\\\\mathrlap{\\\\smash{\\\\raise2mu{\\\\char\"2322}}}\\n{\\\\smash{\\\\lower4mu{\\\\char\"2323}}}\\\\mkern5mu}'),_e(\"\\\\incoh\",'{\\\\mkern5mu\\\\rule{}{0.7em}\\\\mathrlap{\\\\smash{\\\\raise2mu{\\\\char\"2323}}}\\n{\\\\smash{\\\\lower4mu{\\\\char\"2322}}}\\\\mkern5mu}'),_e(\"\\\\standardstate\",\"\\\\text{\\\\tiny\\\\char`⦵}\");const st=t=>{if(!t.parser.settings.displayMode)throw new e(`{${t.envName}} can be used only in display mode.`)},ot=/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/,at=e=>{let t=e.get(\"\\\\arraystretch\");\"string\"!=typeof t&&(t=Xe(t.tokens)),t=isNaN(t)?null:Number(t);let r=e.get(\"\\\\arraycolsep\");\"string\"!=typeof r&&(r=Xe(r.tokens));const n=ot.exec(r);return[t,n?{number:+(n[1]+n[2]),unit:n[3]}:null]},lt=t=>{let r=\"\";for(let n=0;n<t.length;n++)if(\"label\"===t[n].type){if(r)throw new e(\"Multiple \\\\labels in one row\");r=t[n].string}return r};function it(e){if(-1===e.indexOf(\"ed\"))return-1===e.indexOf(\"*\")}function ct(t,{cols:r,envClasses:n,autoTag:s,singleRow:o,emptySingleRow:a,maxNumCols:l,leqno:i,arraystretch:c,arraycolsep:d},m){const p=n&&n.includes(\"bordermatrix\")?\"}\":\"\\\\end\";t.gullet.beginGroup(),o||t.gullet.macros.set(\"\\\\cr\",\"\\\\\\\\\\\\relax\"),t.gullet.beginGroup();let u=[];const h=[u],g=[],f=[],b=[],y=null!=s?[]:void 0;function w(){s&&t.gullet.macros.set(\"\\\\@eqnsw\",\"1\",!0)}function x(){y&&(t.gullet.macros.get(\"\\\\df@tag\")?(y.push(t.subparse([new je(\"\\\\df@tag\")])),t.gullet.macros.set(\"\\\\df@tag\",void 0,!0)):y.push(Boolean(s)&&\"1\"===t.gullet.macros.get(\"\\\\@eqnsw\")))}for(w(),b.push(nt(t));;){let r=t.parseExpression(!1,o?\"\\\\end\":\"\\\\\\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),r={type:\"ordgroup\",mode:t.mode,body:r,semisimple:!0},u.push(r);const s=t.fetch().text;if(\"&\"===s){if(l&&u.length===l){if(!n.includes(\"array\"))throw new e(2===l?\"The split environment accepts no more than two columns\":\"The equation environment accepts only one column\",t.nextToken);if(t.settings.strict)throw new e(\"Too few columns specified in the {array} column argument.\",t.nextToken)}t.consume()}else{if(s===p){x(),1===u.length&&0===r.body.length&&(h.length>1||!a)&&h.pop(),f.push(lt(r.body)),b.length<h.length+1&&b.push([]);break}if(\"\\\\\\\\\"!==s)throw new e(\"Expected & or \\\\\\\\ or \\\\cr or \"+p,t.nextToken);{let e;t.consume(),\" \"!==t.gullet.future().text&&(e=t.parseSizeGroup(!0)),g.push(e?e.value:null),x(),f.push(lt(r.body)),b.push(nt(t)),u=[],h.push(u),w()}}}return t.gullet.endGroup(),t.gullet.endGroup(),{type:\"array\",mode:t.mode,body:h,cols:r,rowGaps:g,hLinesBeforeRow:b,envClasses:n,autoTag:s,scriptLevel:m,tags:y,labels:f,leqno:i,arraystretch:c,arraycolsep:d}}function dt(e){return\"d\"===e.slice(0,1)?\"display\":\"text\"}const mt={c:\"center \",l:\"left \",r:\"right \"},pt=e=>{const t=new T.MathNode(\"mtd\",[]);return t.style={padding:\"0\",width:\"50%\"},e.envClasses.includes(\"multline\")&&(t.style.width=\"7.5%\"),t},ut=function(e,t){const r=[],n=e.body.length,s=e.hLinesBeforeRow;for(let o=0;o<n;o++){const a=e.body[o],l=[],i=\"text\"===e.scriptLevel?Re:\"script\"===e.scriptLevel?Ue:Pe;for(let r=0;r<a.length;r++){const s=new T.MathNode(\"mtd\",[de(a[r],t.withLevel(i))]);if(e.envClasses.includes(\"multline\")){const e=0===o?\"left\":o===n-1?\"right\":\"center\";\"center\"!==e&&s.classes.push(\"tml-\"+e)}l.push(s)}const c=e.body[0].length;for(let e=0;e<c-a.length;e++)l.push(new T.MathNode(\"mtd\",[],[],t));if(e.autoTag){const r=e.tags[o];let n;!0===r?n=new T.MathNode(\"mtext\",[new y([\"tml-eqn\"])]):!1===r?n=new T.MathNode(\"mtext\",[],[]):(n=ce(r[0].body,t.withLevel(i),!0),n=ne(n),n.classes=[\"tml-tag\"]),n&&(l.unshift(pt(e)),l.push(pt(e)),e.leqno?l[0].children.push(n):l[l.length-1].children.push(n))}const d=new T.MathNode(\"mtr\",l,[]),m=e.labels.shift();m&&e.tags&&e.tags[o]&&(d.setAttribute(\"id\",m),Array.isArray(e.tags[o])&&d.classes.push(\"tml-tageqn\")),0===o&&s[0].length>0&&(2===s[0].length?d.children.forEach((e=>{e.style.borderTop=\"0.15em double\"})):d.children.forEach((e=>{e.style.borderTop=s[0][0]?\"0.06em dashed\":\"0.06em solid\"}))),s[o+1].length>0&&(2===s[o+1].length?d.children.forEach((e=>{e.style.borderBottom=\"0.15em double\"})):d.children.forEach((e=>{e.style.borderBottom=s[o+1][0]?\"0.06em dashed\":\"0.06em solid\"})));let p=!0;for(let e=0;e<d.children.length;e++){const t=d.children[e].children[0];if(!t||\"mpadded\"!==t.type||\"0px\"!==t.attributes.height){p=!1;break}}if(p)for(let e=0;e<d.children.length;e++)d.children[e].style.display=\"block\",d.children[e].style.height=\"0\",d.children[e].style.paddingTop=\"0\",d.children[e].style.paddingBottom=\"0\";r.push(d)}if(e.arraystretch&&1!==e.arraystretch){const t=String(1.4*e.arraystretch-.8)+\"ex\";for(let e=0;e<r.length;e++)for(let n=0;n<r[e].children.length;n++)r[e].children[n].style.paddingTop=t,r[e].children[n].style.paddingBottom=t}let o,a;if(e.envClasses.length>0&&(o=e.envClasses.includes(\"abut\")||e.envClasses.includes(\"cases\")?\"0\":e.envClasses.includes(\"small\")?\"0.1389\":e.envClasses.includes(\"cd\")?\"0.25\":\"0.4\",a=\"em\"),e.arraycolsep){const r=Ae(e.arraycolsep,t);o=r.number.toFixed(4),a=r.unit}if(o){const t=0===r.length?0:r[0].children.length,n=(r,n)=>0===r&&0===n||r===t-1&&1===n?\"0\":\"align\"!==e.envClasses[0]?o:1===n?\"0\":e.autoTag?r%2?\"1\":\"0\":r%2?\"0\":\"1\";for(let e=0;e<r.length;e++)for(let t=0;t<r[e].children.length;t++)r[e].children[t].style.paddingLeft=`${n(t,0)}${a}`,r[e].children[t].style.paddingRight=`${n(t,1)}${a}`}if(0===e.envClasses.length)for(let e=0;e<r.length;e++)r[e].children[0].style.paddingLeft=\"0em\",r[e].children.length===r[0].children.length&&(r[e].children[r[e].children.length-1].style.paddingRight=\"0em\");if(e.envClasses.length>0){const t=e.envClasses.includes(\"align\")||e.envClasses.includes(\"alignat\");for(let n=0;n<r.length;n++){const s=r[n];if(t){for(let e=0;e<s.children.length;e++)s.children[e].classes=[\"tml-\"+(e%2?\"left\":\"right\")];if(e.autoTag){const t=e.leqno?0:s.children.length-1;s.children[t].classes=[]}}if(s.children.length>1&&e.envClasses.includes(\"cases\")&&(s.children[1].style.paddingLeft=\"1em\"),e.envClasses.includes(\"cases\")||e.envClasses.includes(\"subarray\"))for(const e of s.children)e.classes.push(\"tml-left\")}}let l=new T.MathNode(\"mtable\",r);if(e.envClasses.length>0&&(e.envClasses.includes(\"jot\")?l.classes.push(\"tml-jot\"):e.envClasses.includes(\"small\")&&l.classes.push(\"tml-small\")),\"display\"===e.scriptLevel&&l.setAttribute(\"displaystyle\",\"true\"),(e.autoTag||e.envClasses.includes(\"multline\"))&&(l.style.width=\"100%\"),e.cols&&e.cols.length>0){const t=e.cols;let r=!1,n=0,s=t.length;for(;\"separator\"===t[n].type;)n+=1;for(;\"separator\"===t[s-1].type;)s-=1;if(\"separator\"===t[0].type){const e=\"separator\"===t[1].type?\"0.15em double\":\"|\"===t[0].separator?\"0.06em solid \":\"0.06em dashed \";for(const t of l.children)t.children[0].style.borderLeft=e}let o=e.autoTag?0:-1;for(let e=n;e<s;e++)if(\"align\"===t[e].type){const n=mt[t[e].align];o+=1;for(const e of l.children)\"center\"!==n.trim()&&o<e.children.length&&(e.children[o].classes=[\"tml-\"+n.trim()]);r=!0}else if(\"separator\"===t[e].type){if(r){const r=\"separator\"===t[e+1].type?\"0.15em double\":\"|\"===t[e].separator?\"0.06em solid\":\"0.06em dashed\";for(const e of l.children)o<e.children.length&&(e.children[o].style.borderRight=r)}r=!1}if(\"separator\"===t[t.length-1].type){const e=\"separator\"===t[t.length-2].type?\"0.15em double\":\"|\"===t[t.length-1].separator?\"0.06em solid\":\"0.06em dashed\";for(const t of l.children)t.children[t.children.length-1].style.borderRight=e,t.children[t.children.length-1].style.paddingRight=\"0.4em\"}}return e.envClasses.includes(\"small\")&&(l=new T.MathNode(\"mstyle\",[l]),l.setAttribute(\"scriptlevel\",\"1\")),l},ht=function(t,r){-1===t.envName.indexOf(\"ed\")&&st(t);const n=\"split\"===t.envName,s=[],o=ct(t.parser,{cols:s,emptySingleRow:!0,autoTag:n?void 0:it(t.envName),envClasses:[\"abut\",\"jot\"],maxNumCols:\"split\"===t.envName?2:void 0,leqno:t.parser.settings.leqno},\"display\");let a,l=0;const i=t.envName.indexOf(\"at\")>-1;if(r[0]&&i){let t=\"\";for(let e=0;e<r[0].body.length;e++){t+=Ce(r[0].body[e],\"textord\").text}if(isNaN(t))throw new e(\"The alignat enviroment requires a numeric first argument.\");a=Number(t),l=2*a}o.body.forEach((function(t){if(i){const r=t.length/2;if(a<r)throw new e(`Too many math in a row: expected ${a}, but got ${r}`,t[0])}else l<t.length&&(l=t.length)}));for(let e=0;e<l;++e){let t=\"r\";e%2==1&&(t=\"l\"),s[e]={type:\"align\",align:t}}return\"split\"===t.envName||(i?o.envClasses.push(\"alignat\"):o.envClasses[0]=\"align\"),o};Be({type:\"array\",names:[\"array\",\"darray\"],props:{numArgs:1},handler(t,r){const n=($e(r[0])?[r[0]]:Ce(r[0],\"ordgroup\").body).map((function(t){const r=ze(t).text;if(-1!==\"lcr\".indexOf(r))return{type:\"align\",align:r};if(\"|\"===r)return{type:\"separator\",separator:\"|\"};if(\":\"===r)return{type:\"separator\",separator:\":\"};throw new e(\"Unknown column alignment: \"+r,t)})),[s,o]=at(t.parser.gullet.macros),a={cols:n,envClasses:[\"array\"],maxNumCols:n.length,arraystretch:s,arraycolsep:o};return ct(t.parser,a,dt(t.envName))},mathmlBuilder:ut}),Be({type:\"array\",names:[\"matrix\",\"pmatrix\",\"bmatrix\",\"Bmatrix\",\"vmatrix\",\"Vmatrix\",\"matrix*\",\"pmatrix*\",\"bmatrix*\",\"Bmatrix*\",\"vmatrix*\",\"Vmatrix*\"],props:{numArgs:0},handler(t){const r={matrix:null,pmatrix:[\"(\",\")\"],bmatrix:[\"[\",\"]\"],Bmatrix:[\"\\\\{\",\"\\\\}\"],vmatrix:[\"|\",\"|\"],Vmatrix:[\"\\\\Vert\",\"\\\\Vert\"]}[t.envName.replace(\"*\",\"\")];let n=\"c\";const s={envClasses:[],cols:[]};if(\"*\"===t.envName.charAt(t.envName.length-1)){const r=t.parser;if(r.consumeSpaces(),\"[\"===r.fetch().text){if(r.consume(),r.consumeSpaces(),n=r.fetch().text,-1===\"lcr\".indexOf(n))throw new e(\"Expected l or c or r\",r.nextToken);r.consume(),r.consumeSpaces(),r.expect(\"]\"),r.consume(),s.cols=[]}}const o=ct(t.parser,s,\"text\");o.cols=o.body.length>0?new Array(o.body[0].length).fill({type:\"align\",align:n}):[];const[a,l]=at(t.parser.gullet.macros);return o.arraystretch=a,!l||6===l&&\"pt\"===l||(o.arraycolsep=l),r?{type:\"leftright\",mode:t.mode,body:[o],left:r[0],right:r[1],rightColor:void 0}:o},mathmlBuilder:ut}),Be({type:\"array\",names:[\"bordermatrix\"],props:{numArgs:0},handler(e){const t=ct(e.parser,{cols:[],envClasses:[\"bordermatrix\"]},\"text\");return t.cols=t.body.length>0?new Array(t.body[0].length).fill({type:\"align\",align:\"c\"}):[],t.envClasses=[],t.arraystretch=1,\"matrix\"===e.envName?t:((e,t)=>{const r=e.body;r[0].shift();const n=new Array(r.length-1).fill().map((()=>[]));for(let e=1;e<r.length;e++){n[e-1].push(r[e].shift());const t=[];for(let n=0;n<r[e].length;n++)t.push(r[e][n]);n[e-1].push(De(t,\"vphantom\"))}const s=new Array(r.length).fill().map((()=>[]));for(let e=0;e<r[0].length;e++)s[0].push(r[0][e]);for(let e=1;e<r.length;e++)for(let t=0;t<r[0].length;t++)s[e].push(De(r[e][t].body,\"hphantom\"));for(let e=0;e<r[0].length;e++)r[0][e]=De(r[0][e].body,\"hphantom\");const o={type:\"array\",mode:\"math\",body:n,cols:[{type:\"align\",align:\"c\"}],rowGaps:new Array(n.length-1).fill(null),hLinesBeforeRow:new Array(n.length+1).fill().map((()=>[])),envClasses:[],scriptLevel:\"text\",arraystretch:1,labels:new Array(n.length).fill(\"\"),arraycolsep:{number:.04,unit:\"em\"}},a={type:\"styling\",mode:\"math\",scriptLevel:\"text\",body:[{type:\"array\",mode:\"math\",body:s,cols:new Array(s.length).fill({type:\"align\",align:\"c\"}),rowGaps:new Array(s.length-1).fill(null),hLinesBeforeRow:new Array(s.length+1).fill().map((()=>[])),envClasses:[],scriptLevel:\"text\",arraystretch:1,labels:new Array(s.length).fill(\"\"),arraycolsep:null}]},l={type:\"leftright\",mode:\"math\",body:[e],left:t?t[0]:\"(\",right:t?t[1]:\")\",rightColor:void 0};return Fe([o,{type:\"supsub\",mode:\"math\",stack:!0,base:{type:\"op\",mode:\"math\",limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!0,symbol:!1,suppressBaseShift:!0,body:[l]},sup:a,sub:null}])})(t,e.delimiters)},mathmlBuilder:ut}),Be({type:\"array\",names:[\"smallmatrix\"],props:{numArgs:0},handler(e){const t=ct(e.parser,{type:\"small\"},\"script\");return t.envClasses=[\"small\"],t},mathmlBuilder:ut}),Be({type:\"array\",names:[\"subarray\"],props:{numArgs:1},handler(t,r){const n=($e(r[0])?[r[0]]:Ce(r[0],\"ordgroup\").body).map((function(t){const r=ze(t).text;if(-1!==\"lc\".indexOf(r))return{type:\"align\",align:r};throw new e(\"Unknown column alignment: \"+r,t)}));if(n.length>1)throw new e(\"{subarray} can contain only one column\");let s={cols:n,envClasses:[\"small\"]};if(s=ct(t.parser,s,\"script\"),s.body.length>0&&s.body[0].length>1)throw new e(\"{subarray} can contain only one column\");return s},mathmlBuilder:ut}),Be({type:\"array\",names:[\"cases\",\"dcases\",\"rcases\",\"drcases\"],props:{numArgs:0},handler(e){const t=ct(e.parser,{cols:[],envClasses:[\"cases\"]},dt(e.envName));return{type:\"leftright\",mode:e.mode,body:[t],left:e.envName.indexOf(\"r\")>-1?\".\":\"\\\\{\",right:e.envName.indexOf(\"r\")>-1?\"\\\\}\":\".\",rightColor:void 0}},mathmlBuilder:ut}),Be({type:\"array\",names:[\"align\",\"align*\",\"aligned\",\"split\"],props:{numArgs:0},handler:ht,mathmlBuilder:ut}),Be({type:\"array\",names:[\"alignat\",\"alignat*\",\"alignedat\"],props:{numArgs:1},handler:ht,mathmlBuilder:ut}),Be({type:\"array\",names:[\"gathered\",\"gather\",\"gather*\"],props:{numArgs:0},handler(e){\"gathered\"!==e.envName&&st(e);const t={cols:[],envClasses:[\"abut\",\"jot\"],autoTag:it(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ct(e.parser,t,\"display\")},mathmlBuilder:ut}),Be({type:\"array\",names:[\"equation\",\"equation*\"],props:{numArgs:0},handler(e){st(e);const t={autoTag:it(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,envClasses:[\"align\"],leqno:e.parser.settings.leqno};return ct(e.parser,t,\"display\")},mathmlBuilder:ut}),Be({type:\"array\",names:[\"multline\",\"multline*\"],props:{numArgs:0},handler(e){st(e);const t={autoTag:\"multline\"===e.envName,maxNumCols:1,envClasses:[\"jot\",\"multline\"],leqno:e.parser.settings.leqno};return ct(e.parser,t,\"display\")},mathmlBuilder:ut}),Be({type:\"array\",names:[\"CD\"],props:{numArgs:0},handler:t=>(st(t),function(t){const r=[];for(t.gullet.beginGroup(),t.gullet.macros.set(\"\\\\cr\",\"\\\\\\\\\\\\relax\"),t.gullet.beginGroup();;){r.push(t.parseExpression(!1,\"\\\\\\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();const n=t.fetch().text;if(\"&\"!==n&&\"\\\\\\\\\"!==n){if(\"\\\\end\"===n){0===r[r.length-1].length&&r.pop();break}throw new e(\"Expected \\\\\\\\ or \\\\cr or \\\\end\",t.nextToken)}t.consume()}let n=[];const s=[n];for(let l=0;l<r.length;l++){const i=r[l];let c={type:\"styling\",body:[],mode:\"math\",scriptLevel:\"display\"};for(let r=0;r<i.length;r++)if(Ie(i[r])){n.push(c),r+=1;const s=ze(i[r]).text,l=new Array(2);if(l[0]={type:\"ordgroup\",mode:\"math\",body:[]},l[1]={type:\"ordgroup\",mode:\"math\",body:[]},\"=|.\".indexOf(s)>-1);else{if(!(\"<>AV\".indexOf(s)>-1))throw new e('Expected one of \"<>AV=|.\" after @.');for(let t=0;t<2;t++){let n=!0;for(let c=r+1;c<i.length;c++){if(a=s,(\"mathord\"===(o=i[c]).type||\"atom\"===o.type)&&o.text===a){n=!1,r=c;break}if(Ie(i[c]))throw new e(\"Missing a \"+s+\" character to complete a CD arrow.\",i[c]);l[t].body.push(i[c])}if(n)throw new e(\"Missing a \"+s+\" character to complete a CD arrow.\",i[r])}}const d=Le(s,l,t);n.push(d),c={type:\"styling\",body:[],mode:\"math\",scriptLevel:\"display\"}}else c.body.push(i[r]);l%2==0?n.push(c):n.shift(),n=[],s.push(n)}var o,a;return s.pop(),t.gullet.endGroup(),t.gullet.endGroup(),{type:\"array\",mode:\"math\",body:s,tags:null,labels:new Array(s.length+1).fill(\"\"),envClasses:[\"jot\",\"cd\"],cols:[],hLinesBeforeRow:new Array(s.length+1).fill([])}}(t.parser)),mathmlBuilder:ut}),c({type:\"text\",names:[\"\\\\hline\",\"\\\\hdashline\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,r){throw new e(`${t.funcName} valid only within array environment`)}});const gt=Me;c({type:\"bordermatrix\",names:[\"\\\\bordermatrix\",\"\\\\matrix\"],props:{numArgs:0,numOptionalArgs:1},handler:({parser:e,funcName:t},r,n)=>{let s=[\"(\",\")\"];if(\"\\\\bordermatrix\"===t&&n[0]&&n[0].body){const e=n[0].body;2===e.length&&\"atom\"===e[0].type&&\"atom\"===e[1].type&&\"open\"===e[0].family&&\"close\"===e[1].family&&(s=[e[0].text,e[1].text])}e.consumeSpaces(),e.consume();const o=gt.bordermatrix,a={mode:e.mode,envName:t.slice(1),delimiters:s,parser:e},l=o.handler(a);return e.expect(\"}\",!0),l}}),c({type:\"textord\",names:[\"\\\\@char\"],props:{numArgs:1,allowedInText:!0},handler({parser:t,token:r},n){const s=Ce(n[0],\"ordgroup\").body;let o=\"\";for(let e=0;e<s.length;e++){o+=Ce(s[e],\"textord\").text}const a=parseInt(o);if(isNaN(a))throw new e(`\\\\@char has non-numeric argument ${o}`,r);return{type:\"textord\",mode:t.mode,text:String.fromCodePoint(a)}}});const ft=/^(#[a-f0-9]{3}|#?[a-f0-9]{6})$/i,bt=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i,yt=/^ *\\d{1,3} *(?:, *\\d{1,3} *){2}$/,wt=/^ *[10](?:\\.\\d*)? *(?:, *[10](?:\\.\\d*)? *){2}$/,xt=/^[a-f0-9]{6}$/i,kt=e=>{let t=e.toString(16);return 1===t.length&&(t=\"0\"+t),t},vt=JSON.parse('{\\n  \"Apricot\": \"#ffb484\",\\n  \"Aquamarine\": \"#08b4bc\",\\n  \"Bittersweet\": \"#c84c14\",\\n  \"blue\": \"#0000FF\",\\n  \"Blue\": \"#303494\",\\n  \"BlueGreen\": \"#08b4bc\",\\n  \"BlueViolet\": \"#503c94\",\\n  \"BrickRed\": \"#b8341c\",\\n  \"brown\": \"#BF8040\",\\n  \"Brown\": \"#802404\",\\n  \"BurntOrange\": \"#f8941c\",\\n  \"CadetBlue\": \"#78749c\",\\n  \"CarnationPink\": \"#f884b4\",\\n  \"Cerulean\": \"#08a4e4\",\\n  \"CornflowerBlue\": \"#40ace4\",\\n  \"cyan\": \"#00FFFF\",\\n  \"Cyan\": \"#08acec\",\\n  \"Dandelion\": \"#ffbc44\",\\n  \"darkgray\": \"#404040\",\\n  \"DarkOrchid\": \"#a8548c\",\\n  \"Emerald\": \"#08ac9c\",\\n  \"ForestGreen\": \"#089c54\",\\n  \"Fuchsia\": \"#90348c\",\\n  \"Goldenrod\": \"#ffdc44\",\\n  \"gray\": \"#808080\",\\n  \"Gray\": \"#98949c\",\\n  \"green\": \"#00FF00\",\\n  \"Green\": \"#08a44c\",\\n  \"GreenYellow\": \"#e0e474\",\\n  \"JungleGreen\": \"#08ac9c\",\\n  \"Lavender\": \"#f89cc4\",\\n  \"lightgray\": \"#c0c0c0\",\\n  \"lime\": \"#BFFF00\",\\n  \"LimeGreen\": \"#90c43c\",\\n  \"magenta\": \"#FF00FF\",\\n  \"Magenta\": \"#f0048c\",\\n  \"Mahogany\": \"#b0341c\",\\n  \"Maroon\": \"#b03434\",\\n  \"Melon\": \"#f89c7c\",\\n  \"MidnightBlue\": \"#086494\",\\n  \"Mulberry\": \"#b03c94\",\\n  \"NavyBlue\": \"#086cbc\",\\n  \"olive\": \"#7F7F00\",\\n  \"OliveGreen\": \"#407c34\",\\n  \"orange\": \"#FF8000\",\\n  \"Orange\": \"#f8843c\",\\n  \"OrangeRed\": \"#f0145c\",\\n  \"Orchid\": \"#b074ac\",\\n  \"Peach\": \"#f8945c\",\\n  \"Periwinkle\": \"#8074bc\",\\n  \"PineGreen\": \"#088c74\",\\n  \"pink\": \"#ff7f7f\",\\n  \"Plum\": \"#98248c\",\\n  \"ProcessBlue\": \"#08b4ec\",\\n  \"purple\": \"#BF0040\",\\n  \"Purple\": \"#a0449c\",\\n  \"RawSienna\": \"#983c04\",\\n  \"red\": \"#ff0000\",\\n  \"Red\": \"#f01c24\",\\n  \"RedOrange\": \"#f86434\",\\n  \"RedViolet\": \"#a0246c\",\\n  \"Rhodamine\": \"#f0549c\",\\n  \"Royallue\": \"#0874bc\",\\n  \"RoyalPurple\": \"#683c9c\",\\n  \"RubineRed\": \"#f0047c\",\\n  \"Salmon\": \"#f8948c\",\\n  \"SeaGreen\": \"#30bc9c\",\\n  \"Sepia\": \"#701404\",\\n  \"SkyBlue\": \"#48c4dc\",\\n  \"SpringGreen\": \"#c8dc64\",\\n  \"Tan\": \"#e09c74\",\\n  \"teal\": \"#007F7F\",\\n  \"TealBlue\": \"#08acb4\",\\n  \"Thistle\": \"#d884b4\",\\n  \"Turquoise\": \"#08b4cc\",\\n  \"violet\": \"#800080\",\\n  \"Violet\": \"#60449c\",\\n  \"VioletRed\": \"#f054a4\",\\n  \"WildStrawberry\": \"#f0246c\",\\n  \"yellow\": \"#FFFF00\",\\n  \"Yellow\": \"#fff404\",\\n  \"YellowGreen\": \"#98cc6c\",\\n  \"YellowOrange\": \"#ffa41c\"\\n}'),At=(t,r)=>{let n=\"\";if(\"HTML\"===t){if(!ft.test(r))throw new e(\"Invalid HTML input.\");n=r}else if(\"RGB\"===t){if(!yt.test(r))throw new e(\"Invalid RGB input.\");r.split(\",\").map((e=>{n+=kt(Number(e.trim()))}))}else{if(!wt.test(r))throw new e(\"Invalid rbg input.\");r.split(\",\").map((t=>{const r=Number(t.trim());if(r>1)throw new e(\"Color rgb input must be < 1.\");n+=kt(Number((255*r).toFixed(0)))}))}return\"#\"!==n.charAt(0)&&(n=\"#\"+n),n},Nt=(t,r,n)=>{const s=`\\\\\\\\color@${t}`;if(!bt.exec(t))throw new e(\"Invalid color: '\"+t+\"'\",n);return xt.test(t)?\"#\"+t:(\"#\"===t.charAt(0)||(r.has(s)?t=r.get(s).tokens[0].text:vt[t]&&(t=vt[t])),t)},Tt=(e,t)=>{let r=ie(e.body,t.withColor(e.color));return 0===r.length&&r.push(new T.MathNode(\"mrow\")),r=r.map((t=>(t.style.color=e.color,t))),T.newDocumentFragment(r)};c({type:\"color\",names:[\"\\\\textcolor\"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:[\"raw\",\"raw\",\"original\"]},handler({parser:e,token:t},r,n){const s=n[0]&&Ce(n[0],\"raw\").string;let o=\"\";if(s){const e=Ce(r[0],\"raw\").string;o=At(s,e)}else o=Nt(Ce(r[0],\"raw\").string,e.gullet.macros,t);const a=r[1];return{type:\"color\",mode:e.mode,color:o,isTextColor:!0,body:p(a)}},mathmlBuilder:Tt}),c({type:\"color\",names:[\"\\\\color\"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0,argTypes:[\"raw\",\"raw\"]},handler({parser:e,breakOnTokenText:t,token:r},n,s){const o=s[0]&&Ce(s[0],\"raw\").string;let a=\"\";if(o){const e=Ce(n[0],\"raw\").string;a=At(o,e)}else a=Nt(Ce(n[0],\"raw\").string,e.gullet.macros,r);const l=e.parseExpression(!0,t,!0);return{type:\"color\",mode:e.mode,color:a,isTextColor:!1,body:l}},mathmlBuilder:Tt}),c({type:\"color\",names:[\"\\\\definecolor\"],props:{numArgs:3,allowedInText:!0,argTypes:[\"raw\",\"raw\",\"raw\"]},handler({parser:t,funcName:r,token:n},s){const o=Ce(s[0],\"raw\").string;if(!/^[A-Za-z]+$/.test(o))throw new e(\"Color name must be latin letters.\",n);const a=Ce(s[1],\"raw\").string;if(![\"HTML\",\"RGB\",\"rgb\"].includes(a))throw new e(\"Color model must be HTML, RGB, or rgb.\",n);const l=Ce(s[2],\"raw\").string,i=At(a,l);return t.gullet.macros.set(`\\\\\\\\color@${o}`,{tokens:[{text:i}],numArgs:0}),{type:\"internal\",mode:t.mode}}}),c({type:\"cr\",names:[\"\\\\\\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler({parser:e},t,r){const n=\"[\"===e.gullet.future().text?e.parseSizeGroup(!0):null,s=!e.settings.displayMode;return{type:\"cr\",mode:e.mode,newLine:s,size:n&&Ce(n,\"size\").value}},mathmlBuilder(e,t){const r=new T.MathNode(\"mo\");if(e.newLine&&(r.setAttribute(\"linebreak\",\"newline\"),e.size)){const n=Ae(e.size,t);r.setAttribute(\"height\",n.number+n.unit)}return r}});const St={\"\\\\global\":\"\\\\global\",\"\\\\long\":\"\\\\\\\\globallong\",\"\\\\\\\\globallong\":\"\\\\\\\\globallong\",\"\\\\def\":\"\\\\gdef\",\"\\\\gdef\":\"\\\\gdef\",\"\\\\edef\":\"\\\\xdef\",\"\\\\xdef\":\"\\\\xdef\",\"\\\\let\":\"\\\\\\\\globallet\",\"\\\\futurelet\":\"\\\\\\\\globalfuture\"},qt=t=>{const r=t.text;if(/^(?:[\\\\{}$&#^_]|EOF)$/.test(r))throw new e(\"Expected a control sequence\",t);return r},Ot=(e,t,r,n)=>{let s=e.gullet.macros.get(r.text);null==s&&(r.noexpand=!0,s={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,s,n)};c({type:\"internal\",names:[\"\\\\global\",\"\\\\long\",\"\\\\\\\\globallong\"],props:{numArgs:0,allowedInText:!0},handler({parser:t,funcName:r}){t.consumeSpaces();const n=t.fetch();if(St[n.text])return\"\\\\global\"!==r&&\"\\\\\\\\globallong\"!==r||(n.text=St[n.text]),Ce(t.parseFunction(),\"internal\");throw new e(\"Invalid token after macro prefix\",n)}}),c({type:\"internal\",names:[\"\\\\def\",\"\\\\gdef\",\"\\\\edef\",\"\\\\xdef\"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n=t.gullet.popToken();const s=n.text;if(/^(?:[\\\\{}$&#^_]|EOF)$/.test(s))throw new e(\"Expected a control sequence\",n);let o,a=0;const l=[[]];for(;\"{\"!==t.gullet.future().text;)if(n=t.gullet.popToken(),\"#\"===n.text){if(\"{\"===t.gullet.future().text){o=t.gullet.future(),l[a].push(\"{\");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new e(`Invalid argument number \"${n.text}\"`);if(parseInt(n.text)!==a+1)throw new e(`Argument number \"${n.text}\" out of order`);a++,l.push([])}else{if(\"EOF\"===n.text)throw new e(\"Expected a macro definition\");l[a].push(n.text)}let{tokens:i}=t.gullet.consumeArg();if(o&&i.unshift(o),\"\\\\edef\"===r||\"\\\\xdef\"===r){if(i=t.gullet.expandTokens(i),i.length>t.gullet.settings.maxExpand)throw new e(\"Too many expansions in an \"+r);i.reverse()}return t.gullet.macros.set(s,{tokens:i,numArgs:a,delimiters:l},r===St[r]),{type:\"internal\",mode:t.mode}}}),c({type:\"internal\",names:[\"\\\\let\",\"\\\\\\\\globallet\"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=qt(e.gullet.popToken());e.gullet.consumeSpaces();const n=(e=>{let t=e.gullet.popToken();return\"=\"===t.text&&(t=e.gullet.popToken(),\" \"===t.text&&(t=e.gullet.popToken())),t})(e);return Ot(e,r,n,\"\\\\\\\\globallet\"===t),{type:\"internal\",mode:e.mode}}}),c({type:\"internal\",names:[\"\\\\futurelet\",\"\\\\\\\\globalfuture\"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=qt(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return Ot(e,r,s,\"\\\\\\\\globalfuture\"===t),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:\"internal\",mode:e.mode}}}),c({type:\"internal\",names:[\"\\\\newcommand\",\"\\\\renewcommand\",\"\\\\providecommand\"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n=\"\";const s=t.gullet.popToken();\"{\"===s.text?(n=qt(t.gullet.popToken()),t.gullet.popToken()):n=qt(s);const o=t.gullet.isDefined(n);if(o&&\"\\\\newcommand\"===r)throw new e(`\\\\newcommand{${n}} attempting to redefine ${n}; use \\\\renewcommand`);if(!o&&\"\\\\renewcommand\"===r)throw new e(`\\\\renewcommand{${n}} when command ${n} does not yet exist; use \\\\newcommand`);let a=0;if(\"[\"===t.gullet.future().text){let r=t.gullet.popToken();if(r=t.gullet.popToken(),!/^[0-9]$/.test(r.text))throw new e(`Invalid number of arguments: \"${r.text}\"`);if(a=parseInt(r.text),r=t.gullet.popToken(),\"]\"!==r.text)throw new e(`Invalid argument \"${r.text}\"`)}const{tokens:l}=t.gullet.consumeArg();return\"\\\\providecommand\"===r&&t.gullet.macros.has(n)||t.gullet.macros.set(n,{tokens:l,numArgs:a}),{type:\"internal\",mode:t.mode}}});const Mt={\"\\\\bigl\":{mclass:\"mopen\",size:1},\"\\\\Bigl\":{mclass:\"mopen\",size:2},\"\\\\biggl\":{mclass:\"mopen\",size:3},\"\\\\Biggl\":{mclass:\"mopen\",size:4},\"\\\\bigr\":{mclass:\"mclose\",size:1},\"\\\\Bigr\":{mclass:\"mclose\",size:2},\"\\\\biggr\":{mclass:\"mclose\",size:3},\"\\\\Biggr\":{mclass:\"mclose\",size:4},\"\\\\bigm\":{mclass:\"mrel\",size:1},\"\\\\Bigm\":{mclass:\"mrel\",size:2},\"\\\\biggm\":{mclass:\"mrel\",size:3},\"\\\\Biggm\":{mclass:\"mrel\",size:4},\"\\\\big\":{mclass:\"mord\",size:1},\"\\\\Big\":{mclass:\"mord\",size:2},\"\\\\bigg\":{mclass:\"mord\",size:3},\"\\\\Bigg\":{mclass:\"mord\",size:4}},Bt=[\"(\",\"\\\\lparen\",\")\",\"\\\\rparen\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"⦇\",\"\\\\llparenthesis\",\"⦈\",\"\\\\rrparenthesis\",\"\\\\lfloor\",\"\\\\rfloor\",\"⌊\",\"⌋\",\"\\\\lceil\",\"\\\\rceil\",\"⌈\",\"⌉\",\"<\",\">\",\"\\\\langle\",\"⟨\",\"\\\\rangle\",\"⟩\",\"\\\\lAngle\",\"⟪\",\"\\\\rAngle\",\"⟫\",\"\\\\llangle\",\"⦉\",\"\\\\rrangle\",\"⦊\",\"\\\\lt\",\"\\\\gt\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"⟮\",\"⟯\",\"\\\\lmoustache\",\"\\\\rmoustache\",\"⎰\",\"⎱\",\"\\\\llbracket\",\"\\\\rrbracket\",\"⟦\",\"⟦\",\"\\\\lBrace\",\"\\\\rBrace\",\"⦃\",\"⦄\",\"/\",\"\\\\backslash\",\"|\",\"\\\\vert\",\"\\\\|\",\"\\\\Vert\",\"‖\",\"\\\\uparrow\",\"\\\\Uparrow\",\"\\\\downarrow\",\"\\\\Downarrow\",\"\\\\updownarrow\",\"\\\\Updownarrow\",\".\"],Ct=[\"}\",\"\\\\left\",\"\\\\middle\",\"\\\\right\"],zt=e=>e.length>0&&(Bt.includes(e)||Mt[e]||Ct.includes(e)),$t=[0,1.2,1.8,2.4,3];function Et(t,r){const n=$e(t);if(n&&Bt.includes(n.text))return[\"<\",\"\\\\lt\"].includes(n.text)&&(n.text=\"⟨\"),[\">\",\"\\\\gt\"].includes(n.text)&&(n.text=\"⟩\"),n;throw new e(n?`Invalid delimiter '${n.text}' after '${r.funcName}'`:`Invalid delimiter type '${t.type}'`,t)}const It=[\"/\",\"\\\\\",\"\\\\backslash\",\"\\\\vert\",\"|\"];c({type:\"delimsizing\",names:[\"\\\\bigl\",\"\\\\Bigl\",\"\\\\biggl\",\"\\\\Biggl\",\"\\\\bigr\",\"\\\\Bigr\",\"\\\\biggr\",\"\\\\Biggr\",\"\\\\bigm\",\"\\\\Bigm\",\"\\\\biggm\",\"\\\\Biggm\",\"\\\\big\",\"\\\\Big\",\"\\\\bigg\",\"\\\\Bigg\"],props:{numArgs:1,argTypes:[\"primitive\"]},handler:(e,t)=>{const r=Et(t[0],e),n={type:\"delimsizing\",mode:e.parser.mode,size:Mt[e.funcName].size,mclass:Mt[e.funcName].mclass,delim:r.text},s=e.parser.fetch().text;return\"^\"!==s&&\"_\"!==s?n:{type:\"ordgroup\",mode:\"math\",body:[n,{type:\"ordgroup\",mode:\"math\",body:[]}]}},mathmlBuilder:e=>{const t=[];\".\"===e.delim&&(e.delim=\"\"),t.push(te(e.delim,e.mode));const r=new T.MathNode(\"mo\",t);return\"mopen\"===e.mclass||\"mclose\"===e.mclass?r.setAttribute(\"fence\",\"true\"):r.setAttribute(\"fence\",\"false\"),(It.includes(e.delim)||e.delim.indexOf(\"arrow\")>-1)&&r.setAttribute(\"stretchy\",\"true\"),r.setAttribute(\"symmetric\",\"true\"),r.setAttribute(\"minsize\",$t[e.size]+\"em\"),r.setAttribute(\"maxsize\",$t[e.size]+\"em\"),r}}),c({type:\"leftright-right\",names:[\"\\\\right\"],props:{numArgs:1,argTypes:[\"primitive\"]},handler:(e,t)=>({type:\"leftright-right\",mode:e.parser.mode,delim:Et(t[0],e).text})}),c({type:\"leftright\",names:[\"\\\\left\"],props:{numArgs:1,argTypes:[\"primitive\"]},handler:(t,r)=>{const n=Et(r[0],t),s=t.parser;++s.leftrightDepth;let o=s.parseExpression(!1,null,!0),a=s.fetch();for(;\"\\\\middle\"===a.text;){s.consume();const t=s.fetch().text;if(!E.math[t])throw new e(`Invalid delimiter '${t}' after '\\\\middle'`);Et({type:\"atom\",mode:\"math\",text:t},{funcName:\"\\\\middle\"}),o.push({type:\"middle\",mode:\"math\",delim:t}),s.consume(),o=o.concat(s.parseExpression(!1,null,!0)),a=s.fetch()}--s.leftrightDepth,s.expect(\"\\\\right\",!1);const l=Ce(s.parseFunction(),\"leftright-right\");return{type:\"leftright\",mode:s.mode,body:o,left:n.text,right:l.delim}},mathmlBuilder:(e,t)=>{!function(e){if(!e.body)throw new Error(\"Bug: The leftright ParseNode wasn't fully parsed.\")}(e);const r=ie(e.body,t);\".\"===e.left&&(e.left=\"\");const n=new T.MathNode(\"mo\",[te(e.left,e.mode)]);n.setAttribute(\"fence\",\"true\"),n.setAttribute(\"form\",\"prefix\"),(\"/\"===e.left||\"\\\\\"===e.left||e.left.indexOf(\"arrow\")>-1)&&n.setAttribute(\"stretchy\",\"true\"),r.unshift(n),\".\"===e.right&&(e.right=\"\");const s=new T.MathNode(\"mo\",[te(e.right,e.mode)]);if(s.setAttribute(\"fence\",\"true\"),s.setAttribute(\"form\",\"postfix\"),(\"∖\"===e.right||e.right.indexOf(\"arrow\")>-1)&&s.setAttribute(\"stretchy\",\"true\"),e.body.length>0){const t=e.body[e.body.length-1];\"color\"!==t.type||t.isTextColor||s.setAttribute(\"mathcolor\",t.color)}return r.push(s),se(r)}}),c({type:\"middle\",names:[\"\\\\middle\"],props:{numArgs:1,argTypes:[\"primitive\"]},handler:(t,r)=>{const n=Et(r[0],t);if(!t.parser.leftrightDepth)throw new e(\"\\\\middle without preceding \\\\left\",n);return{type:\"middle\",mode:t.parser.mode,delim:n.text}},mathmlBuilder:(e,t)=>{const r=te(e.delim,e.mode),n=new T.MathNode(\"mo\",[r]);return n.setAttribute(\"fence\",\"true\"),e.delim.indexOf(\"arrow\")>-1&&n.setAttribute(\"stretchy\",\"true\"),n.setAttribute(\"form\",\"prefix\"),n.setAttribute(\"lspace\",\"0.05em\"),n.setAttribute(\"rspace\",\"0.05em\"),n}});const Lt=e=>{const t=new T.MathNode(\"mspace\");return t.setAttribute(\"width\",\"3pt\"),t},Ft=(e,t)=>{let r;switch(r=e.label.indexOf(\"colorbox\")>-1||\"\\\\boxed\"===e.label?new T.MathNode(\"mrow\",[Lt(),de(e.body,t),Lt()]):new T.MathNode(\"menclose\",[de(e.body,t)]),e.label){case\"\\\\overline\":r.setAttribute(\"notation\",\"top\"),r.classes.push(\"tml-overline\");break;case\"\\\\underline\":r.setAttribute(\"notation\",\"bottom\"),r.classes.push(\"tml-underline\");break;case\"\\\\cancel\":r.setAttribute(\"notation\",\"updiagonalstrike\"),r.children.push(new T.MathNode(\"mrow\",[],[\"tml-cancel\",\"upstrike\"]));break;case\"\\\\bcancel\":r.setAttribute(\"notation\",\"downdiagonalstrike\"),r.children.push(new T.MathNode(\"mrow\",[],[\"tml-cancel\",\"downstrike\"]));break;case\"\\\\sout\":r.setAttribute(\"notation\",\"horizontalstrike\"),r.children.push(new T.MathNode(\"mrow\",[],[\"tml-cancel\",\"sout\"]));break;case\"\\\\xcancel\":r.setAttribute(\"notation\",\"updiagonalstrike downdiagonalstrike\"),r.classes.push(\"tml-xcancel\");break;case\"\\\\longdiv\":r.setAttribute(\"notation\",\"longdiv\"),r.classes.push(\"longdiv-top\"),r.children.push(new T.MathNode(\"mrow\",[],[\"longdiv-arc\"]));break;case\"\\\\phase\":r.setAttribute(\"notation\",\"phasorangle\"),r.classes.push(\"phasor-bottom\"),r.children.push(new T.MathNode(\"mrow\",[],[\"phasor-angle\"]));break;case\"\\\\textcircled\":r.setAttribute(\"notation\",\"circle\"),r.classes.push(\"circle-pad\"),r.children.push(new T.MathNode(\"mrow\",[],[\"textcircle\"]));break;case\"\\\\angl\":r.setAttribute(\"notation\",\"actuarial\"),r.classes.push(\"actuarial\");break;case\"\\\\boxed\":r.setAttribute(\"notation\",\"box\"),r.style.padding=\"padding: 3pt 0 3pt 0\",r.style.border=\"1px solid\",r.setAttribute(\"scriptlevel\",\"0\"),r.setAttribute(\"displaystyle\",\"true\");break;case\"\\\\fbox\":r.setAttribute(\"notation\",\"box\"),r.classes.push(\"tml-fbox\");break;case\"\\\\fcolorbox\":case\"\\\\colorbox\":{const t={padding:\"3pt 0 3pt 0\"};\"\\\\fcolorbox\"===e.label&&(t.border=\"0.0667em solid \"+String(e.borderColor)),r.style=t;break}}return e.backgroundColor&&r.setAttribute(\"mathbackground\",e.backgroundColor),r};c({type:\"enclose\",names:[\"\\\\colorbox\"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:[\"raw\",\"raw\",\"text\"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ce(n[0],\"raw\").string;let o=\"\";if(s){const e=Ce(r[0],\"raw\").string;o=At(s,e)}else o=Nt(Ce(r[0],\"raw\").string,e.gullet.macros);const a=r[1];return{type:\"enclose\",mode:e.mode,label:t,backgroundColor:o,body:a}},mathmlBuilder:Ft}),c({type:\"enclose\",names:[\"\\\\fcolorbox\"],props:{numArgs:3,numOptionalArgs:1,allowedInText:!0,argTypes:[\"raw\",\"raw\",\"raw\",\"text\"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ce(n[0],\"raw\").string;let o,a=\"\";if(s){const e=Ce(r[0],\"raw\").string,t=Ce(r[0],\"raw\").string;a=At(s,e),o=At(s,t)}else a=Nt(Ce(r[0],\"raw\").string,e.gullet.macros),o=Nt(Ce(r[1],\"raw\").string,e.gullet.macros);const l=r[2];return{type:\"enclose\",mode:e.mode,label:t,backgroundColor:o,borderColor:a,body:l}},mathmlBuilder:Ft}),c({type:\"enclose\",names:[\"\\\\fbox\"],props:{numArgs:1,argTypes:[\"hbox\"],allowedInText:!0},handler:({parser:e},t)=>({type:\"enclose\",mode:e.mode,label:\"\\\\fbox\",body:t[0]})}),c({type:\"enclose\",names:[\"\\\\angl\",\"\\\\cancel\",\"\\\\bcancel\",\"\\\\xcancel\",\"\\\\sout\",\"\\\\overline\",\"\\\\boxed\",\"\\\\longdiv\",\"\\\\phase\"],props:{numArgs:1},handler({parser:e,funcName:t},r){const n=r[0];return{type:\"enclose\",mode:e.mode,label:t,body:n}},mathmlBuilder:Ft}),c({type:\"enclose\",names:[\"\\\\underline\"],props:{numArgs:1,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:\"enclose\",mode:e.mode,label:t,body:n}},mathmlBuilder:Ft}),c({type:\"enclose\",names:[\"\\\\textcircled\"],props:{numArgs:1,argTypes:[\"text\"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:\"enclose\",mode:e.mode,label:t,body:n}},mathmlBuilder:Ft}),c({type:\"environment\",names:[\"\\\\begin\",\"\\\\end\"],props:{numArgs:1,argTypes:[\"text\"]},handler({parser:t,funcName:r},n){const s=n[0];if(\"ordgroup\"!==s.type)throw new e(\"Invalid environment name\",s);let o=\"\";for(let e=0;e<s.body.length;++e)o+=Ce(s.body[e],\"textord\").text;if(\"\\\\begin\"===r){if(!Object.prototype.hasOwnProperty.call(gt,o))throw new e(\"No such environment: \"+o,s);const r=gt[o],{args:n,optArgs:a}=t.parseArguments(\"\\\\begin{\"+o+\"}\",r),l={mode:t.mode,envName:o,parser:t},i=r.handler(l,n,a);t.expect(\"\\\\end\",!1);const c=t.nextToken,d=Ce(t.parseFunction(),\"environment\");if(d.name!==o)throw new e(`Mismatch: \\\\begin{${o}} matched by \\\\end{${d.name}}`,c);return i}return{type:\"environment\",mode:t.mode,name:o,nameGroup:s}}}),c({type:\"envTag\",names:[\"\\\\env@tag\"],props:{numArgs:1,argTypes:[\"math\"]},handler:({parser:e},t)=>({type:\"envTag\",mode:e.mode,body:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode(\"mrow\")}),c({type:\"noTag\",names:[\"\\\\env@notag\"],props:{numArgs:0},handler:({parser:e})=>({type:\"noTag\",mode:e.mode}),mathmlBuilder:(e,t)=>new T.MathNode(\"mrow\")});const Dt=(e,t)=>{const r=e.font,n=t.withFont(r),s=de(e.body,n);if(0===s.children.length)return s;if(\"boldsymbol\"===r&&[\"mo\",\"mpadded\",\"mrow\"].includes(s.type))return s.style.fontWeight=\"bold\",s;if(((e,t)=>{if(\"mathrm\"!==t||\"ordgroup\"!==e.body.type||1===e.body.body.length)return!1;if(\"mathord\"!==e.body.body[0].type)return!1;for(let t=1;t<e.body.body.length;t++){const r=e.body.body[t].type;if(\"mathord\"!==r&&(\"textord\"!==r||isNaN(e.body.body[t].text)))return!1}return!0})(e,r)){const e=s.children[0].children[0].children?s.children[0].children[0]:s.children[0];delete e.attributes.mathvariant;for(let t=1;t<s.children.length;t++)e.children[0].text+=s.children[t].children[0].children?s.children[t].children[0].children[0].text:s.children[t].children[0].text;const t=new T.MathNode(\"mpadded\",[e]);return t.setAttribute(\"lspace\",\"0\"),t}let o=\"mo\"===s.children[0].type;for(let e=1;e<s.children.length;e++){\"mo\"===s.children[e].type&&\"boldsymbol\"===r&&(s.children[e].style.fontWeight=\"bold\"),\"mi\"!==s.children[e].type&&(o=!1);\"normal\"!==(s.children[e].attributes&&s.children[e].attributes.mathvariant||\"\")&&(o=!1)}if(!o)return s;const a=s.children[0];for(let e=1;e<s.children.length;e++)a.children.push(s.children[e].children[0]);if(a.attributes.mathvariant&&\"normal\"===a.attributes.mathvariant){const e=new T.MathNode(\"mtext\",new T.TextNode(\"​\"));return new T.MathNode(\"mrow\",[e,a])}return a},Gt={\"\\\\Bbb\":\"\\\\mathbb\",\"\\\\bold\":\"\\\\mathbf\",\"\\\\frak\":\"\\\\mathfrak\",\"\\\\bm\":\"\\\\boldsymbol\"};c({type:\"font\",names:[\"\\\\mathrm\",\"\\\\mathit\",\"\\\\mathbf\",\"\\\\mathnormal\",\"\\\\up@greek\",\"\\\\boldsymbol\",\"\\\\mathbb\",\"\\\\mathcal\",\"\\\\mathfrak\",\"\\\\mathscr\",\"\\\\mathsf\",\"\\\\mathsfit\",\"\\\\mathtt\",\"\\\\Bbb\",\"\\\\bm\",\"\\\\bold\",\"\\\\frak\"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=m(r[0]);let s=t;return s in Gt&&(s=Gt[s]),{type:\"font\",mode:e.mode,font:s.slice(1),body:n}},mathmlBuilder:Dt}),c({type:\"font\",names:[\"\\\\rm\",\"\\\\sf\",\"\\\\tt\",\"\\\\bf\",\"\\\\it\",\"\\\\cal\"],props:{numArgs:0,allowedInText:!0},handler:({parser:e,funcName:t,breakOnTokenText:r},n)=>{const{mode:s}=e,o=e.parseExpression(!0,r,!0);return{type:\"font\",mode:s,font:`math${t.slice(1)}`,body:{type:\"ordgroup\",mode:e.mode,body:o}}},mathmlBuilder:Dt});const jt=[\"display\",\"text\",\"script\",\"scriptscript\"],Pt={auto:-1,display:0,text:0,script:1,scriptscript:2},Rt=(e,t)=>{const r=\"auto\"===e.scriptLevel?t.incrementLevel():\"display\"===e.scriptLevel?t.withLevel(Re):\"text\"===e.scriptLevel?t.withLevel(Ue):t.withLevel(He),n=de(e.numer,r),s=de(e.denom,r);3===t.level&&(n.style.mathDepth=\"2\",n.setAttribute(\"scriptlevel\",\"2\"),s.style.mathDepth=\"2\",s.setAttribute(\"scriptlevel\",\"2\"));let o=new T.MathNode(\"mfrac\",[n,s]);if(e.hasBarLine){if(e.barSize){const r=Ae(e.barSize,t);o.setAttribute(\"linethickness\",r.number+r.unit)}}else o.setAttribute(\"linethickness\",\"0px\");if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new T.MathNode(\"mo\",[new T.TextNode(e.leftDelim.replace(\"\\\\\",\"\"))]);r.setAttribute(\"fence\",\"true\"),t.push(r)}if(t.push(o),null!=e.rightDelim){const r=new T.MathNode(\"mo\",[new T.TextNode(e.rightDelim.replace(\"\\\\\",\"\"))]);r.setAttribute(\"fence\",\"true\"),t.push(r)}o=se(t)}return\"auto\"!==e.scriptLevel&&(o=new T.MathNode(\"mstyle\",[o]),o.setAttribute(\"displaystyle\",String(\"display\"===e.scriptLevel)),o.setAttribute(\"scriptlevel\",Pt[e.scriptLevel])),o};c({type:\"genfrac\",names:[\"\\\\dfrac\",\"\\\\frac\",\"\\\\tfrac\",\"\\\\dbinom\",\"\\\\binom\",\"\\\\tbinom\",\"\\\\\\\\atopfrac\",\"\\\\\\\\bracefrac\",\"\\\\\\\\brackfrac\"],props:{numArgs:2,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];let o=!1,a=null,l=null,i=\"auto\";switch(t){case\"\\\\dfrac\":case\"\\\\frac\":case\"\\\\tfrac\":o=!0;break;case\"\\\\\\\\atopfrac\":o=!1;break;case\"\\\\dbinom\":case\"\\\\binom\":case\"\\\\tbinom\":a=\"(\",l=\")\";break;case\"\\\\\\\\bracefrac\":a=\"\\\\{\",l=\"\\\\}\";break;case\"\\\\\\\\brackfrac\":a=\"[\",l=\"]\";break;default:throw new Error(\"Unrecognized genfrac command\")}switch(t){case\"\\\\dfrac\":case\"\\\\dbinom\":i=\"display\";break;case\"\\\\tfrac\":case\"\\\\tbinom\":i=\"text\"}return{type:\"genfrac\",mode:e.mode,continued:!1,numer:n,denom:s,hasBarLine:o,leftDelim:a,rightDelim:l,scriptLevel:i,barSize:null}},mathmlBuilder:Rt}),c({type:\"genfrac\",names:[\"\\\\cfrac\"],props:{numArgs:2},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];return{type:\"genfrac\",mode:e.mode,continued:!0,numer:n,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,scriptLevel:\"display\",barSize:null}}}),c({type:\"infix\",names:[\"\\\\over\",\"\\\\choose\",\"\\\\atop\",\"\\\\brace\",\"\\\\brack\"],props:{numArgs:0,infix:!0},handler({parser:e,funcName:t,token:r}){let n;switch(t){case\"\\\\over\":n=\"\\\\frac\";break;case\"\\\\choose\":n=\"\\\\binom\";break;case\"\\\\atop\":n=\"\\\\\\\\atopfrac\";break;case\"\\\\brace\":n=\"\\\\\\\\bracefrac\";break;case\"\\\\brack\":n=\"\\\\\\\\brackfrac\";break;default:throw new Error(\"Unrecognized infix genfrac command\")}return{type:\"infix\",mode:e.mode,replaceWith:n,token:r}}});const Ut=function(e){let t=null;return e.length>0&&(t=e,t=\".\"===t?null:t),t};c({type:\"genfrac\",names:[\"\\\\genfrac\"],props:{numArgs:6,allowedInArgument:!0,argTypes:[\"math\",\"math\",\"size\",\"text\",\"math\",\"math\"]},handler({parser:e},t){const r=t[4],n=t[5],s=m(t[0]),o=\"atom\"===s.type&&\"open\"===s.family?Ut(s.text):null,a=m(t[1]),l=\"atom\"===a.type&&\"close\"===a.family?Ut(a.text):null,i=Ce(t[2],\"size\");let c,d=null;i.isBlank?c=!0:(d=i.value,c=d.number>0);let p=\"auto\",u=t[3];if(\"ordgroup\"===u.type){if(u.body.length>0){const e=Ce(u.body[0],\"textord\");p=jt[Number(e.text)]}}else u=Ce(u,\"textord\"),p=jt[Number(u.text)];return{type:\"genfrac\",mode:e.mode,numer:r,denom:n,continued:!1,hasBarLine:c,barSize:d,leftDelim:o,rightDelim:l,scriptLevel:p}},mathmlBuilder:Rt}),c({type:\"infix\",names:[\"\\\\above\"],props:{numArgs:1,argTypes:[\"size\"],infix:!0},handler:({parser:e,funcName:t,token:r},n)=>({type:\"infix\",mode:e.mode,replaceWith:\"\\\\\\\\abovefrac\",barSize:Ce(n[0],\"size\").value,token:r})}),c({type:\"genfrac\",names:[\"\\\\\\\\abovefrac\"],props:{numArgs:3,argTypes:[\"math\",\"size\",\"math\"]},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=function(e){if(!e)throw new Error(\"Expected non-null, but got \"+String(e));return e}(Ce(r[1],\"infix\").barSize),o=r[2],a=s.number>0;return{type:\"genfrac\",mode:e.mode,numer:n,denom:o,continued:!1,hasBarLine:a,barSize:s,leftDelim:null,rightDelim:null,scriptLevel:\"auto\"}},mathmlBuilder:Rt}),c({type:\"hbox\",names:[\"\\\\hbox\"],props:{numArgs:1,argTypes:[\"hbox\"],allowedInArgument:!0,allowedInText:!1},handler:({parser:e},t)=>({type:\"hbox\",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=t.withLevel(Re),n=ce(e.body,r);return ne(n)}});c({type:\"horizBrace\",names:[\"\\\\overbrace\",\"\\\\underbrace\"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:\"horizBrace\",mode:e.mode,label:t,isOver:/^\\\\over/.test(t),base:r[0]}),mathmlBuilder:(e,t)=>{const r=B(e.label);return r.style[\"math-depth\"]=0,new T.MathNode(e.isOver?\"mover\":\"munder\",[de(e.base,t),r])}}),c({type:\"html\",names:[\"\\\\class\",\"\\\\id\",\"\\\\style\",\"\\\\data\"],props:{numArgs:2,argTypes:[\"raw\",\"original\"],allowedInText:!0},handler:({parser:t,funcName:r,token:n},s)=>{const o=Ce(s[0],\"raw\").string,a=s[1];if(t.settings.strict)throw new e(`Function \"${r}\" is disabled in strict mode`,n);let l;const i={};switch(r){case\"\\\\class\":i.class=o,l={command:\"\\\\class\",class:o};break;case\"\\\\id\":i.id=o,l={command:\"\\\\id\",id:o};break;case\"\\\\style\":i.style=o,l={command:\"\\\\style\",style:o};break;case\"\\\\data\":{const t=o.split(\",\");for(let r=0;r<t.length;r++){const n=t[r].split(\"=\");if(2!==n.length)throw new e(\"Error parsing key-value for \\\\data\");i[\"data-\"+n[0].trim()]=n[1].trim()}l={command:\"\\\\data\",attributes:i};break}default:throw new Error(\"Unrecognized html command\")}if(!t.settings.isTrusted(l))throw new e(`Function \"${r}\" is not trusted`,n);return{type:\"html\",mode:t.mode,attributes:i,body:p(a)}},mathmlBuilder:(e,t)=>{const r=ce(e.body,t),n=[];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\\s+/)),r.classes=n;for(const t in e.attributes)\"class\"!==t&&Object.prototype.hasOwnProperty.call(e.attributes,t)&&r.setAttribute(t,e.attributes[t]);return r}});const Ht=function(t){if(/^[-+]? *(\\d+(\\.\\d*)?|\\.\\d+)$/.test(t))return{number:+t,unit:\"bp\"};{const r=/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(t);if(!r)throw new e(\"Invalid size: '\"+t+\"' in \\\\includegraphics\");const n={number:+(r[1]+r[2]),unit:r[3]};if(!ke(n))throw new e(\"Invalid unit: '\"+n.unit+\"' in \\\\includegraphics.\");return n}};c({type:\"includegraphics\",names:[\"\\\\includegraphics\"],props:{numArgs:1,numOptionalArgs:1,argTypes:[\"raw\",\"url\"],allowedInText:!1},handler:({parser:t,token:r},n,s)=>{let o={number:0,unit:\"em\"},a={number:.9,unit:\"em\"},l={number:0,unit:\"em\"},i=\"\";if(s[0]){const t=Ce(s[0],\"raw\").string.split(\",\");for(let r=0;r<t.length;r++){const n=t[r].split(\"=\");if(2===n.length){const t=n[1].trim();switch(n[0].trim()){case\"alt\":i=t;break;case\"width\":o=Ht(t);break;case\"height\":a=Ht(t);break;case\"totalheight\":l=Ht(t);break;default:throw new e(\"Invalid key: '\"+n[0]+\"' in \\\\includegraphics.\")}}}}const c=Ce(n[0],\"url\").url;if(\"\"===i&&(i=c,i=i.replace(/^.*[\\\\/]/,\"\"),i=i.substring(0,i.lastIndexOf(\".\"))),!t.settings.isTrusted({command:\"\\\\includegraphics\",url:c}))throw new e('Function \"\\\\includegraphics\" is not trusted',r);return{type:\"includegraphics\",mode:t.mode,alt:i,width:o,height:a,totalheight:l,src:c}},mathmlBuilder:(e,t)=>{const r=Ae(e.height,t),n={number:0,unit:\"em\"};e.totalheight.number>0&&e.totalheight.unit===r.unit&&e.totalheight.number>r.number&&(n.number=e.totalheight.number-r.number,n.unit=r.unit);let s=0;e.width.number>0&&(s=Ae(e.width,t));const o={height:r.number+n.number+\"em\"};s.number>0&&(o.width=s.number+s.unit),n.number>0&&(o.verticalAlign=-n.number+n.unit);const a=new k(e.src,e.alt,o);return a.height=r,a.depth=n,new T.MathNode(\"mtext\",[a])}}),c({type:\"kern\",names:[\"\\\\kern\",\"\\\\mkern\",\"\\\\hskip\",\"\\\\mskip\"],props:{numArgs:1,argTypes:[\"size\"],primitive:!0,allowedInText:!0},handler({parser:t,funcName:r,token:n},s){const o=Ce(s[0],\"size\");if(t.settings.strict){const s=\"m\"===r[1],a=\"mu\"===o.value.unit;if(s){if(!a)throw new e(`LaTeX's ${r} supports only mu units, not ${o.value.unit} units`,n);if(\"math\"!==t.mode)throw new e(`LaTeX's ${r} works only in math mode`,n)}else if(a)throw new e(`LaTeX's ${r} doesn't support mu units`,n)}return{type:\"kern\",mode:t.mode,dimension:o.value}},mathmlBuilder(e,t){const r=Ae(e.dimension,t),n=r.number>0&&\"em\"===r.unit?Vt(r.number):\"\";if(\"text\"===e.mode&&n.length>0){const e=new T.TextNode(n);return new T.MathNode(\"mtext\",[e])}if(r.number>=0){const e=new T.MathNode(\"mspace\");return e.setAttribute(\"width\",r.number+r.unit),e}{const e=new T.MathNode(\"mrow\");return e.style.marginLeft=r.number+r.unit,e}}});const Vt=function(e){return e>=.05555&&e<=.05556?\" \":e>=.1666&&e<=.1667?\" \":e>=.2222&&e<=.2223?\" \":e>=.2777&&e<=.2778?\"  \":\"\"},_t=/[^A-Za-z_0-9-]/g;c({type:\"label\",names:[\"\\\\label\"],props:{numArgs:1,argTypes:[\"raw\"]},handler:({parser:e},t)=>({type:\"label\",mode:e.mode,string:t[0].string.replace(_t,\"\")}),mathmlBuilder(e,t){const r=new T.MathNode(\"mrow\",[],[\"tml-label\"]);return e.string.length>0&&r.setLabel(e.string),r}});const Wt=[\"\\\\clap\",\"\\\\llap\",\"\\\\rlap\"];c({type:\"lap\",names:[\"\\\\mathllap\",\"\\\\mathrlap\",\"\\\\mathclap\",\"\\\\clap\",\"\\\\llap\",\"\\\\rlap\"],props:{numArgs:1,allowedInText:!0},handler:({parser:t,funcName:r,token:n},s)=>{if(Wt.includes(r)){if(t.settings.strict&&\"text\"!==t.mode)throw new e(`{${r}} can be used only in text mode.\\n Try \\\\math${r.slice(1)}`,n);r=r.slice(1)}else r=r.slice(5);const o=s[0];return{type:\"lap\",mode:t.mode,alignment:r,body:o}},mathmlBuilder:(e,t)=>{let r;if(\"llap\"===e.alignment){const n=ie(p(e.body),t),s=new T.MathNode(\"mphantom\",n);r=new T.MathNode(\"mpadded\",[s]),r.setAttribute(\"width\",\"0.1px\")}const n=de(e.body,t);let s;if(\"llap\"===e.alignment?(n.style.position=\"absolute\",n.style.right=\"0\",n.style.bottom=\"0\",s=new T.MathNode(\"mpadded\",[r,n])):s=new T.MathNode(\"mpadded\",[n]),\"rlap\"===e.alignment)e.body.body.length>0&&\"genfrac\"===e.body.body[0].type&&s.setAttribute(\"lspace\",\"0.16667em\");else{const t=\"llap\"===e.alignment?\"-1\":\"-0.5\";s.setAttribute(\"lspace\",t+\"width\"),\"llap\"===e.alignment?s.style.position=\"relative\":(s.style.display=\"flex\",s.style.justifyContent=\"center\")}return s.setAttribute(\"width\",\"0.1px\"),s}}),c({type:\"ordgroup\",names:[\"\\\\(\",\"$\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler({funcName:e,parser:t},r){const n=t.mode;t.switchMode(\"math\");const s=\"\\\\(\"===e?\"\\\\)\":\"$\",o=t.parseExpression(!1,s);return t.expect(s),t.switchMode(n),{type:\"ordgroup\",mode:t.mode,body:o}}}),c({type:\"text\",names:[\"\\\\)\",\"\\\\]\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,r){throw new e(`Mismatched ${t.funcName}`,r)}});c({type:\"mathchoice\",names:[\"\\\\mathchoice\"],props:{numArgs:4,primitive:!0},handler:({parser:e},t)=>({type:\"mathchoice\",mode:e.mode,display:p(t[0]),text:p(t[1]),script:p(t[2]),scriptscript:p(t[3])}),mathmlBuilder:(e,t)=>{const r=((e,t)=>{switch(t.level){case Pe:return e.display;case Re:return e.text;case Ue:return e.script;case He:return e.scriptscript;default:return e.text}})(e,t);return ce(r,t)}});const Xt=[\"text\",\"textord\",\"mathord\",\"atom\"];function Zt(e,t){let r;const n=ie(e.body,t);if(\"minner\"===e.mclass)r=new T.MathNode(\"mpadded\",n);else if(\"mord\"===e.mclass)e.isCharacterBox||\"mathord\"===n[0].type?(r=n[0],r.type=\"mi\",1===r.children.length&&r.children[0].text&&\"∇\"===r.children[0].text&&r.setAttribute(\"mathvariant\",\"normal\")):r=new T.MathNode(\"mi\",n);else{r=new T.MathNode(\"mrow\",n),e.mustPromote?(r=n[0],r.type=\"mo\",e.isCharacterBox&&e.body[0].text&&/[A-Za-z]/.test(e.body[0].text)&&r.setAttribute(\"mathvariant\",\"italic\")):r=new T.MathNode(\"mrow\",n);const s=t.level<2;\"mrow\"===r.type?s&&(\"mbin\"===e.mclass?(r.children.unshift(Ne(.2222)),r.children.push(Ne(.2222))):\"mrel\"===e.mclass?(r.children.unshift(Ne(.2778)),r.children.push(Ne(.2778))):\"mpunct\"===e.mclass?r.children.push(Ne(.1667)):\"minner\"===e.mclass&&(r.children.unshift(Ne(.0556)),r.children.push(Ne(.0556)))):\"mbin\"===e.mclass?(r.attributes.lspace=s?\"0.2222em\":\"0\",r.attributes.rspace=s?\"0.2222em\":\"0\"):\"mrel\"===e.mclass?(r.attributes.lspace=s?\"0.2778em\":\"0\",r.attributes.rspace=s?\"0.2778em\":\"0\"):\"mpunct\"===e.mclass?(r.attributes.lspace=\"0em\",r.attributes.rspace=s?\"0.1667em\":\"0\"):\"mopen\"===e.mclass||\"mclose\"===e.mclass?(r.attributes.lspace=\"0em\",r.attributes.rspace=\"0em\"):\"minner\"===e.mclass&&s&&(r.attributes.lspace=\"0.0556em\",r.attributes.width=\"+0.1111em\"),\"mopen\"!==e.mclass&&\"mclose\"!==e.mclass&&(delete r.attributes.stretchy,delete r.attributes.form)}return r}c({type:\"mclass\",names:[\"\\\\mathord\",\"\\\\mathbin\",\"\\\\mathrel\",\"\\\\mathopen\",\"\\\\mathclose\",\"\\\\mathpunct\",\"\\\\mathinner\"],props:{numArgs:1,primitive:!0},handler({parser:e,funcName:t},r){const n=r[0],s=o.isCharacterBox(n);let a=!0;const l={type:\"mathord\",text:\"\",mode:e.mode},i=n.body?n.body:[n];for(const t of i){if(!Xt.includes(t.type)){a=!1;break}E[e.mode][t.text]?l.text+=E[e.mode][t.text].replace:t.text?l.text+=t.text:t.body&&t.body.map((e=>{l.text+=e.text}))}return a&&\"\\\\mathord\"===t&&\"mathord\"===l.type&&l.text.length>1?l:{type:\"mclass\",mode:e.mode,mclass:\"m\"+t.slice(5),body:p(a?l:n),isCharacterBox:s,mustPromote:a}},mathmlBuilder:Zt});const Yt=e=>{const t=\"ordgroup\"===e.type&&e.body.length&&1===e.body.length?e.body[0]:e;return\"atom\"!==t.type||\"bin\"!==t.family&&\"rel\"!==t.family?\"mord\":\"m\"+t.family};c({type:\"mclass\",names:[\"\\\\@binrel\"],props:{numArgs:2},handler:({parser:e},t)=>({type:\"mclass\",mode:e.mode,mclass:Yt(t[0]),body:p(t[1]),isCharacterBox:o.isCharacterBox(t[1])})}),c({type:\"mclass\",names:[\"\\\\stackrel\",\"\\\\overset\",\"\\\\underset\"],props:{numArgs:2},handler({parser:e,funcName:t},r){const n=r[1],s=r[0];let o;o=\"\\\\stackrel\"!==t?Yt(n):\"mrel\";const a={type:\"mrel\"===o||\"mbin\"===o?\"op\":\"ordgroup\",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:\"\\\\stackrel\"!==t,body:p(n)};return{type:\"supsub\",mode:s.mode,stack:!0,base:a,sup:\"\\\\underset\"===t?null:s,sub:\"\\\\underset\"===t?s:null}},mathmlBuilder:Zt});const Jt=(e,t,r)=>{if(!e)return r;const n=de(e,t);return\"mrow\"===n.type&&0===n.children.length?r:n};c({type:\"multiscript\",names:[\"\\\\sideset\",\"\\\\pres@cript\"],props:{numArgs:3},handler({parser:t,funcName:r,token:n},s){if(0===s[2].body.length)throw new e(r+\"cannot parse an empty base.\");const o=s[2].body[0];if(t.settings.strict&&\"\\\\sideset\"===r&&!o.symbol)throw new e(\"The base of \\\\sideset must be a big operator. Try \\\\prescript.\");if(s[0].body.length>0&&\"supsub\"!==s[0].body[0].type||s[1].body.length>0&&\"supsub\"!==s[1].body[0].type)throw new e(\"\\\\sideset can parse only subscripts and superscripts in its first two arguments\",n);const a=s[0].body.length>0?s[0].body[0]:null,l=s[1].body.length>0?s[1].body[0]:null;return a||l?a?{type:\"multiscript\",mode:t.mode,isSideset:\"\\\\sideset\"===r,prescripts:a,postscripts:l,base:o}:{type:\"styling\",mode:t.mode,scriptLevel:\"text\",body:[{type:\"supsub\",mode:t.mode,base:o,sup:l.sup,sub:l.sub}]}:o},mathmlBuilder(e,t){const r=de(e.base,t),n=new T.MathNode(\"mprescripts\"),s=new T.MathNode(\"none\");let o=[];const a=Jt(e.prescripts.sub,t,s),l=Jt(e.prescripts.sup,t,s);if(e.isSideset&&(a.setAttribute(\"style\",\"text-align: left;\"),l.setAttribute(\"style\",\"text-align: left;\")),e.postscripts){o=[r,Jt(e.postscripts.sub,t,s),Jt(e.postscripts.sup,t,s),n,a,l]}else o=[r,n,a,l];return new T.MathNode(\"mmultiscripts\",o)}}),c({type:\"not\",names:[\"\\\\not\"],props:{numArgs:1,primitive:!0,allowedInText:!1},handler({parser:e},t){const r=o.isCharacterBox(t[0]);let n;if(r)n=p(t[0]),\"\\\\\"===n[0].text.charAt(0)&&(n[0].text=E.math[n[0].text].replace),n[0].text=n[0].text.slice(0,1)+\"̸\"+n[0].text.slice(1);else{n=[{type:\"textord\",mode:\"math\",text:\"̸\"},{type:\"kern\",mode:\"math\",dimension:{number:-.6,unit:\"em\"}},t[0]]}return{type:\"not\",mode:e.mode,body:n,isCharacterBox:r}},mathmlBuilder(e,t){if(e.isCharacterBox){return ie(e.body,t,!0)[0]}return ce(e.body,t)}});const Kt=[\"textord\",\"mathord\",\"atom\"],Qt=[\"\\\\smallint\"],er=[\"textord\",\"mathord\",\"ordgroup\",\"close\",\"leftright\",\"font\"],tr=e=>{e.attributes.lspace=\"0.1667em\",e.attributes.rspace=\"0.1667em\"},rr=(e,t)=>{let r;if(e.symbol)r=new v(\"mo\",[te(e.name,e.mode)]),Qt.includes(e.name)?r.setAttribute(\"largeop\",\"false\"):r.setAttribute(\"movablelimits\",\"false\"),e.fromMathOp&&tr(r);else if(e.body)r=new v(\"mo\",ie(e.body,t)),e.fromMathOp&&tr(r);else if(r=new v(\"mi\",[new A(e.name.slice(1))]),!e.parentIsSupSub){const t=[r,new v(\"mo\",[te(\"⁡\",\"text\")])];if(e.needsLeadingSpace){const e=new v(\"mspace\");e.setAttribute(\"width\",\"0.1667em\"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new v(\"mspace\");e.setAttribute(\"width\",\"0.1667em\"),t.push(e)}r=new v(\"mrow\",t)}return r},nr={\"∏\":\"\\\\prod\",\"∐\":\"\\\\coprod\",\"∑\":\"\\\\sum\",\"⋀\":\"\\\\bigwedge\",\"⋁\":\"\\\\bigvee\",\"⋂\":\"\\\\bigcap\",\"⋃\":\"\\\\bigcup\",\"⨀\":\"\\\\bigodot\",\"⨁\":\"\\\\bigoplus\",\"⨂\":\"\\\\bigotimes\",\"⨄\":\"\\\\biguplus\",\"⨅\":\"\\\\bigsqcap\",\"⨆\":\"\\\\bigsqcup\",\"⨃\":\"\\\\bigcupdot\",\"⨇\":\"\\\\bigdoublevee\",\"⨈\":\"\\\\bigdoublewedge\",\"⨉\":\"\\\\bigtimes\"};c({type:\"op\",names:[\"\\\\coprod\",\"\\\\bigvee\",\"\\\\bigwedge\",\"\\\\biguplus\",\"\\\\bigcupplus\",\"\\\\bigcupdot\",\"\\\\bigcap\",\"\\\\bigcup\",\"\\\\bigdoublevee\",\"\\\\bigdoublewedge\",\"\\\\intop\",\"\\\\prod\",\"\\\\sum\",\"\\\\bigotimes\",\"\\\\bigoplus\",\"\\\\bigodot\",\"\\\\bigsqcap\",\"\\\\bigsqcup\",\"\\\\bigtimes\",\"\\\\smallint\",\"∏\",\"∐\",\"∑\",\"⋀\",\"⋁\",\"⋂\",\"⋃\",\"⨀\",\"⨁\",\"⨂\",\"⨃\",\"⨄\",\"⨅\",\"⨆\",\"⨇\",\"⨈\",\"⨉\"],props:{numArgs:0},handler:({parser:e,funcName:t},r)=>{let n=t;return 1===n.length&&(n=nr[n]),{type:\"op\",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!0,stack:!1,name:n}},mathmlBuilder:rr}),c({type:\"op\",names:[\"\\\\mathop\"],props:{numArgs:1,primitive:!0},handler:({parser:e},t)=>{const r=t[0],n=r.body?r.body:[r],s=1===n.length&&Kt.includes(n[0].type);return{type:\"op\",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:s,fromMathOp:!0,stack:!1,name:s?n[0].text:null,body:s?null:p(r)}},mathmlBuilder:rr});const sr={\"∫\":\"\\\\int\",\"∬\":\"\\\\iint\",\"∭\":\"\\\\iiint\",\"∮\":\"\\\\oint\",\"∯\":\"\\\\oiint\",\"∰\":\"\\\\oiiint\",\"∱\":\"\\\\intclockwise\",\"∲\":\"\\\\varointclockwise\",\"⨌\":\"\\\\iiiint\",\"⨍\":\"\\\\intbar\",\"⨎\":\"\\\\intBar\",\"⨏\":\"\\\\fint\",\"⨒\":\"\\\\rppolint\",\"⨓\":\"\\\\scpolint\",\"⨕\":\"\\\\pointint\",\"⨖\":\"\\\\sqint\",\"⨗\":\"\\\\intlarhk\",\"⨘\":\"\\\\intx\",\"⨙\":\"\\\\intcap\",\"⨚\":\"\\\\intcup\"};c({type:\"op\",names:[\"\\\\arcsin\",\"\\\\arccos\",\"\\\\arctan\",\"\\\\arctg\",\"\\\\arcctg\",\"\\\\arg\",\"\\\\ch\",\"\\\\cos\",\"\\\\cosec\",\"\\\\cosh\",\"\\\\cot\",\"\\\\cotg\",\"\\\\coth\",\"\\\\csc\",\"\\\\ctg\",\"\\\\cth\",\"\\\\deg\",\"\\\\dim\",\"\\\\exp\",\"\\\\hom\",\"\\\\ker\",\"\\\\lg\",\"\\\\ln\",\"\\\\log\",\"\\\\sec\",\"\\\\sin\",\"\\\\sinh\",\"\\\\sh\",\"\\\\sgn\",\"\\\\tan\",\"\\\\tanh\",\"\\\\tg\",\"\\\\th\"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:\"op\",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:zt(n),needsLeadingSpace:r.length>0&&er.includes(r),name:t}},mathmlBuilder:rr}),c({type:\"op\",names:[\"\\\\det\",\"\\\\gcd\",\"\\\\inf\",\"\\\\lim\",\"\\\\max\",\"\\\\min\",\"\\\\Pr\",\"\\\\sup\"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:\"op\",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:zt(n),needsLeadingSpace:r.length>0&&er.includes(r),name:t}},mathmlBuilder:rr}),c({type:\"op\",names:[\"\\\\int\",\"\\\\iint\",\"\\\\iiint\",\"\\\\iiiint\",\"\\\\oint\",\"\\\\oiint\",\"\\\\oiiint\",\"\\\\intclockwise\",\"\\\\varointclockwise\",\"\\\\intbar\",\"\\\\intBar\",\"\\\\fint\",\"\\\\rppolint\",\"\\\\scpolint\",\"\\\\pointint\",\"\\\\sqint\",\"\\\\intlarhk\",\"\\\\intx\",\"\\\\intcap\",\"\\\\intcup\",\"∫\",\"∬\",\"∭\",\"∮\",\"∯\",\"∰\",\"∱\",\"∲\",\"⨌\",\"⨍\",\"⨎\",\"⨏\",\"⨒\",\"⨓\",\"⨕\",\"⨖\",\"⨗\",\"⨘\",\"⨙\",\"⨚\"],props:{numArgs:0},handler({parser:e,funcName:t}){let r=t;return 1===r.length&&(r=sr[r]),{type:\"op\",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,stack:!1,name:r}},mathmlBuilder:rr});c({type:\"operatorname\",names:[\"\\\\operatorname@\",\"\\\\operatornamewithlimits\"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=e.prevAtomType,o=e.gullet.future().text;return{type:\"operatorname\",mode:e.mode,body:p(n),alwaysHandleSupSub:\"\\\\operatornamewithlimits\"===t,limits:!1,parentIsSupSub:!1,isFollowedByDelimiter:zt(o),needsLeadingSpace:s.length>0&&er.includes(s)}},mathmlBuilder:(e,t)=>{let r,n=ie(e.body,t.withFont(\"mathrm\")),s=!0;for(let e=0;e<n.length;e++){let t=n[e];if(t instanceof T.MathNode)switch((\"mrow\"===t.type||\"mpadded\"===t.type)&&1===t.children.length&&t.children[0]instanceof T.MathNode&&(t=t.children[0]),t.type){case\"mi\":case\"mn\":case\"ms\":case\"mtext\":break;case\"mspace\":if(t.attributes.width){const r=t.attributes.width.replace(\"em\",\"\"),o=Vt(Number(r));\"\"===o?s=!1:n[e]=new T.MathNode(\"mtext\",[new T.TextNode(o)])}break;case\"mo\":{const e=t.children[0];1===t.children.length&&e instanceof T.TextNode?e.text=e.text.replace(/\\u2212/,\"-\").replace(/\\u2217/,\"*\"):s=!1;break}default:s=!1}else s=!1}if(s){const e=n.map((e=>e.toText())).join(\"\");n=[new T.TextNode(e)]}else if(1===n.length&&[\"mover\",\"munder\"].includes(n[0].type)&&(\"mi\"===n[0].children[0].type||\"mtext\"===n[0].children[0].type)){if(n[0].children[0].type=\"mi\",e.parentIsSupSub)return new T.MathNode(\"mrow\",n);{const e=new T.MathNode(\"mo\",[te(\"⁡\",\"text\")]);return T.newDocumentFragment([n[0],e])}}if(s?(r=new T.MathNode(\"mi\",n),1===n[0].text.length&&r.setAttribute(\"mathvariant\",\"normal\")):r=new T.MathNode(\"mrow\",n),!e.parentIsSupSub){const t=[r,new T.MathNode(\"mo\",[te(\"⁡\",\"text\")])];if(e.needsLeadingSpace){const e=new T.MathNode(\"mspace\");e.setAttribute(\"width\",\"0.1667em\"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new T.MathNode(\"mspace\");e.setAttribute(\"width\",\"0.1667em\"),t.push(e)}return T.newDocumentFragment(t)}return r}}),_e(\"\\\\operatorname\",\"\\\\@ifstar\\\\operatornamewithlimits\\\\operatorname@\"),d({type:\"ordgroup\",mathmlBuilder:(e,t)=>ce(e.body,t,e.semisimple)}),c({type:\"phantom\",names:[\"\\\\phantom\"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:\"phantom\",mode:e.mode,body:p(r)}},mathmlBuilder:(e,t)=>{const r=ie(e.body,t);return new T.MathNode(\"mphantom\",r)}}),c({type:\"hphantom\",names:[\"\\\\hphantom\"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:\"hphantom\",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode(\"mphantom\",r),s=new T.MathNode(\"mpadded\",[n]);return s.setAttribute(\"height\",\"0px\"),s.setAttribute(\"depth\",\"0px\"),s}}),c({type:\"vphantom\",names:[\"\\\\vphantom\"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:\"vphantom\",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode(\"mphantom\",r),s=new T.MathNode(\"mpadded\",[n]);return s.setAttribute(\"width\",\"0px\"),s}}),c({type:\"pmb\",names:[\"\\\\pmb\"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>({type:\"pmb\",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=ie(e.body,t),n=N(r);return n.setAttribute(\"style\",\"font-weight:bold\"),n}});const or=(e,t)=>{const r=t.withLevel(Re),n=new T.MathNode(\"mpadded\",[de(e.body,r)]),s=Ae(e.dy,t);return n.setAttribute(\"voffset\",s.number+s.unit),s.number>0?n.style.padding=s.number+s.unit+\" 0 0 0\":n.style.padding=\"0 0 \"+Math.abs(s.number)+s.unit+\" 0\",n};c({type:\"raise\",names:[\"\\\\raise\",\"\\\\lower\"],props:{numArgs:2,argTypes:[\"size\",\"primitive\"],primitive:!0},handler({parser:e,funcName:t},r){const n=Ce(r[0],\"size\").value;\"\\\\lower\"===t&&(n.number*=-1);const s=r[1];return{type:\"raise\",mode:e.mode,dy:n,body:s}},mathmlBuilder:or}),c({type:\"raise\",names:[\"\\\\raisebox\"],props:{numArgs:2,argTypes:[\"size\",\"hbox\"],allowedInText:!0},handler({parser:e,funcName:t},r){const n=Ce(r[0],\"size\").value,s=r[1];return{type:\"raise\",mode:e.mode,dy:n,body:s}},mathmlBuilder:or}),c({type:\"ref\",names:[\"\\\\ref\",\"\\\\eqref\"],props:{numArgs:1,argTypes:[\"raw\"]},handler:({parser:e,funcName:t},r)=>({type:\"ref\",mode:e.mode,funcName:t,string:r[0].string.replace(_t,\"\")}),mathmlBuilder(e,t){const r=\"\\\\ref\"===e.funcName?[\"tml-ref\"]:[\"tml-ref\",\"tml-eqref\"];return new x(\"#\"+e.string,r,null)}}),c({type:\"reflect\",names:[\"\\\\reflectbox\"],props:{numArgs:1,argTypes:[\"hbox\"],allowedInText:!0},handler:({parser:e},t)=>({type:\"reflect\",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=de(e.body,t);return r.style.transform=\"scaleX(-1)\",r}}),c({type:\"internal\",names:[\"\\\\relax\"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler:({parser:e})=>({type:\"internal\",mode:e.mode})}),c({type:\"rule\",names:[\"\\\\rule\"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:[\"size\",\"size\",\"size\"]},handler({parser:e},t,r){const n=r[0],s=Ce(t[0],\"size\"),o=Ce(t[1],\"size\");return{type:\"rule\",mode:e.mode,shift:n&&Ce(n,\"size\").value,width:s.value,height:o.value}},mathmlBuilder(e,t){const r=Ae(e.width,t),n=Ae(e.height,t),s=e.shift?Ae(e.shift,t):{number:0,unit:\"em\"},o=t.color&&t.getColor()||\"black\",a=new T.MathNode(\"mspace\");if(r.number>0&&n.number>0&&a.setAttribute(\"mathbackground\",o),a.setAttribute(\"width\",r.number+r.unit),a.setAttribute(\"height\",n.number+n.unit),0===s.number)return a;const l=new T.MathNode(\"mpadded\",[a]);return s.number>=0?l.setAttribute(\"height\",\"+\"+s.number+s.unit):(l.setAttribute(\"height\",s.number+s.unit),l.setAttribute(\"depth\",\"+\"+-s.number+s.unit)),l.setAttribute(\"voffset\",s.number+s.unit),l}});const ar=/^[0-9]$/,lr={0:\"₀\",1:\"₁\",2:\"₂\",3:\"₃\",4:\"₄\",5:\"₅\",6:\"₆\",7:\"₇\",8:\"₈\",9:\"₉\"},ir={0:\"⁰\",1:\"¹\",2:\"²\",3:\"³\",4:\"⁴\",5:\"⁵\",6:\"⁶\",7:\"⁷\",8:\"⁸\",9:\"⁹\"};c({type:\"sfrac\",names:[\"\\\\sfrac\"],props:{numArgs:2,allowedInText:!0,allowedInMath:!0},handler({parser:t},r){let n=\"\";for(const t of r[0].body){if(\"textord\"!==t.type||!ar.test(t.text))throw new e(\"Numerator must be an integer.\",t);n+=t.text}let s=\"\";for(const t of r[1].body){if(\"textord\"!==t.type||!ar.test(t.text))throw new e(\"Denominator must be an integer.\",t);s+=t.text}return{type:\"sfrac\",mode:t.mode,numerator:n,denominator:s}},mathmlBuilder(e,t){const r=e.numerator.split(\"\").map((e=>ir[e])).join(\"\"),n=e.denominator.split(\"\").map((e=>lr[e])).join(\"\"),s=new T.TextNode(r+\"⁄\"+n,e.mode,t);return new T.MathNode(\"mn\",[s],[\"special-fraction\"])}});const cr={\"\\\\tiny\":.5,\"\\\\sixptsize\":.6,\"\\\\Tiny\":.6,\"\\\\scriptsize\":.7,\"\\\\footnotesize\":.8,\"\\\\small\":.9,\"\\\\normalsize\":1,\"\\\\large\":1.2,\"\\\\Large\":1.44,\"\\\\LARGE\":1.728,\"\\\\huge\":2.074,\"\\\\Huge\":2.488};c({type:\"sizing\",names:[\"\\\\tiny\",\"\\\\sixptsize\",\"\\\\Tiny\",\"\\\\scriptsize\",\"\\\\footnotesize\",\"\\\\small\",\"\\\\normalsize\",\"\\\\large\",\"\\\\Large\",\"\\\\LARGE\",\"\\\\huge\",\"\\\\Huge\"],props:{numArgs:0,allowedInText:!0},handler:({breakOnTokenText:e,funcName:t,parser:r},n)=>{r.settings.strict&&\"math\"===r.mode&&console.log(`Temml strict-mode warning: Command ${t} is invalid in math mode.`);const s=r.parseExpression(!1,e,!0);return{type:\"sizing\",mode:r.mode,funcName:t,body:s}},mathmlBuilder:(e,t)=>{const r=t.withFontSize(cr[e.funcName]),n=ie(e.body,r),s=N(n),o=(cr[e.funcName]/t.fontSize).toFixed(4);return s.setAttribute(\"mathsize\",o+\"em\"),s}}),c({type:\"smash\",names:[\"\\\\smash\"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:({parser:e},t,r)=>{let n=!1,s=!1;const o=r[0]&&Ce(r[0],\"ordgroup\");if(o){let e=\"\";for(let t=0;t<o.body.length;++t){if(e=o.body[t].text,\"t\"===e)n=!0;else{if(\"b\"!==e){n=!1,s=!1;break}s=!0}}}else n=!0,s=!0;const a=t[0];return{type:\"smash\",mode:e.mode,body:a,smashHeight:n,smashDepth:s}},mathmlBuilder:(e,t)=>{const r=new T.MathNode(\"mpadded\",[de(e.body,t)]);return e.smashHeight&&r.setAttribute(\"height\",\"0px\"),e.smashDepth&&r.setAttribute(\"depth\",\"0px\"),r}});const dr=[\"a\",\"c\",\"e\",\"ı\",\"m\",\"n\",\"o\",\"r\",\"s\",\"u\",\"v\",\"w\",\"x\",\"z\",\"α\",\"ε\",\"ι\",\"κ\",\"ν\",\"ο\",\"π\",\"σ\",\"τ\",\"υ\",\"ω\",\"\\\\alpha\",\"\\\\epsilon\",\"\\\\iota\",\"\\\\kappa\",\"\\\\nu\",\"\\\\omega\",\"\\\\pi\",\"\\\\tau\",\"\\\\omega\"];c({type:\"sqrt\",names:[\"\\\\sqrt\"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e},t,r){const n=r[0],s=t[0];return s.body&&1===s.body.length&&s.body[0].text&&dr.includes(s.body[0].text)&&s.body.push({type:\"rule\",mode:\"math\",shift:null,width:{number:0,unit:\"pt\"},height:{number:.5,unit:\"em\"}}),{type:\"sqrt\",mode:e.mode,body:s,index:n}},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new T.MathNode(\"mroot\",[de(r,t),de(n,t.incrementLevel())]):new T.MathNode(\"msqrt\",[de(r,t)])}});const mr={display:0,text:1,script:2,scriptscript:3},pr={display:[\"0\",\"true\"],text:[\"0\",\"false\"],script:[\"1\",\"false\"],scriptscript:[\"2\",\"false\"]};c({type:\"styling\",names:[\"\\\\displaystyle\",\"\\\\textstyle\",\"\\\\scriptstyle\",\"\\\\scriptscriptstyle\"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({breakOnTokenText:e,funcName:t,parser:r},n){const s=r.parseExpression(!0,e,!0),o=t.slice(1,t.length-5);return{type:\"styling\",mode:r.mode,scriptLevel:o,body:s}},mathmlBuilder(e,t){const r=t.withLevel(mr[e.scriptLevel]),n=ie(e.body,r),s=N(n),o=pr[e.scriptLevel];return s.setAttribute(\"scriptlevel\",o[0]),s.setAttribute(\"displaystyle\",o[1]),s}});const ur=/^m(over|under|underover)$/;d({type:\"supsub\",mathmlBuilder(e,t){let r,n,s=!1,o=!1,a=!1,l=!1;e.base&&\"horizBrace\"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(s=!0,r=e.base.isOver)),!e.base||e.stack||\"op\"!==e.base.type&&\"operatorname\"!==e.base.type||(e.base.parentIsSupSub=!0,o=!e.base.symbol,a=o&&!e.isFollowedByDelimiter,l=e.base.needsLeadingSpace);const i=e.stack&&1===e.base.body.length?[de(e.base.body[0],t)]:[de(e.base,t)],c=t.inSubOrSup();if(e.sub){const r=de(e.sub,c);3===t.level&&r.setAttribute(\"scriptlevel\",\"2\"),i.push(r)}if(e.sup){const r=de(e.sup,c);if(3===t.level&&r.setAttribute(\"scriptlevel\",\"2\"),e.base&&e.base.text&&1===e.base.text.length){const t=e.base.text;\"DHKLUcegorsuvxyzΠΥΨαδηιμνοτυχϵ\".indexOf(t)>-1?r.classes.push(\"tml-sml-pad\"):\"BCEFGIMNOPQRSTXZlpqtwΓΘΞΣΦΩβεζθξρςφψϑϕϱ\".indexOf(t)>-1?r.classes.push(\"tml-med-pad\"):\"AJdfΔΛ\".indexOf(t)>-1&&r.classes.push(\"tml-lrg-pad\")}i.push(r)}let d;if(s)d=r?\"mover\":\"munder\";else if(e.sub)if(e.sup){const r=e.base;d=r&&(\"op\"===r.type&&r.limits||\"multiscript\"===r.type)&&(t.level===Pe||r.alwaysHandleSupSub)||r&&\"operatorname\"===r.type&&r.alwaysHandleSupSub&&(t.level===Pe||r.limits)?\"munderover\":\"msubsup\"}else{const r=e.base;d=e.stack||r&&\"op\"===r.type&&r.limits&&(t.level===Pe||r.alwaysHandleSupSub)||r&&\"operatorname\"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Pe)?\"munder\":\"msub\"}else{const r=e.base;d=r&&\"op\"===r.type&&r.limits&&(t.level===Pe||r.alwaysHandleSupSub)||r&&\"operatorname\"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Pe)?\"mover\":\"msup\"}let m=new T.MathNode(d,i);if(o){const e=new T.MathNode(\"mo\",[te(\"⁡\",\"text\")]);if(l){const t=new T.MathNode(\"mspace\");t.setAttribute(\"width\",\"0.1667em\"),m=T.newDocumentFragment([t,m,e])}else m=T.newDocumentFragment([m,e]);if(a){const e=new T.MathNode(\"mspace\");e.setAttribute(\"width\",\"0.1667em\"),m.children.push(e)}}else ur.test(d)&&(m=new T.MathNode(\"mrow\",[m]));return m}});const hr=[\"\\\\shortmid\",\"\\\\nshortmid\",\"\\\\shortparallel\",\"\\\\nshortparallel\",\"\\\\smallsetminus\"],gr=[\"\\\\Rsh\",\"\\\\Lsh\",\"\\\\restriction\"];d({type:\"atom\",mathmlBuilder(e,t){const r=new T.MathNode(\"mo\",[te(e.text,e.mode)]);if(\"punct\"===e.family)r.setAttribute(\"separator\",\"true\");else if(\"open\"===e.family||\"close\"===e.family)\"open\"===e.family?(r.setAttribute(\"form\",\"prefix\"),r.setAttribute(\"stretchy\",\"false\")):\"close\"===e.family&&(r.setAttribute(\"form\",\"postfix\"),r.setAttribute(\"stretchy\",\"false\"));else if(\"\\\\mid\"===e.text)r.setAttribute(\"lspace\",\"0.22em\"),r.setAttribute(\"rspace\",\"0.22em\"),r.setAttribute(\"stretchy\",\"false\");else if(\"rel\"===e.family&&(e=>{if(1===e.length){const t=e.codePointAt(0);return 8591<t&&t<8704}return e.indexOf(\"arrow\")>-1||e.indexOf(\"harpoon\")>-1||gr.includes(e)})(e.text))r.setAttribute(\"stretchy\",\"false\");else if(hr.includes(e.text))r.setAttribute(\"mathsize\",\"70%\");else if(\":\"===e.text)r.attributes.lspace=\"0.2222em\",r.attributes.rspace=\"0.2222em\";else if(e.needsSpacing)return\"bin\"===e.family?new T.MathNode(\"mrow\",[Ne(.222),r,Ne(.222)]):new T.MathNode(\"mrow\",[Ne(.2778),r,Ne(.2778)]);return r}});const fr={mathbf:\"bold\",mathrm:\"normal\",textit:\"italic\",mathit:\"italic\",mathnormal:\"italic\",mathbb:\"double-struck\",mathcal:\"script\",mathfrak:\"fraktur\",mathscr:\"script\",mathsf:\"sans-serif\",mathtt:\"monospace\"},br=function(e,t){if(\"texttt\"===t.fontFamily)return\"monospace\";if(\"textsc\"===t.fontFamily)return\"normal\";if(\"textsf\"===t.fontFamily)return\"textit\"===t.fontShape&&\"textbf\"===t.fontWeight?\"sans-serif-bold-italic\":\"textit\"===t.fontShape?\"sans-serif-italic\":\"textbf\"===t.fontWeight?\"sans-serif-bold\":\"sans-serif\";if(\"textit\"===t.fontShape&&\"textbf\"===t.fontWeight)return\"bold-italic\";if(\"textit\"===t.fontShape)return\"italic\";if(\"textbf\"===t.fontWeight)return\"bold\";const r=t.font;if(!r||\"mathnormal\"===r)return null;const n=e.mode;switch(r){case\"mathit\":case\"greekItalic\":return\"italic\";case\"mathrm\":{const t=e.text.codePointAt(0);return 939<t&&t<975?\"italic\":\"normal\"}case\"up@greek\":return\"normal\";case\"boldsymbol\":case\"mathboldsymbol\":return\"bold-italic\";case\"mathbf\":return\"bold\";case\"mathbb\":return\"double-struck\";case\"mathfrak\":return\"fraktur\";case\"mathscr\":case\"mathcal\":return\"script\";case\"mathsf\":return\"sans-serif\";case\"mathsfit\":return\"sans-serif-italic\";case\"mathtt\":return\"monospace\"}let s=e.text;return E[n][s]&&E[n][s].replace&&(s=E[n][s].replace),Object.prototype.hasOwnProperty.call(fr,r)?fr[r]:null},yr=Object.freeze({B:8426,E:8427,F:8427,H:8387,I:8391,L:8390,M:8422,R:8393,e:8394,g:8355,o:8389}),wr=Object.freeze({C:8426,H:8388,I:8392,R:8394,Z:8398}),xr=Object.freeze({C:8383,H:8389,N:8391,P:8393,Q:8393,R:8395,Z:8394}),kr=Object.freeze({\"ϵ\":119527,\"ϑ\":119564,\"ϰ\":119534,\"φ\":119577,\"ϱ\":119535,\"ϖ\":119563}),vr=Object.freeze({\"ϵ\":119643,\"ϑ\":119680,\"ϰ\":119650,\"φ\":119693,\"ϱ\":119651,\"ϖ\":119679}),Ar=Object.freeze({\"ϵ\":119701,\"ϑ\":119738,\"ϰ\":119708,\"φ\":119751,\"ϱ\":119709,\"ϖ\":119737}),Nr=Object.freeze({\"ϵ\":119759,\"ϑ\":119796,\"ϰ\":119766,\"φ\":119809,\"ϱ\":119767,\"ϖ\":119795}),Tr=Object.freeze({upperCaseLatin:{normal:e=>0,bold:e=>119743,italic:e=>119795,\"bold-italic\":e=>119847,script:e=>yr[e]||119899,\"script-bold\":e=>119951,fraktur:e=>wr[e]||120003,\"fraktur-bold\":e=>120107,\"double-struck\":e=>xr[e]||120055,\"sans-serif\":e=>120159,\"sans-serif-bold\":e=>120211,\"sans-serif-italic\":e=>120263,\"sans-serif-bold-italic\":e=>120380,monospace:e=>120367},lowerCaseLatin:{normal:e=>0,bold:e=>119737,italic:e=>\"h\"===e?8358:119789,\"bold-italic\":e=>119841,script:e=>yr[e]||119893,\"script-bold\":e=>119945,fraktur:e=>119997,\"fraktur-bold\":e=>120101,\"double-struck\":e=>120049,\"sans-serif\":e=>120153,\"sans-serif-bold\":e=>120205,\"sans-serif-italic\":e=>120257,\"sans-serif-bold-italic\":e=>120309,monospace:e=>120361},upperCaseGreek:{normal:e=>0,bold:e=>119575,italic:e=>119633,\"bold-italic\":e=>119575,script:e=>0,\"script-bold\":e=>0,fraktur:e=>0,\"fraktur-bold\":e=>0,\"double-struck\":e=>0,\"sans-serif\":e=>119749,\"sans-serif-bold\":e=>119749,\"sans-serif-italic\":e=>0,\"sans-serif-bold-italic\":e=>119807,monospace:e=>0},lowerCaseGreek:{normal:e=>0,bold:e=>119569,italic:e=>119627,\"bold-italic\":e=>\"ϕ\"===e?119678:119685,script:e=>0,\"script-bold\":e=>0,fraktur:e=>0,\"fraktur-bold\":e=>0,\"double-struck\":e=>0,\"sans-serif\":e=>119743,\"sans-serif-bold\":e=>119743,\"sans-serif-italic\":e=>0,\"sans-serif-bold-italic\":e=>119801,monospace:e=>0},varGreek:{normal:e=>0,bold:e=>kr[e]||-51,italic:e=>0,\"bold-italic\":e=>vr[e]||58,script:e=>0,\"script-bold\":e=>0,fraktur:e=>0,\"fraktur-bold\":e=>0,\"double-struck\":e=>0,\"sans-serif\":e=>Ar[e]||116,\"sans-serif-bold\":e=>Ar[e]||116,\"sans-serif-italic\":e=>0,\"sans-serif-bold-italic\":e=>Nr[e]||174,monospace:e=>0},numeral:{normal:e=>0,bold:e=>120734,italic:e=>0,\"bold-italic\":e=>0,script:e=>0,\"script-bold\":e=>0,fraktur:e=>0,\"fraktur-bold\":e=>0,\"double-struck\":e=>120744,\"sans-serif\":e=>120754,\"sans-serif-bold\":e=>120764,\"sans-serif-italic\":e=>0,\"sans-serif-bold-italic\":e=>0,monospace:e=>120774}}),Sr=(e,t)=>{const r=e.codePointAt(0),n=64<r&&r<91?\"upperCaseLatin\":96<r&&r<123?\"lowerCaseLatin\":912<r&&r<938?\"upperCaseGreek\":944<r&&r<970||\"ϕ\"===e?\"lowerCaseGreek\":120545<r&&r<120572||kr[e]?\"varGreek\":47<r&&r<58?\"numeral\":\"other\";return\"other\"===n?e:String.fromCodePoint(r+Tr[n][t](e))},qr=Object.freeze({a:\"ᴀ\",b:\"ʙ\",c:\"ᴄ\",d:\"ᴅ\",e:\"ᴇ\",f:\"ꜰ\",g:\"ɢ\",h:\"ʜ\",i:\"ɪ\",j:\"ᴊ\",k:\"ᴋ\",l:\"ʟ\",m:\"ᴍ\",n:\"ɴ\",o:\"ᴏ\",p:\"ᴘ\",q:\"ǫ\",r:\"ʀ\",s:\"s\",t:\"ᴛ\",u:\"ᴜ\",v:\"ᴠ\",w:\"ᴡ\",x:\"x\",y:\"ʏ\",z:\"ᴢ\"}),Or=/^\\d(?:[\\d,.]*\\d)?$/,Mr=/[A-Ba-z]/,Br=new Set([\"\\\\prime\",\"\\\\dprime\",\"\\\\trprime\",\"\\\\qprime\",\"\\\\backprime\",\"\\\\backdprime\",\"\\\\backtrprime\"]);d({type:\"mathord\",mathmlBuilder(e,t){const r=te(e.text,e.mode,t),n=r.text.codePointAt(0),s=912<n&&n<938?\"normal\":\"italic\",o=br(e,t)||s;if(\"script\"===o)return r.text=Sr(r.text,o),new T.MathNode(\"mi\",[r],[t.font]);\"italic\"!==o&&(r.text=Sr(r.text,o));let a=new T.MathNode(\"mi\",[r]);return\"normal\"===o&&(a.setAttribute(\"mathvariant\",\"normal\"),1===r.text.length&&(a=new T.MathNode(\"mpadded\",[a]),a.setAttribute(\"lspace\",\"0\"))),a}}),d({type:\"textord\",mathmlBuilder(e,t){let r=e.text;const n=r.codePointAt(0);\"textsc\"===t.fontFamily&&96<n&&n<123&&(r=qr[r]);const s=te(r,e.mode,t),o=br(e,t)||\"normal\";let a;if(Or.test(e.text)){const t=\"text\"===e.mode?\"mtext\":\"mn\";if(\"italic\"===o||\"bold-italic\"===o)return((e,t,r)=>{const n=new T.MathNode(r,[e]),s=new T.MathNode(\"mstyle\",[n]);return s.style[\"font-style\"]=\"italic\",s.style[\"font-family\"]=\"Cambria, 'Times New Roman', serif\",\"bold-italic\"===t&&(s.style[\"font-weight\"]=\"bold\"),s})(s,o,t);\"normal\"!==o&&(s.text=s.text.split(\"\").map((e=>Sr(e,o))).join(\"\")),a=new T.MathNode(t,[s])}else if(\"text\"===e.mode)\"normal\"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode(\"mtext\",[s]);else if(Br.has(e.text))a=new T.MathNode(\"mo\",[s]),a.classes.push(\"tml-prime\");else{const e=s.text;\"italic\"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode(\"mi\",[s]),s.text===e&&Mr.test(e)&&a.setAttribute(\"mathvariant\",\"italic\")}return a}});const Cr={\"\\\\nobreak\":\"nobreak\",\"\\\\allowbreak\":\"allowbreak\"},zr={\" \":{},\"\\\\ \":{},\"~\":{className:\"nobreak\"},\"\\\\space\":{},\"\\\\nobreakspace\":{className:\"nobreak\"}};d({type:\"spacing\",mathmlBuilder(t,r){let n;if(Object.prototype.hasOwnProperty.call(zr,t.text))n=new T.MathNode(\"mtext\",[new T.TextNode(\" \")]);else{if(!Object.prototype.hasOwnProperty.call(Cr,t.text))throw new e(`Unknown type of space \"${t.text}\"`);n=new T.MathNode(\"mo\"),\"\\\\nobreak\"===t.text&&n.setAttribute(\"linebreak\",\"nobreak\")}return n}}),d({type:\"tag\"});const $r={\"\\\\text\":void 0,\"\\\\textrm\":\"textrm\",\"\\\\textsf\":\"textsf\",\"\\\\texttt\":\"texttt\",\"\\\\textnormal\":\"textrm\",\"\\\\textsc\":\"textsc\"},Er={\"\\\\textbf\":\"textbf\",\"\\\\textmd\":\"textmd\"},Ir={\"\\\\textit\":\"textit\",\"\\\\textup\":\"textup\"};c({type:\"text\",names:[\"\\\\text\",\"\\\\textrm\",\"\\\\textsf\",\"\\\\texttt\",\"\\\\textnormal\",\"\\\\textsc\",\"\\\\textbf\",\"\\\\textmd\",\"\\\\textit\",\"\\\\textup\",\"\\\\emph\"],props:{numArgs:1,argTypes:[\"text\"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:\"text\",mode:e.mode,body:p(n),font:t}},mathmlBuilder(e,t){const r=((e,t)=>{const r=e.font;return r?$r[r]?t.withTextFontFamily($r[r]):Er[r]?t.withTextFontWeight(Er[r]):\"\\\\emph\"===r?\"textit\"===t.fontShape?t.withTextFontShape(\"textup\"):t.withTextFontShape(\"textit\"):t.withTextFontShape(Ir[r]):t})(e,t),n=ce(e.body,r);return ne(n)}}),c({type:\"vcenter\",names:[\"\\\\vcenter\"],props:{numArgs:1,argTypes:[\"original\"],allowedInText:!1},handler:({parser:e},t)=>({type:\"vcenter\",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=new T.MathNode(\"mtd\",[de(e.body,t)]);r.style.padding=\"0\";const n=new T.MathNode(\"mtr\",[r]);return new T.MathNode(\"mtable\",[n])}}),c({type:\"verb\",names:[\"\\\\verb\"],props:{numArgs:0,allowedInText:!0},handler(t,r,n){throw new e(\"\\\\verb ended by end of line instead of matching delimiter\")},mathmlBuilder(e,t){const r=new T.TextNode(Lr(e)),n=new T.MathNode(\"mtext\",[r]);return n.setAttribute(\"mathvariant\",\"monospace\"),n}});const Lr=e=>e.body.replace(/ /g,e.star?\"␣\":\" \"),Fr=l,Dr=\"[ \\r\\n\\t]\",Gr=`(\\\\\\\\[a-zA-Z@]+)${Dr}*`,jr=\"[̀-ͯ]\",Pr=new RegExp(`${jr}+$`),Rr=`(${Dr}+)|\\\\\\\\(\\n|[ \\r\\t]+\\n?)[ \\r\\t]*|([!-\\\\[\\\\]-‧‪-퟿豈-￿]${jr}*|[\\ud800-\\udbff][\\udc00-\\udfff]${jr}*|\\\\\\\\verb\\\\*([^]).*?\\\\4|\\\\\\\\verb([^*a-zA-Z]).*?\\\\5|${Gr}|\\\\\\\\[^\\ud800-\\udfff])`;class Ur{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp(Rr,\"g\"),this.catcodes={\"%\":14,\"~\":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new je(\"EOF\",new Ge(this,r,r));const n=this.tokenRegex.exec(t);if(null===n||n.index!==r)throw new e(`Unexpected character: '${t[r]}'`,new je(t[r],new Ge(this,r,r+1)));const s=n[6]||n[3]||(n[2]?\"\\\\ \":\" \");if(14===this.catcodes[s]){const r=t.indexOf(\"\\n\",this.tokenRegex.lastIndex);if(-1===r){if(this.tokenRegex.lastIndex=t.length,this.settings.strict)throw new e(\"% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode\")}else this.tokenRegex.lastIndex=r+1;return this.lex()}return new je(s,new Ge(this,r,this.tokenRegex.lastIndex))}}class Hr{constructor(e={},t={}){this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new e(\"Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug\");const t=this.undefStack.pop();for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])}has(e){return Object.prototype.hasOwnProperty.call(this.current,e)||Object.prototype.hasOwnProperty.call(this.builtins,e)}get(e){return Object.prototype.hasOwnProperty.call(this.current,e)?this.current[e]:this.builtins[e]}set(e,t,r=!1){if(r){for(let t=0;t<this.undefStack.length;t++)delete this.undefStack[t][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!Object.prototype.hasOwnProperty.call(t,e)&&(t[e]=this.current[e])}this.current[e]=t}}const Vr={\"^\":!0,_:!0,\"\\\\limits\":!0,\"\\\\nolimits\":!0};class _r{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Hr(We,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ur(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),\"[\"!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg([\"]\"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new je(\"EOF\",r.loc)),this.pushTokens(n),t.range(r,\"\")}consumeSpaces(){for(;;){if(\" \"!==this.future().text)break;this.stack.pop()}}consumeArg(t){const r=[],n=t&&t.length>0;n||this.consumeSpaces();const s=this.future();let o,a=0,l=0;do{if(o=this.popToken(),r.push(o),\"{\"===o.text)++a;else if(\"}\"===o.text){if(--a,-1===a)throw new e(\"Extra }\",o)}else if(\"EOF\"===o.text)throw new e(\"Unexpected end of input in a macro argument, expected '\"+(t&&n?t[l]:\"}\")+\"'\",o);if(t&&n)if((0===a||1===a&&\"{\"===t[l])&&o.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(0!==a||n);return\"{\"===s.text&&\"}\"===r[r.length-1].text&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:s,end:o}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new e(\"The length of delimiters doesn't match the number of args!\");const n=r[0];for(let t=0;t<n.length;t++){const r=this.popToken();if(n[t]!==r.text)throw new e(\"Use of the macro doesn't match its definition\",r)}}const n=[];for(let e=0;e<t;e++)n.push(this.consumeArg(r&&r[e+1]).tokens);return n}expandOnce(t){const r=this.popToken(),n=r.text,s=r.noexpand?null:this._getExpansion(n);if(null==s||t&&s.unexpandable){if(t&&null==s&&\"\\\\\"===n[0]&&!this.isDefined(n))throw new e(\"Undefined control sequence: \"+n);return this.pushToken(r),!1}if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new e(\"Too many expansions: infinite loop or need to increase maxExpand setting\");let o=s.tokens;const a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){o=o.slice();for(let t=o.length-1;t>=0;--t){let r=o[t];if(\"#\"===r.text){if(0===t)throw new e(\"Incomplete placeholder at end of macro body\",r);if(r=o[--t],\"#\"===r.text)o.splice(t+1,1);else{if(!/^[1-9]$/.test(r.text))throw new e(\"Not a valid argument number\",r);o.splice(t,2,...a[+r.text-1])}}}}return this.pushTokens(o),o.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text=\"\\\\relax\"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new je(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(\"\"):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r=\"function\"==typeof t?t(this):t;if(\"string\"==typeof r){let e=0;if(-1!==r.indexOf(\"#\")){const t=r.replace(/##/g,\"\");for(;-1!==t.indexOf(\"#\"+(e+1));)++e}const t=new Ur(r,this.settings),n=[];let s=t.lex();for(;\"EOF\"!==s.text;)n.push(s),s=t.lex();n.reverse();return{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||Object.prototype.hasOwnProperty.call(Fr,e)||Object.prototype.hasOwnProperty.call(E.math,e)||Object.prototype.hasOwnProperty.call(E.text,e)||Object.prototype.hasOwnProperty.call(Vr,e)}isExpandable(e){const t=this.macros.get(e);return null!=t?\"string\"==typeof t||\"function\"==typeof t||!t.unexpandable:Object.prototype.hasOwnProperty.call(Fr,e)&&!Fr[e].primitive}}const Wr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Xr=Object.freeze({\"₊\":\"+\",\"₋\":\"-\",\"₌\":\"=\",\"₍\":\"(\",\"₎\":\")\",\"₀\":\"0\",\"₁\":\"1\",\"₂\":\"2\",\"₃\":\"3\",\"₄\":\"4\",\"₅\":\"5\",\"₆\":\"6\",\"₇\":\"7\",\"₈\":\"8\",\"₉\":\"9\",\"ₐ\":\"a\",\"ₑ\":\"e\",\"ₕ\":\"h\",\"ᵢ\":\"i\",\"ⱼ\":\"j\",\"ₖ\":\"k\",\"ₗ\":\"l\",\"ₘ\":\"m\",\"ₙ\":\"n\",\"ₒ\":\"o\",\"ₚ\":\"p\",\"ᵣ\":\"r\",\"ₛ\":\"s\",\"ₜ\":\"t\",\"ᵤ\":\"u\",\"ᵥ\":\"v\",\"ₓ\":\"x\",\"ᵦ\":\"β\",\"ᵧ\":\"γ\",\"ᵨ\":\"ρ\",\"ᵩ\":\"ϕ\",\"ᵪ\":\"χ\",\"⁺\":\"+\",\"⁻\":\"-\",\"⁼\":\"=\",\"⁽\":\"(\",\"⁾\":\")\",\"⁰\":\"0\",\"¹\":\"1\",\"²\":\"2\",\"³\":\"3\",\"⁴\":\"4\",\"⁵\":\"5\",\"⁶\":\"6\",\"⁷\":\"7\",\"⁸\":\"8\",\"⁹\":\"9\",\"ᴬ\":\"A\",\"ᴮ\":\"B\",\"ᴰ\":\"D\",\"ᴱ\":\"E\",\"ᴳ\":\"G\",\"ᴴ\":\"H\",\"ᴵ\":\"I\",\"ᴶ\":\"J\",\"ᴷ\":\"K\",\"ᴸ\":\"L\",\"ᴹ\":\"M\",\"ᴺ\":\"N\",\"ᴼ\":\"O\",\"ᴾ\":\"P\",\"ᴿ\":\"R\",\"ᵀ\":\"T\",\"ᵁ\":\"U\",\"ⱽ\":\"V\",\"ᵂ\":\"W\",\"ᵃ\":\"a\",\"ᵇ\":\"b\",\"ᶜ\":\"c\",\"ᵈ\":\"d\",\"ᵉ\":\"e\",\"ᶠ\":\"f\",\"ᵍ\":\"g\",\"ʰ\":\"h\",\"ⁱ\":\"i\",\"ʲ\":\"j\",\"ᵏ\":\"k\",\"ˡ\":\"l\",\"ᵐ\":\"m\",\"ⁿ\":\"n\",\"ᵒ\":\"o\",\"ᵖ\":\"p\",\"ʳ\":\"r\",\"ˢ\":\"s\",\"ᵗ\":\"t\",\"ᵘ\":\"u\",\"ᵛ\":\"v\",\"ʷ\":\"w\",\"ˣ\":\"x\",\"ʸ\":\"y\",\"ᶻ\":\"z\",\"ᵝ\":\"β\",\"ᵞ\":\"γ\",\"ᵟ\":\"δ\",\"ᵠ\":\"ϕ\",\"ᵡ\":\"χ\",\"ᶿ\":\"θ\"}),Zr=Object.freeze({\"𝒜\":\"A\",\"ℬ\":\"B\",\"𝒞\":\"C\",\"𝒟\":\"D\",\"ℰ\":\"E\",\"ℱ\":\"F\",\"𝒢\":\"G\",\"ℋ\":\"H\",\"ℐ\":\"I\",\"𝒥\":\"J\",\"𝒦\":\"K\",\"ℒ\":\"L\",\"ℳ\":\"M\",\"𝒩\":\"N\",\"𝒪\":\"O\",\"𝒫\":\"P\",\"𝒬\":\"Q\",\"ℛ\":\"R\",\"𝒮\":\"S\",\"𝒯\":\"T\",\"𝒰\":\"U\",\"𝒱\":\"V\",\"𝒲\":\"W\",\"𝒳\":\"X\",\"𝒴\":\"Y\",\"𝒵\":\"Z\"});var Yr={\"́\":{text:\"\\\\'\",math:\"\\\\acute\"},\"̀\":{text:\"\\\\`\",math:\"\\\\grave\"},\"̈\":{text:'\\\\\"',math:\"\\\\ddot\"},\"̃\":{text:\"\\\\~\",math:\"\\\\tilde\"},\"̄\":{text:\"\\\\=\",math:\"\\\\bar\"},\"̆\":{text:\"\\\\u\",math:\"\\\\breve\"},\"̌\":{text:\"\\\\v\",math:\"\\\\check\"},\"̂\":{text:\"\\\\^\",math:\"\\\\hat\"},\"̇\":{text:\"\\\\.\",math:\"\\\\dot\"},\"̊\":{text:\"\\\\r\",math:\"\\\\mathring\"},\"̋\":{text:\"\\\\H\"},\"̧\":{text:\"\\\\c\"}},Jr={\"á\":\"á\",\"à\":\"à\",\"ä\":\"ä\",\"ǟ\":\"ǟ\",\"ã\":\"ã\",\"ā\":\"ā\",\"ă\":\"ă\",\"ắ\":\"ắ\",\"ằ\":\"ằ\",\"ẵ\":\"ẵ\",\"ǎ\":\"ǎ\",\"â\":\"â\",\"ấ\":\"ấ\",\"ầ\":\"ầ\",\"ẫ\":\"ẫ\",\"ȧ\":\"ȧ\",\"ǡ\":\"ǡ\",\"å\":\"å\",\"ǻ\":\"ǻ\",\"ḃ\":\"ḃ\",\"ć\":\"ć\",\"č\":\"č\",\"ĉ\":\"ĉ\",\"ċ\":\"ċ\",\"ď\":\"ď\",\"ḋ\":\"ḋ\",\"é\":\"é\",\"è\":\"è\",\"ë\":\"ë\",\"ẽ\":\"ẽ\",\"ē\":\"ē\",\"ḗ\":\"ḗ\",\"ḕ\":\"ḕ\",\"ĕ\":\"ĕ\",\"ě\":\"ě\",\"ê\":\"ê\",\"ế\":\"ế\",\"ề\":\"ề\",\"ễ\":\"ễ\",\"ė\":\"ė\",\"ḟ\":\"ḟ\",\"ǵ\":\"ǵ\",\"ḡ\":\"ḡ\",\"ğ\":\"ğ\",\"ǧ\":\"ǧ\",\"ĝ\":\"ĝ\",\"ġ\":\"ġ\",\"ḧ\":\"ḧ\",\"ȟ\":\"ȟ\",\"ĥ\":\"ĥ\",\"ḣ\":\"ḣ\",\"í\":\"í\",\"ì\":\"ì\",\"ï\":\"ï\",\"ḯ\":\"ḯ\",\"ĩ\":\"ĩ\",\"ī\":\"ī\",\"ĭ\":\"ĭ\",\"ǐ\":\"ǐ\",\"î\":\"î\",\"ǰ\":\"ǰ\",\"ĵ\":\"ĵ\",\"ḱ\":\"ḱ\",\"ǩ\":\"ǩ\",\"ĺ\":\"ĺ\",\"ľ\":\"ľ\",\"ḿ\":\"ḿ\",\"ṁ\":\"ṁ\",\"ń\":\"ń\",\"ǹ\":\"ǹ\",\"ñ\":\"ñ\",\"ň\":\"ň\",\"ṅ\":\"ṅ\",\"ó\":\"ó\",\"ò\":\"ò\",\"ö\":\"ö\",\"ȫ\":\"ȫ\",\"õ\":\"õ\",\"ṍ\":\"ṍ\",\"ṏ\":\"ṏ\",\"ȭ\":\"ȭ\",\"ō\":\"ō\",\"ṓ\":\"ṓ\",\"ṑ\":\"ṑ\",\"ŏ\":\"ŏ\",\"ǒ\":\"ǒ\",\"ô\":\"ô\",\"ố\":\"ố\",\"ồ\":\"ồ\",\"ỗ\":\"ỗ\",\"ȯ\":\"ȯ\",\"ȱ\":\"ȱ\",\"ő\":\"ő\",\"ṕ\":\"ṕ\",\"ṗ\":\"ṗ\",\"ŕ\":\"ŕ\",\"ř\":\"ř\",\"ṙ\":\"ṙ\",\"ś\":\"ś\",\"ṥ\":\"ṥ\",\"š\":\"š\",\"ṧ\":\"ṧ\",\"ŝ\":\"ŝ\",\"ṡ\":\"ṡ\",\"ẗ\":\"ẗ\",\"ť\":\"ť\",\"ṫ\":\"ṫ\",\"ú\":\"ú\",\"ù\":\"ù\",\"ü\":\"ü\",\"ǘ\":\"ǘ\",\"ǜ\":\"ǜ\",\"ǖ\":\"ǖ\",\"ǚ\":\"ǚ\",\"ũ\":\"ũ\",\"ṹ\":\"ṹ\",\"ū\":\"ū\",\"ṻ\":\"ṻ\",\"ŭ\":\"ŭ\",\"ǔ\":\"ǔ\",\"û\":\"û\",\"ů\":\"ů\",\"ű\":\"ű\",\"ṽ\":\"ṽ\",\"ẃ\":\"ẃ\",\"ẁ\":\"ẁ\",\"ẅ\":\"ẅ\",\"ŵ\":\"ŵ\",\"ẇ\":\"ẇ\",\"ẘ\":\"ẘ\",\"ẍ\":\"ẍ\",\"ẋ\":\"ẋ\",\"ý\":\"ý\",\"ỳ\":\"ỳ\",\"ÿ\":\"ÿ\",\"ỹ\":\"ỹ\",\"ȳ\":\"ȳ\",\"ŷ\":\"ŷ\",\"ẏ\":\"ẏ\",\"ẙ\":\"ẙ\",\"ź\":\"ź\",\"ž\":\"ž\",\"ẑ\":\"ẑ\",\"ż\":\"ż\",\"Á\":\"Á\",\"À\":\"À\",\"Ä\":\"Ä\",\"Ǟ\":\"Ǟ\",\"Ã\":\"Ã\",\"Ā\":\"Ā\",\"Ă\":\"Ă\",\"Ắ\":\"Ắ\",\"Ằ\":\"Ằ\",\"Ẵ\":\"Ẵ\",\"Ǎ\":\"Ǎ\",\"Â\":\"Â\",\"Ấ\":\"Ấ\",\"Ầ\":\"Ầ\",\"Ẫ\":\"Ẫ\",\"Ȧ\":\"Ȧ\",\"Ǡ\":\"Ǡ\",\"Å\":\"Å\",\"Ǻ\":\"Ǻ\",\"Ḃ\":\"Ḃ\",\"Ć\":\"Ć\",\"Č\":\"Č\",\"Ĉ\":\"Ĉ\",\"Ċ\":\"Ċ\",\"Ď\":\"Ď\",\"Ḋ\":\"Ḋ\",\"É\":\"É\",\"È\":\"È\",\"Ë\":\"Ë\",\"Ẽ\":\"Ẽ\",\"Ē\":\"Ē\",\"Ḗ\":\"Ḗ\",\"Ḕ\":\"Ḕ\",\"Ĕ\":\"Ĕ\",\"Ě\":\"Ě\",\"Ê\":\"Ê\",\"Ế\":\"Ế\",\"Ề\":\"Ề\",\"Ễ\":\"Ễ\",\"Ė\":\"Ė\",\"Ḟ\":\"Ḟ\",\"Ǵ\":\"Ǵ\",\"Ḡ\":\"Ḡ\",\"Ğ\":\"Ğ\",\"Ǧ\":\"Ǧ\",\"Ĝ\":\"Ĝ\",\"Ġ\":\"Ġ\",\"Ḧ\":\"Ḧ\",\"Ȟ\":\"Ȟ\",\"Ĥ\":\"Ĥ\",\"Ḣ\":\"Ḣ\",\"Í\":\"Í\",\"Ì\":\"Ì\",\"Ï\":\"Ï\",\"Ḯ\":\"Ḯ\",\"Ĩ\":\"Ĩ\",\"Ī\":\"Ī\",\"Ĭ\":\"Ĭ\",\"Ǐ\":\"Ǐ\",\"Î\":\"Î\",\"İ\":\"İ\",\"Ĵ\":\"Ĵ\",\"Ḱ\":\"Ḱ\",\"Ǩ\":\"Ǩ\",\"Ĺ\":\"Ĺ\",\"Ľ\":\"Ľ\",\"Ḿ\":\"Ḿ\",\"Ṁ\":\"Ṁ\",\"Ń\":\"Ń\",\"Ǹ\":\"Ǹ\",\"Ñ\":\"Ñ\",\"Ň\":\"Ň\",\"Ṅ\":\"Ṅ\",\"Ó\":\"Ó\",\"Ò\":\"Ò\",\"Ö\":\"Ö\",\"Ȫ\":\"Ȫ\",\"Õ\":\"Õ\",\"Ṍ\":\"Ṍ\",\"Ṏ\":\"Ṏ\",\"Ȭ\":\"Ȭ\",\"Ō\":\"Ō\",\"Ṓ\":\"Ṓ\",\"Ṑ\":\"Ṑ\",\"Ŏ\":\"Ŏ\",\"Ǒ\":\"Ǒ\",\"Ô\":\"Ô\",\"Ố\":\"Ố\",\"Ồ\":\"Ồ\",\"Ỗ\":\"Ỗ\",\"Ȯ\":\"Ȯ\",\"Ȱ\":\"Ȱ\",\"Ő\":\"Ő\",\"Ṕ\":\"Ṕ\",\"Ṗ\":\"Ṗ\",\"Ŕ\":\"Ŕ\",\"Ř\":\"Ř\",\"Ṙ\":\"Ṙ\",\"Ś\":\"Ś\",\"Ṥ\":\"Ṥ\",\"Š\":\"Š\",\"Ṧ\":\"Ṧ\",\"Ŝ\":\"Ŝ\",\"Ṡ\":\"Ṡ\",\"Ť\":\"Ť\",\"Ṫ\":\"Ṫ\",\"Ú\":\"Ú\",\"Ù\":\"Ù\",\"Ü\":\"Ü\",\"Ǘ\":\"Ǘ\",\"Ǜ\":\"Ǜ\",\"Ǖ\":\"Ǖ\",\"Ǚ\":\"Ǚ\",\"Ũ\":\"Ũ\",\"Ṹ\":\"Ṹ\",\"Ū\":\"Ū\",\"Ṻ\":\"Ṻ\",\"Ŭ\":\"Ŭ\",\"Ǔ\":\"Ǔ\",\"Û\":\"Û\",\"Ů\":\"Ů\",\"Ű\":\"Ű\",\"Ṽ\":\"Ṽ\",\"Ẃ\":\"Ẃ\",\"Ẁ\":\"Ẁ\",\"Ẅ\":\"Ẅ\",\"Ŵ\":\"Ŵ\",\"Ẇ\":\"Ẇ\",\"Ẍ\":\"Ẍ\",\"Ẋ\":\"Ẋ\",\"Ý\":\"Ý\",\"Ỳ\":\"Ỳ\",\"Ÿ\":\"Ÿ\",\"Ỹ\":\"Ỹ\",\"Ȳ\":\"Ȳ\",\"Ŷ\":\"Ŷ\",\"Ẏ\":\"Ẏ\",\"Ź\":\"Ź\",\"Ž\":\"Ž\",\"Ẑ\":\"Ẑ\",\"Ż\":\"Ż\",\"ά\":\"ά\",\"ὰ\":\"ὰ\",\"ᾱ\":\"ᾱ\",\"ᾰ\":\"ᾰ\",\"έ\":\"έ\",\"ὲ\":\"ὲ\",\"ή\":\"ή\",\"ὴ\":\"ὴ\",\"ί\":\"ί\",\"ὶ\":\"ὶ\",\"ϊ\":\"ϊ\",\"ΐ\":\"ΐ\",\"ῒ\":\"ῒ\",\"ῑ\":\"ῑ\",\"ῐ\":\"ῐ\",\"ό\":\"ό\",\"ὸ\":\"ὸ\",\"ύ\":\"ύ\",\"ὺ\":\"ὺ\",\"ϋ\":\"ϋ\",\"ΰ\":\"ΰ\",\"ῢ\":\"ῢ\",\"ῡ\":\"ῡ\",\"ῠ\":\"ῠ\",\"ώ\":\"ώ\",\"ὼ\":\"ὼ\",\"Ύ\":\"Ύ\",\"Ὺ\":\"Ὺ\",\"Ϋ\":\"Ϋ\",\"Ῡ\":\"Ῡ\",\"Ῠ\":\"Ῠ\",\"Ώ\":\"Ώ\",\"Ὼ\":\"Ὼ\"};const Kr=[\"bin\",\"op\",\"open\",\"punct\",\"rel\"],Qr=/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/,en=/^ *\\\\text/;class tn{constructor(e,t,r=!1){this.mode=\"math\",this.gullet=new _r(e,t,this.mode),this.settings=t,this.isPreamble=r,this.leftrightDepth=0,this.prevAtomType=\"\"}expect(t,r=!0){if(this.fetch().text!==t)throw new e(`Expected '${t}', got '${this.fetch().text}'`,this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set(\"\\\\color\",\"\\\\textcolor\");const e=this.parseExpression(!1);if(this.expect(\"EOF\"),this.isPreamble){const e=Object.create(null);return Object.entries(this.gullet.macros.current).forEach((([t,r])=>{e[t]=r})),this.gullet.endGroup(),e}const t=this.gullet.macros.get(\"\\\\df@tag\");return this.gullet.endGroup(),t&&(this.gullet.macros.current[\"\\\\df@tag\"]=t),e}static get endOfExpression(){return[\"}\",\"\\\\endgroup\",\"\\\\end\",\"\\\\right\",\"\\\\endtoggle\",\"&\"]}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new je(\"}\")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect(\"}\"),this.nextToken=t,r}parseExpression(e,t,r){const n=[];for(this.prevAtomType=\"\";;){\"math\"===this.mode&&this.consumeSpaces();const s=this.fetch();if(-1!==tn.endOfExpression.indexOf(s.text))break;if(t&&s.text===t)break;if(r&&\"\\\\middle\"===s.text)break;if(e&&Fr[s.text]&&Fr[s.text].infix)break;const o=this.parseAtom(t);if(!o)break;\"internal\"!==o.type&&(n.push(o),this.prevAtomType=\"atom\"===o.type?o.family:o.type)}return\"text\"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){let r,n=-1;for(let s=0;s<t.length;s++)if(\"infix\"===t[s].type){if(-1!==n)throw new e(\"only one infix operator per group\",t[s].token);n=s,r=t[s].replaceWith}if(-1!==n&&r){let e,s;const o=t.slice(0,n),a=t.slice(n+1);let l;return e=1===o.length&&\"ordgroup\"===o[0].type?o[0]:{type:\"ordgroup\",mode:this.mode,body:o},s=1===a.length&&\"ordgroup\"===a[0].type?a[0]:{type:\"ordgroup\",mode:this.mode,body:a},l=\"\\\\\\\\abovefrac\"===r?this.callFunction(r,[e,t[n],s],[]):this.callFunction(r,[e,s],[]),[l]}return t}handleSupSubscript(t){const r=this.fetch(),n=r.text;let s;this.consume(),this.consumeSpaces();do{s=this.parseGroup(t)}while(s.type&&\"internal\"===s.type);if(!s)throw new e(\"Expected group after '\"+n+\"'\",r);return s}formatUnsupportedCmd(e){const t=[];for(let r=0;r<e.length;r++)t.push({type:\"textord\",mode:\"text\",text:e[r]});const r={type:\"text\",mode:this.mode,body:t};return{type:\"color\",mode:this.mode,color:this.settings.errorColor,body:[r]}}parseAtom(t){const r=this.parseGroup(\"atom\",t);if(r&&\"internal\"===r.type)return r;if(\"text\"===this.mode)return r;let n,s;for(;;){this.consumeSpaces();const t=this.fetch();if(\"\\\\limits\"===t.text||\"\\\\nolimits\"===t.text){if(r&&\"op\"===r.type){const e=\"\\\\limits\"===t.text;r.limits=e,r.alwaysHandleSupSub=!0}else{if(!r||\"operatorname\"!==r.type)throw new e(\"Limit controls must follow a math operator\",t);r.alwaysHandleSupSub&&(r.limits=\"\\\\limits\"===t.text)}this.consume()}else if(\"^\"===t.text){if(n)throw new e(\"Double superscript\",t);n=this.handleSupSubscript(\"superscript\")}else if(\"_\"===t.text){if(s)throw new e(\"Double subscript\",t);s=this.handleSupSubscript(\"subscript\")}else if(\"'\"===t.text){if(n)throw new e(\"Double superscript\",t);const r={type:\"textord\",mode:this.mode,text:\"\\\\prime\"},s=[r];for(this.consume();\"'\"===this.fetch().text;)s.push(r),this.consume();\"^\"===this.fetch().text&&s.push(this.handleSupSubscript(\"superscript\")),n={type:\"ordgroup\",mode:this.mode,body:s}}else{if(!Xr[t.text])break;{const e=Wr.test(t.text),r=[];for(r.push(new je(Xr[t.text])),this.consume();;){const t=this.fetch().text;if(!Xr[t])break;if(Wr.test(t)!==e)break;r.unshift(new je(Xr[t])),this.consume()}const o=this.subparse(r);e?s={type:\"ordgroup\",mode:\"math\",body:o}:n={type:\"ordgroup\",mode:\"math\",body:o}}}}if(n||s){if(r&&\"multiscript\"===r.type&&!r.postscripts)return r.postscripts={sup:n,sub:s},r;{const e=!r||\"op\"!==r.type&&\"operatorname\"!==r.type?void 0:zt(this.nextToken.text);return{type:\"supsub\",mode:this.mode,base:r,sup:n,sub:s,isFollowedByDelimiter:e}}}return r}parseFunction(t,r){const n=this.fetch(),s=n.text,o=Fr[s];if(!o)return null;if(this.consume(),r&&\"atom\"!==r&&!o.allowedInArgument)throw new e(\"Got function '\"+s+\"' with no arguments\"+(r?\" as \"+r:\"\"),n);if(\"text\"===this.mode&&!o.allowedInText)throw new e(\"Can't use function '\"+s+\"' in text mode\",n);if(\"math\"===this.mode&&!1===o.allowedInMath)throw new e(\"Can't use function '\"+s+\"' in math mode\",n);const a=this.prevAtomType,{args:l,optArgs:i}=this.parseArguments(s,o);return this.prevAtomType=a,this.callFunction(s,l,i,n,t)}callFunction(t,r,n,s,o){const a={funcName:t,parser:this,token:s,breakOnTokenText:o},l=Fr[t];if(l&&l.handler)return l.handler(a,r,n);throw new e(`No function handler for ${t}`)}parseArguments(t,r){const n=r.numArgs+r.numOptionalArgs;if(0===n)return{args:[],optArgs:[]};const s=[],o=[];for(let a=0;a<n;a++){let n=r.argTypes&&r.argTypes[a];const l=a<r.numOptionalArgs;(r.primitive&&null==n||\"sqrt\"===r.type&&1===a&&null==o[0])&&(n=\"primitive\");const i=this.parseGroupOfType(`argument to '${t}'`,n,l);if(l)o.push(i);else{if(null==i)throw new e(\"Null argument, please report this as a bug\");s.push(i)}}return{args:s,optArgs:o}}parseGroupOfType(t,r,n){switch(r){case\"size\":return this.parseSizeGroup(n);case\"url\":return this.parseUrlGroup(n);case\"math\":case\"text\":return this.parseArgumentGroup(n,r);case\"hbox\":{const e=this.parseArgumentGroup(n,\"text\");return null!=e?{type:\"styling\",mode:e.mode,body:[e],scriptLevel:\"text\"}:null}case\"raw\":{const e=this.parseStringGroup(\"raw\",n);return null!=e?{type:\"raw\",mode:\"text\",string:e.text}:null}case\"primitive\":{if(n)throw new e(\"A primitive argument cannot be optional\");const r=this.parseGroup(t);if(null==r)throw new e(\"Expected group as \"+t,this.fetch());return r}case\"original\":case null:case void 0:return this.parseArgumentGroup(n);default:throw new e(\"Unknown group type as \"+t,this.fetch())}}consumeSpaces(){for(;;){const e=this.fetch().text;if(\" \"!==e&&\" \"!==e&&\"︎\"!==e)break;this.consume()}}parseStringGroup(e,t){const r=this.gullet.scanArgument(t);if(null==r)return null;let n,s=\"\";for(;\"EOF\"!==(n=this.fetch()).text;)s+=n.text,this.consume();return this.consume(),r.text=s,r}parseRegexGroup(t,r){const n=this.fetch();let s,o=n,a=\"\";for(;\"EOF\"!==(s=this.fetch()).text&&t.test(a+s.text);)o=s,a+=o.text,this.consume();if(\"\"===a)throw new e(\"Invalid \"+r+\": '\"+n.text+\"'\",n);return n.range(o,a)}parseSizeGroup(t){let r,n=!1;if(this.gullet.consumeSpaces(),r=t||\"{\"===this.gullet.future().text?this.parseStringGroup(\"size\",t):this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/,\"size\"),!r)return null;t||0!==r.text.length||(r.text=\"0pt\",n=!0);const s=Qr.exec(r.text);if(!s)throw new e(\"Invalid size: '\"+r.text+\"'\",r);const o={number:+(s[1]+s[2]),unit:s[3]};if(!ke(o))throw new e(\"Invalid unit: '\"+o.unit+\"'\",r);return{type:\"size\",mode:this.mode,value:o,isBlank:n}}parseUrlGroup(e){this.gullet.lexer.setCatcode(\"%\",13),this.gullet.lexer.setCatcode(\"~\",12);const t=this.parseStringGroup(\"url\",e);if(this.gullet.lexer.setCatcode(\"%\",14),this.gullet.lexer.setCatcode(\"~\",13),null==t)return null;let r=t.text.replace(/\\\\([#$%&~_^{}])/g,\"$1\");return r=t.text.replace(/{\\u2044}/g,\"/\"),{type:\"url\",mode:this.mode,url:r}}parseArgumentGroup(e,t){const r=this.gullet.scanArgument(e);if(null==r)return null;const n=this.mode;t&&this.switchMode(t),this.gullet.beginGroup();const s=this.parseExpression(!1,\"EOF\");this.expect(\"EOF\"),this.gullet.endGroup();const o={type:\"ordgroup\",mode:this.mode,loc:r.loc,body:s};return t&&this.switchMode(n),o}parseGroup(e,t){const r=this.fetch(),n=r.text;let s;if(\"{\"===n||\"\\\\begingroup\"===n||\"\\\\toggle\"===n){this.consume();const e=\"{\"===n?\"}\":\"\\\\begingroup\"===n?\"\\\\endgroup\":\"\\\\endtoggle\";this.gullet.beginGroup();const t=this.parseExpression(!1,e),o=this.fetch();this.expect(e),this.gullet.endGroup(),s={type:\"\\\\endtoggle\"===o.text?\"toggle\":\"ordgroup\",mode:this.mode,loc:Ge.range(r,o),body:t,semisimple:\"\\\\begingroup\"===n||void 0}}else s=this.parseFunction(t,e)||this.parseSymbol(),null!=s||\"\\\\\"!==n[0]||Object.prototype.hasOwnProperty.call(Vr,n)||(s=this.formatUnsupportedCmd(n),this.consume());return s}formLigatures(e){let t=e.length-1;for(let r=0;r<t;++r){const n=e[r],s=n.text;\"-\"===s&&\"-\"===e[r+1].text&&(r+1<t&&\"-\"===e[r+2].text?(e.splice(r,3,{type:\"textord\",mode:\"text\",loc:Ge.range(n,e[r+2]),text:\"---\"}),t-=2):(e.splice(r,2,{type:\"textord\",mode:\"text\",loc:Ge.range(n,e[r+1]),text:\"--\"}),t-=1)),\"'\"!==s&&\"`\"!==s||e[r+1].text!==s||(e.splice(r,2,{type:\"textord\",mode:\"text\",loc:Ge.range(n,e[r+1]),text:s+s}),t-=1)}}parseSymbol(){const t=this.fetch();let r=t.text;if(/^\\\\verb[^a-zA-Z]/.test(r)){this.consume();let t=r.slice(5);const n=\"*\"===t.charAt(0);if(n&&(t=t.slice(1)),t.length<2||t.charAt(0)!==t.slice(-1))throw new e(\"\\\\verb assertion failed --\\n                    please report what input caused this bug\");return t=t.slice(1,-1),{type:\"verb\",mode:\"text\",body:t,star:n}}if(Object.prototype.hasOwnProperty.call(Jr,r[0])&&\"math\"===this.mode&&!E[this.mode][r[0]]){if(this.settings.strict&&\"math\"===this.mode)throw new e(`Accented Unicode text character \"${r[0]}\" used in math mode`,t);r=Jr[r[0]]+r.slice(1)}const n=\"math\"===this.mode?Pr.exec(r):null;let s;if(n&&(r=r.substring(0,n.index),\"i\"===r?r=\"ı\":\"j\"===r&&(r=\"ȷ\")),E[this.mode][r]){let e=E[this.mode][r].group;\"bin\"===e&&Kr.includes(this.prevAtomType)&&(e=\"open\");const n=Ge.range(t);let o;if(Object.prototype.hasOwnProperty.call(z,e)){const t=e;o={type:\"atom\",mode:this.mode,family:t,loc:n,text:r},\"rel\"!==t&&\"bin\"!==t||\"text\"!==this.prevAtomType||en.test(n.lexer.input.slice(n.end))&&(o.needsSpacing=!0)}else{if(Zr[r]){this.consume();const e=this.fetch().text.charCodeAt(0),t=65025===e?\"mathscr\":\"mathcal\";return 65024!==e&&65025!==e||this.consume(),{type:\"font\",mode:\"math\",font:t,body:{type:\"mathord\",mode:\"math\",loc:n,text:Zr[r]}}}o={type:e,mode:this.mode,loc:n,text:r}}s=o}else{if(!(r.charCodeAt(0)>=128||Pr.exec(r)))return null;if(this.settings.strict&&\"math\"===this.mode)throw new e(`Unicode text character \"${r[0]}\" used in math mode`,t);s={type:\"textord\",mode:\"text\",loc:Ge.range(t),text:r}}if(this.consume(),n)for(let r=0;r<n[0].length;r++){const o=n[0][r];if(!Yr[o])throw new e(`Unknown accent ' ${o}'`,t);const a=Yr[o][this.mode]||Yr[o].text;if(!a)throw new e(`Accent ${o} unsupported in ${this.mode} mode`,t);s={type:\"accent\",mode:this.mode,loc:Ge.range(t),label:a,isStretchy:!1,base:s}}return s}}const rn=function(t,r){if(!(\"string\"==typeof t||t instanceof String))throw new TypeError(\"Temml can only parse string typed expression\");const n=new tn(t,r);delete n.gullet.macros.current[\"\\\\df@tag\"];let s=n.parse();if(!(s.length>0&&s[0].type&&\"array\"===s[0].type&&s[0].addEqnNum)&&n.gullet.macros.get(\"\\\\df@tag\")){if(!r.displayMode)throw new e(\"\\\\tag works only in display mode\");n.gullet.feed(\"\\\\df@tag\"),s=[{type:\"tag\",mode:\"text\",body:s,tag:n.parse()}]}return s},nn=[2,2,3,3];class sn{constructor(e){this.level=e.level,this.color=e.color,this.font=e.font||\"\",this.fontFamily=e.fontFamily||\"\",this.fontSize=e.fontSize||1,this.fontWeight=e.fontWeight||\"\",this.fontShape=e.fontShape||\"\",this.maxSize=e.maxSize}extend(e){const t={level:this.level,color:this.color,font:this.font,fontFamily:this.fontFamily,fontSize:this.fontSize,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return new sn(t)}withLevel(e){return this.extend({level:e})}incrementLevel(){return this.extend({level:Math.min(this.level+1,3)})}inSubOrSup(){return this.extend({level:nn[this.level]})}withColor(e){return this.extend({color:e})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:\"\"})}withFontSize(e){return this.extend({fontSize:e})}withTextFontWeight(e){return this.extend({fontWeight:e,font:\"\"})}withTextFontShape(e){return this.extend({fontShape:e,font:\"\"})}getColor(){return this.color}}function on(e){const t={};let r=0;const n=document.getElementsByClassName(\"tml-eqn\");for(let e of n)for(r+=1,e.setAttribute(\"id\",\"tml-eqn-\"+String(r));\"mtable\"!==e.tagName;){if(e.getElementsByClassName(\"tml-label\").length>0){const n=e.attributes.id.value;t[n]=String(r);break}e=e.parentElement}const s=document.getElementsByClassName(\"tml-tageqn\");for(const e of s){if(e.getElementsByClassName(\"tml-label\").length>0){const r=e.getElementsByClassName(\"tml-tag\");if(r.length>0){const n=e.attributes.id.value;t[n]=r[0].textContent}}}[...e.getElementsByClassName(\"tml-ref\")].forEach((e=>{const r=e.getAttribute(\"href\");let n=t[r.slice(1)];-1===e.className.indexOf(\"tml-eqref\")?(n=n.replace(/^\\(/,\"\"),n=n.replace(/\\)$/,\"\")):(\"(\"!==n.charAt(0)&&(n=\"(\"+n),\")\"!==n.slice(-1)&&(n+=\")\"));const s=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",\"mtext\");s.appendChild(document.createTextNode(n));const o=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",\"math\");o.appendChild(s),e.textContent=\"\",e.appendChild(o)}))}const an=function(e,t,r){let n=r,s=0;const o=e.length;for(;n<t.length;){const r=t[n];if(s<=0&&t.slice(n,n+o)===e)return n;\"\\\\\"===r?n++:\"{\"===r?s++:\"}\"===r&&s--,n++}return-1},ln=/^\\\\(?:begin|(?:eq)?ref){/,cn=[{left:\"$$\",right:\"$$\",display:!0},{left:\"\\\\(\",right:\"\\\\)\",display:!1},{left:\"\\\\begin{equation}\",right:\"\\\\end{equation}\",display:!0},{left:\"\\\\begin{equation*}\",right:\"\\\\end{equation*}\",display:!0},{left:\"\\\\begin{align}\",right:\"\\\\end{align}\",display:!0},{left:\"\\\\begin{align*}\",right:\"\\\\end{align*}\",display:!0},{left:\"\\\\begin{alignat}\",right:\"\\\\end{alignat}\",display:!0},{left:\"\\\\begin{alignat*}\",right:\"\\\\end{alignat*}\",display:!0},{left:\"\\\\begin{gather}\",right:\"\\\\end{gather}\",display:!0},{left:\"\\\\begin{gather*}\",right:\"\\\\end{gather*}\",display:!0},{left:\"\\\\begin{CD}\",right:\"\\\\end{CD}\",display:!0},{left:\"\\\\ref{\",right:\"}\",display:!1},{left:\"\\\\eqref{\",right:\"}\",display:!1},{left:\"\\\\[\",right:\"\\\\]\",display:!0}],dn={$:[{left:\"$$\",right:\"$$\",display:!0},{left:\"$`\",right:\"`$\",display:!1},{left:\"$\",right:\"$\",display:!1}],\"(\":[{left:\"\\\\[\",right:\"\\\\]\",display:!0},{left:\"\\\\(\",right:\"\\\\)\",display:!1}]},mn=[{left:\"\\\\begin{equation}\",right:\"\\\\end{equation}\",display:!0},{left:\"\\\\begin{equation*}\",right:\"\\\\end{equation*}\",display:!0},{left:\"\\\\begin{align}\",right:\"\\\\end{align}\",display:!0},{left:\"\\\\begin{align*}\",right:\"\\\\end{align*}\",display:!0},{left:\"\\\\begin{alignat}\",right:\"\\\\end{alignat}\",display:!0},{left:\"\\\\begin{alignat*}\",right:\"\\\\end{alignat*}\",display:!0},{left:\"\\\\begin{gather}\",right:\"\\\\end{gather}\",display:!0},{left:\"\\\\begin{gather*}\",right:\"\\\\end{gather*}\",display:!0},{left:\"\\\\begin{CD}\",right:\"\\\\end{CD}\",display:!0},{left:\"\\\\ref{\",right:\"}\",display:!1},{left:\"\\\\eqref{\",right:\"}\",display:!1}],pn=function(t,r){const n=function(e,t){let r;const n=[],s=new RegExp(\"(\"+t.map((e=>e.left.replace(/[-/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\"))).join(\"|\")+\")\");for(;r=e.search(s),-1!==r;){r>0&&(n.push({type:\"text\",data:e.slice(0,r)}),e=e.slice(r));const s=t.findIndex((t=>e.startsWith(t.left)));if(r=an(t[s].right,e,t[s].left.length),-1===r)break;const o=e.slice(0,r+t[s].right.length),a=ln.test(o)?o:e.slice(t[s].left.length,r);n.push({type:\"math\",data:a,rawData:o,display:t[s].display}),e=e.slice(r+t[s].right.length)}return\"\"!==e&&n.push({type:\"text\",data:e}),n}(t,r.delimiters);if(1===n.length&&\"text\"===n[0].type)return null;const s=document.createDocumentFragment();for(let t=0;t<n.length;t++)if(\"text\"===n[t].type)s.appendChild(document.createTextNode(n[t].data));else{const o=document.createElement(\"span\");let a=n[t].data;r.displayMode=n[t].display;try{r.preProcess&&(a=r.preProcess(a)),temml.render(a,o,r)}catch(o){if(!(o instanceof e))throw o;r.errorCallback(\"Temml auto-render: Failed to parse `\"+n[t].data+\"` with \",o),s.appendChild(document.createTextNode(n[t].rawData));continue}s.appendChild(o)}return s},un=function(e,t){for(let r=0;r<e.childNodes.length;r++){const n=e.childNodes[r];if(3===n.nodeType){const s=pn(n.textContent,t);s&&(r+=s.childNodes.length-1,e.replaceChild(s,n))}else if(1===n.nodeType){const e=\" \"+n.className+\" \";-1===t.ignoredTags.indexOf(n.nodeName.toLowerCase())&&t.ignoredClasses.every((t=>-1===e.indexOf(\" \"+t+\" \")))&&un(n,t)}}};let hn=function(e,t,r={}){t.textContent=\"\";const n=\"math\"===t.tagName.toLowerCase();n&&(r.wrap=\"none\");const s=gn(e,r);n||s.children.length>1?(t.textContent=\"\",s.children.forEach((e=>{t.appendChild(e.toNode())}))):t.appendChild(s.toNode())};\"undefined\"!=typeof document&&\"CSS1Compat\"!==document.compatMode&&(\"undefined\"!=typeof console&&console.warn(\"Warning: Temml doesn't work in quirks mode. Make sure your website has a suitable doctype.\"),hn=function(){throw new e(\"Temml doesn't work in quirks mode.\")});const gn=function(t,r){const n=new a(r);try{const e=rn(t,n);return he(e,t,new sn({level:n.displayMode?Pe:Re,maxSize:n.maxSize}),n)}catch(r){return function(t,r,n){if(n.throwOnError||!(t instanceof e))throw t;const s=new y([\"temml-error\"],[new w(r+\"\\n\\n\"+t.toString())]);return s.style.color=n.errorColor,s.style.whiteSpace=\"pre-line\",s}(r,t,n)}};return{version:\"0.11.10\",render:hn,renderToString:function(e,t){return gn(e,t).toMarkup()},renderMathInElement:function(e,t){if(!e)throw new Error(\"No element provided to render\");const r={};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);r.fences?r.delimiters=(e=>{if(\"$\"===e||\"(\"===e)return dn[e];if(\"$+\"===e||\"(+\"===e)return dn[e.slice(0,1)].concat(mn);return\"ams\"===e?mn:\"all\"===e?dn[\"(\"].concat(dn.$).concat(mn):cn})(r.fences):r.delimiters=r.delimiters||cn,r.ignoredTags=r.ignoredTags||[\"script\",\"noscript\",\"style\",\"textarea\",\"pre\",\"code\",\"option\"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},un(e,r),on(e)},postProcess:on,ParseError:e,definePreamble:function(e,t){const r=new a(t);if(r.macros={},!(\"string\"==typeof e||e instanceof String))throw new TypeError(\"Temml can only parse string typed expression\");const n=new tn(e,r,!0);delete n.gullet.macros.current[\"\\\\df@tag\"];return n.parse()},__parse:function(e,t){const r=new a(t);return rn(e,r)},__renderToMathMLTree:gn,__defineSymbol:I,__defineMacro:_e}}();","namespace cs {\n\n  export class Snippet {\n  \n    static readonly EventIdErrorAjaxCall = 'csSnippet:errorAjaxCall';\n    static readonly EventIdFormReset = 'csSnippet:formReset';\n    static readonly EventIdFormSubmit = 'csSnippet:formSubmit';\n    static readonly EventIdPostReplace = 'csSnippet:postReplace';\n    static readonly EventIdPreAjaxCall = 'csSnippet:preAjaxCall';\n    static readonly EventIdPreReplace = 'csSnippet:preReplace';\n\n    /* Grouping - merge results received by AJAX into last shown cluster on demand: #replaceClustered()\n    * mark the outer element of cluster: detected in response and removed if empty after merge */\n   static readonly CLASS_CLUSTER_CONTAINER = \"snippet-cluster-container\";\n    /* Grouping - merge results received by AJAX into last shown cluster on demand: #replaceClustered()\n    * mark the parent of result-elements: detected in response and merge children() if cluster is already present */\n   static readonly CLASS_CLUSTER_PARENT = \"snippet-cluster-elements-parent\";\n    /* Grouping - merge results received by AJAX into last shown cluster on demand: #replaceClustered()\n    * info on CLASS_CLUSTER_PARENT: provide page-unique ID for a cluster in data attr  */\n   static readonly DATA_CLUSTER_ID = \"snippetClusterId\";\n    \n    static init($base: JQuery<HTMLElement>): void {\n      $base.on(Snippet.EventIdPreAjaxCall, (event: SnippetEventPreAjax): void => {\n        event.targetElement.find('.forward-params-link').data('defer', true);\n      });\n      \n      $base.on(Snippet.EventIdPreReplace, () => {\n        // console.log('eventIdpreReplace running js for : ' + event.oldElement.attr('id'));\n        Snippet.hideLoadingIndicator();\n      });\n  \n      $base.on(Snippet.EventIdErrorAjaxCall, () => {\n        //console.log('eventIderrorAjaxCall running js for : ' + event.oldElement.attr('id'));\n        Snippet.hideLoadingIndicator();\n      });\n      \n      Snippet.initConditionalVisibility($base);\n      Snippet.registerForm($base);\n      Snippet.registerAjaxLinks($base);\n      Snippet.registerAjaxTabs($base);\n    }\n  \n    public static preAjax(target: JQuery<HTMLElement>, activator: HTMLElement | null | undefined) {\n      const event = jQuery.Event(Snippet.EventIdPreAjaxCall) as SnippetEventPreAjax;\n      event.targetElement = target;\n      if(activator) {\n        Snippet.showLoadingIndicator($(activator));\n      }\n      $(':root').trigger(event);\n    }\n    \n    private static errorAjax(jqXHR: JQuery.jqXHR, textStatus: JQuery.Ajax.ErrorTextStatus, oldElement: JQuery<HTMLElement>) {\n      const event = jQuery.Event(Snippet.EventIdErrorAjaxCall) as SnippetEventAjaxError;\n      event.oldElement = oldElement;\n      event.status = jqXHR.status;\n      event.textStatus = textStatus;\n      $(':root').trigger(event);\n    }\n    \n    private static preReplace(oldElement: JQuery<HTMLElement>, newElement: JQuery<HTMLElement>) {\n      const event = jQuery.Event(Snippet.EventIdPreReplace) as SnippetEventPreReplace;\n      event.oldElement = oldElement;\n      event.newElement = newElement;\n      $(':root').trigger(event);\n    }\n    \n    private static registerAjaxLinks($base: JQuery<HTMLElement>) {\n      $('a.csSnippet', $base).each((_index, el) => {\n        const $clickedElement = $(el);\n        //console.log('registering ajax link', $clickedElement, $clickedElement.text().trim());\n        $clickedElement.on('click', ($event) => {\n          $event.preventDefault();\n          const $el = $($event.currentTarget);\n          if ($el.closest('li').hasClass('active')) {\n            $el.closest('.trigger-tracking-click').data('csTrackingNoTrack', true);\n            return;\n          }\n          let $targetDiv = $el.closest('div.csSnippet');\n          if ($clickedElement.selfOrClosest('.increaseResult').length === 1) {\n            $targetDiv = $clickedElement.selfOrClosest('.result_bottom');\n          }\n          const successFunction = (data: any) => {\n            Snippet.replaceClustered(data, $targetDiv, $clickedElement);\n          };\n          Snippet.preAjax($targetDiv, $el.get(0));\n  \n          const href = $el.attr('href');\n          if (href && !$el.data('noHistoryState')) {\n            history.replaceState(history.state, '', href);\n          }\n          \n          $.ajax($el.data('snippetUrl'), {\n            dataType: 'xml',\n            success: successFunction\n          });\n        });\n      });\n    }\n  \n    private static registerAjaxTabs($base: JQuery<HTMLElement>) {\n      const showTabContent = ($tabContent: JQuery<HTMLElement>, $tabContents: JQuery<HTMLElement>) => {\n        $tabContents.not($tabContent).each((_idx, el) => {\n          $(el).prop('hidden', true)\n            .toggleClass('eh--hide', true);\n        });\n        $tabContent.prop('hidden', false)\n          .toggleClass('eh--hide', false);\n\n        $(':root').trigger(eh.TAB_EVENTS.TAB_CONTENT_SHOWN, $tabContent);\n      };\n      $base.on(eh.TAB_EVENTS.TAB_CHANGE, ($event: JQuery.TriggeredEvent, tab: eh.ITab) => {\n        const $tabContent = eh.Tabs.getTabContent(tab);\n        const $tabContents = eh.Tabs.getTabContents(tab);\n        \n        const $snippet = $('.csSnippet', $tabContent).first();\n        const $snippetTabContent = $('.marker-snippet-tab-content', $tabContent);\n        const snippetUrl = $snippetTabContent.data('snippetUrl');\n        if ($snippet.length > 0 && snippetUrl) {\n          $tabContent.parent().toggleClass('is-loading', true);\n          $.ajax({\n            url: snippetUrl\n          }).then((data: any) => {\n            Snippet.replace(data, $snippet);\n            showTabContent($tabContent, $tabContents);\n            $tabContent.parent().toggleClass('is-loading', false);\n            \n            const href = tab.tab ? $(tab.tab).attr('href') : undefined;\n            if (href) {\n              history.replaceState(history.state, '', href);\n            }\n          }, () => {\n            $tabContent.parent().toggleClass('is-loading', false);\n          });\n        }\n        else {\n          if (!$tabContent.prop('hidden')) {\n            return;\n          }\n          showTabContent($tabContent, $tabContents);\n          \n          const href = $('.marker-tab-content', $tabContent).last().data('href');\n          if (href) {\n            history.replaceState(history.state, '', href);\n          }\n        }\n      });\n    }\n    \n    private static replaceSelectorsInt(replaceSelectors: string[], data: any, targetDiv: JQuery<HTMLElement>) {\n      const $data = $(data);\n      const newElementData = $data.find('data').text();\n      const $newElement = newElementData.length > 0 ? $(newElementData) : $data;\n      const replaced: {replacement: JQuery<HTMLElement>, replaced: JQuery<HTMLElement>}[] = [];\n      Snippet.preReplace(targetDiv, targetDiv);\n      replaceSelectors.forEach((i) => {\n        const replacement = $newElement.find(i);\n        const toReplace = targetDiv.selfOrFind(i);\n        replaced.push({'replacement': replacement, 'replaced': toReplace});\n        Snippet.preReplace(toReplace, $newElement);\n        toReplace.replaceWith(replacement);\n      });\n      replaced.forEach((x) => {\n        const event = jQuery.Event(Snippet.EventIdPostReplace) as SnippetEventPostReplace;\n        event.replacedTarget = x.replacement;\n        event.removedTarget = x.replaced;\n        $(':root').trigger(event);\n        \n      });\n    }\n  \n    public static replace(data: any, targetDiv: JQuery<HTMLElement>, source?: JQuery<HTMLElement>) {\n      if (source) {\n        var replaceSelectors = source.data('snippetReplace');\n        source.closest('ul').find('li').removeClass('active');\n        source.closest('li').addClass('active');\n        if (replaceSelectors) {\n          replaceSelectors = replaceSelectors.split(' ');\n          Snippet.replaceSelectorsInt(replaceSelectors, data, targetDiv);\n          return;\n        }\n      }\n  \n      const $data = $(data);\n      const newElementData = $data.find('data').text();\n      const $newElement = newElementData.length > 0 ? $(newElementData) : $data;\n\n      Snippet.preReplace(targetDiv, $newElement);\n      targetDiv.replaceWith($newElement);\n      const event = jQuery.Event(Snippet.EventIdPostReplace) as SnippetEventPostReplace;\n      event.replacedTarget = $newElement;\n      event.removedTarget = targetDiv;\n      $(':root').trigger(event);\n    }\n    \n    /**\n     * @desc Check 'data' for CLASS_CLUSTER_PARENT and merge incoming data on demand; otherwise delegate to {@link replace(data, $targetDiv, source)}\n     * @param {any} data content received by ajax\n     * @param {JQuery<HTMLElement>} $targetDiv element to be replaced by 'data' or 'data's remnants after merge\n     * @param {JQuery<HTMLElement>} source not used local; handed on to fallback\n     */\n    public static replaceClustered(data:any, $targetDiv: JQuery<HTMLElement>, source?: JQuery<HTMLElement>): void {\n      if (source && $(source).data('snippetReplace')) {\n        Snippet.replace(data, $targetDiv, source);\n        return;\n      }\n\n      const $data = $(data);\n      const newElementData = $data.find('data').text();\n      const $newElement = newElementData.length > 0 ? $(newElementData) : $data;\n      const selParent = '.' + Snippet.CLASS_CLUSTER_PARENT;\n      const $groupParent = $newElement.find(selParent).first();\n      if ($groupParent.length === 1) {\n        const id = $groupParent.data(Snippet.DATA_CLUSTER_ID);\n        const $groupTarget = $(selParent).filter((_idx, s) => $(s).data(Snippet.DATA_CLUSTER_ID) === id).first();\n        \n        const replaced: {replacement: JQuery<HTMLElement>, replaced: JQuery<HTMLElement>}[] = [];\n        if ($groupTarget.length === 1) {\n          // merge gsrc childs into gtarget\n          const $replacement = $groupParent.children();\n          const $toReplace = $('<div></div>');\n          $groupTarget.append($toReplace);\n          Snippet.preReplace($replacement, $toReplace);\n          $toReplace.replaceWith($replacement);\n          replaced.push({'replacement': $replacement, 'replaced': $toReplace});\n          // remove remnants from newElement\n          $groupParent.selfOrClosest('.'+Snippet.CLASS_CLUSTER_CONTAINER).remove();\n        }\n        Snippet.preReplace($newElement, $targetDiv);\n        $targetDiv.replaceWith($newElement);\n        replaced.push({'replacement': $newElement, 'replaced': $targetDiv});\n        replaced.forEach((x) => {\n          const event = jQuery.Event(Snippet.EventIdPostReplace) as SnippetEventPostReplace;\n          event.replacedTarget = x.replacement;\n          event.removedTarget = x.replaced;\n          $(':root').trigger(event);\n        });\n        return;\n      }\n      // always call fallback if not solved local\n      cs.Snippet.replace(data, $targetDiv, source);\n    }\n\n    public static ajaxSubmitForm($eventProducer: JQuery<HTMLElement>, $event: JQuery.TriggeredEvent<HTMLElement>, callbackFunction?: Function) {\n      const $form = $eventProducer.closest('form.csSnippetForm'), snippetUrl = $form.data('snippetUrl');\n      const clearExpression = $eventProducer.data('clear');\n      $event.preventDefault();\n      \n      if (clearExpression) {\n        $form.find(clearExpression).each((i, e) => {\n          if (e.type === 'checkbox' || e.type === 'radio') {\n            if (e.checked) {\n              e.checked = false;\n            }\n          } else {\n            e.value = '';\n          }\n        });\n      }\n\t\t\n      if (!snippetUrl || $form.data('formValid') === false) {\n        return;\n      }\n  \n      let submitEventCoalescingTimeout = $form.data('submitEventCoalescingTimeout');\n      if (submitEventCoalescingTimeout) {\n        return;\n      }\n      if($event.target instanceof HTMLElement) {\n        Snippet.showLoadingIndicator($(<HTMLElement> $event.target));\n      }\n      submitEventCoalescingTimeout = window.setTimeout(function () {\n        const $targetDiv = $form.closest('div.csSnippet');\n        const removeFields = $form.data('ignoreFieldnames');\n        if (removeFields !== undefined) {\n          $form.find('input[name^=\\'' + removeFields + '\\']').remove();\n        }\n        const errorFunction = function (jqXHR: JQuery.jqXHR, textStatus: JQuery.Ajax.ErrorTextStatus) {\n          Snippet.errorAjax(jqXHR, textStatus, $targetDiv);\n          $form.removeData('submitEventCoalescingTimeout');\n          $form.removeClass('eh-opacity-7');\n        };\n        const successFunction = (data: any) => {\n          if($form.data('snippetReplace')) {\n            Snippet.replace(data, $targetDiv, $form);\n          } else {\n            Snippet.replace(data, $targetDiv);\n          }\n          if (typeof callbackFunction === 'function') {\n            callbackFunction.call(null);\n          }\n          $form.removeData('submitEventCoalescingTimeout');\n          $form.removeClass('eh-opacity-7');\n          \n          if ($form.data('stateHandling') !== 'ignore' && !$form.data('noHistoryState')) {\n            const action = $form.attr('action'),\n                url = (!action || action.substring(0, 1) === '#') ? location.pathname : action,\n                newParams = eh.URLHelper.buildQueryParamMap($form.formSerialize()),\n                originalParams = eh.URLHelper.buildQueryParamMap(eh.URLHelper.getQueryString(url))\n            ;\n            const newState = eh.URLHelper.buildUrl(url, eh.URLHelper.buildQueryString(eh.URLHelper.mergeQueryParams(originalParams, newParams, eh.URLHelper.latterWins)));\n            history.replaceState(history.state, '', newState);\n          }\n        };\n        Snippet.preAjax($targetDiv, null);\n        $form.addClass('eh-opacity-7');\n        $form.ajaxSubmit({\n          beforeSend: (): boolean => {\n            const $submitEvent = jQuery.Event(Snippet.EventIdFormSubmit) as SnippetEventFormSubmit;\n            $submitEvent.$form = $form as JQuery<HTMLFormElement>;\n            $(':root').trigger($submitEvent);\n            return !$submitEvent.isDefaultPrevented();\n          },\n          dataType: 'xml',\n          error: errorFunction,\n          success: successFunction,\n          timeout: 20 * 1000,\n          type: $form.prop('method') || 'get',\n          url: snippetUrl\n        });\n      }, 0);\n      $form.data('submitEventCoalescingTimeout', submitEventCoalescingTimeout);\n    }\n    \n    private static registerForm($base: JQuery<HTMLElement>) {\n      $('form.csSnippetForm', $base).each((_index, el) => {\n        const $form = $(el);\n        const prepareForegroundSubmit = ($form: JQuery<HTMLElement>) => {\n          $form.find('*').filter(':input:enabled').each((_index, el) => {\n            const name = $(el).attr('name');\n            if (name) {\n              $(el).attr('name', name.replace('np.', 'filter.'));\n            }\n          });\n        };\n        $('.onEnterForegroundSubmit', $form).on('keydown', function ($event) {\n          if ($event.key === 'Enter') { // 13 Enter\n            $event.preventDefault();\n            $form.trigger('submit');\n          }\n        });\n        $('.onChangeAjaxSubmit', $form).on('change', function ($event) {\n          Snippet.ajaxSubmitForm($(this), $event);\n        });\n        \n        $('.triggerSearch, .ajaxSubmitButton', $form).on('click', ($event) => {\n          const $target = $($event.currentTarget);\n          if (!$target.hasClass('disabled')) {\n            Snippet.ajaxSubmitForm($target, $event);\n          }\n        });\n\n        $form.not('.foreground-submit').on('submit', ($event) => {\n          Snippet.ajaxSubmitForm($($event.currentTarget), $event);\n        });\n        $form.filter('.foreground-submit').on('submit', () => {\n          prepareForegroundSubmit($form);\n        });\n        \n        $('.trigger-form-reset', $form).on('click', function ($event) {\n          $event.preventDefault();\n          if (!$(this).hasClass('disabled')) {\n            eh.LoadingIndicator.showLoadingByEv($event);\n            Snippet.resetForm($form);\n          }\n        });\n        $('.csProdSearch__reset, .trigger-reset-search').on('click', function ($event) {\n          $event.preventDefault();\n          if (!$(this).hasClass('disabled')) {\n            const $form = $(this).closest('.marker-search-container').find('form.csSnippetForm');\n            eh.LoadingIndicator.showLoadingByEv($event);\n            Snippet.resetForm($form);\n          }\n        });\n        $('.trigger-foreground-submit', $form).on('click', function ($event) {\n          $event.preventDefault();\n          $form.trigger('submit');\n        });\n      });\n    }\n    \n    private static resetForm($form: JQuery<HTMLElement>) {\n      $('input, select, textarea', $form).each(function () {\n        $(this).val('');\n      });\n      const $event = jQuery.Event(Snippet.EventIdFormReset) as SnippetEventFormReset;\n      $event.$form = $form as JQuery<HTMLFormElement>;\n      Snippet.ajaxSubmitForm($form, $event);\n    }\n  \n    private static showLoadingIndicator(target: JQuery<HTMLElement>) {\n      eh.LoadingIndicator.showLoading(target);\n    }\n  \n    private static hideLoadingIndicator() {\n      eh.LoadingIndicator.hideLoading();\n    }\n    \n    private static initConditionalVisibility($base: JQuery<HTMLElement>) {\n      $('.conditional_visibility', $base).each(function () {\n        const $formRow = $(this), $form = $formRow.closest('form'), $formField = $(':input', $formRow),\n            fieldName: string = $formRow.data('conditionFieldName'),\n            form: HTMLFormElement = $form.get(0) as HTMLFormElement,\n            $watchedField: JQuery<HTMLElement> = $(form[fieldName]),\n            targetValue = $formRow.data('conditionFieldValue');\n        \n        if ($watchedField.length > 0 && targetValue !== undefined) {\n          $watchedField.on('change', ($event) => {\n            let currentValue, valuesMatching, $elem = $($event.currentTarget);\n            const type = $elem.attr('type');\n            if (type === 'checkbox') {\n              $elem = $elem.filter(':checked');\n              currentValue = $elem.val();\n            }\n            else if (type === 'radio') {\n              currentValue = $('input[type=\"radio\"][name=\"' + $elem.attr('name') + '\"]:checked').val();\n            }\n            else {\n              currentValue = $elem.val();\n            }\n            valuesMatching = currentValue === targetValue;\n            $formRow.toggle(valuesMatching);\n            $formField.prop('disabled', !valuesMatching);\n          });\n        } else {\n          $formRow.hide();\n        }\n      });\n      \n    }\n    \n  }\n  \n  export interface SnippetEventPreAjax extends JQuery.TriggeredEvent<HTMLElement> {\n    targetElement: JQuery<HTMLElement>;\n  }\n  \n  export interface SnippetEventAjaxError extends JQuery.TriggeredEvent<HTMLElement> {\n    oldElement: JQuery<HTMLElement>;\n    status: number;\n    textStatus: string;\n  }\n  \n  export interface SnippetEventPreReplace extends JQuery.TriggeredEvent<HTMLElement> {\n    oldElement?: JQuery<HTMLElement>;\n    newElement: JQuery<HTMLElement>;\n  }\n  \n  export interface SnippetEventPostReplace extends JQuery.TriggeredEvent<HTMLElement> {\n    replacedTarget: JQuery<HTMLElement>;\n    removedTarget?: JQuery<HTMLElement>;\n  }\n  \n  export interface SnippetEventFormReset extends JQuery.TriggeredEvent<HTMLElement> {\n    $form: JQuery<HTMLFormElement>;\n  }\n  \n  export interface SnippetEventFormSubmit extends JQuery.TriggeredEvent<HTMLElement> {\n    $form: JQuery<HTMLFormElement>;\n  }\n\n}","interface JQuery {\n  emptyToOptional(): JQuery<HTMLElement> | undefined;\n  selfOrClosest(selector: JQuery.Selector | Element | JQuery): JQuery<HTMLElement>;\n  selfOrFind(selector: JQuery.Selector | Element | JQuery): JQuery<HTMLElement>;\n}\n\n$.fn.emptyToOptional = function (): JQuery<HTMLElement> | undefined {\n  return this.length === 0 ? undefined : this;\n};\n\n$.fn.selfOrClosest = function (selector: JQuery.Selector | HTMLElement | JQuery<HTMLElement>): JQuery<HTMLElement> {\n  const $result = this.filter(selector);\n  return $result.length === 0 ? this.closest(selector) : $result;\n};\n\n$.fn.selfOrFind = function (selector: JQuery.Selector | HTMLElement | JQuery<HTMLElement>): JQuery<HTMLElement> {\n  const $result = this.filter(selector);\n  return $result.length === 0 ? this.find(selector) : $result;\n};\n  \nnamespace eh {\n  \n  export class URLHelper {\n    \n    public static parse(url: string): HTMLHyperlinkElementUtils {\n      const a:HTMLAnchorElement = document.createElement('a');\n      a.setAttribute('href', url);\n      return a as HTMLHyperlinkElementUtils;\n    }\n    \n    public static getQueryString(url: string) {\n      const qi = url.indexOf('?');\n      const hi = url.indexOf('#');\n      return (qi === -1) ? '' : url.substring(qi + 1, (hi === -1) ? url.length : hi);\n    }\n    \n    public static buildUrl(url: string, queryString: string, fragment?: string) {\n      const qi = url.indexOf('?');\n      const hi = url.indexOf('#');\n      const h = fragment ?? ((hi === -1) ? '' : url.substring(hi + 1, url.length));\n      \n      return url.substring(0, (qi === -1) ? ((hi === -1) ? url.length : hi) : qi) + (queryString ? '?' + queryString : '') + (h ? '#' + h : '');\n    }\n    \n    public static buildQueryString(params: QueryParams): string {\n      const qs = [];\n      for (const k in params) {\n        if (!params.hasOwnProperty(k)) {\n          continue;\n        }\n        const v = params[k];\n        if (v instanceof Array) {\n          v.forEach((vv) => {\n            qs.push([encodeURIComponent(k), encodeURIComponent(vv)].join('='));\n          });\n        }\n        else {\n          qs.push([encodeURIComponent(k), encodeURIComponent(v)].join('='));\n        }\n      }\n      return qs.join('&');\n    }\n    \n    public static buildQueryParamMap(queryString: string): QueryParams {\n      return URLHelper.buildNormalizedQueryParamMap(queryString, false);\n    }\n\n    public static buildNormalizedQueryParamMap(queryString: string, omitIndex: boolean): QueryParams {\n      const params: QueryParams = {};\n      if (queryString) {\n        if (queryString[0] === '?') {\n          queryString = queryString.substring(1);\n        }\n        const regex = /(\\S+)(\\[\\d*\\])/s;\n        let m;\n        queryString.split('&').forEach((kv) => {\n          const p = kv.split('=');\n          let k = decodeURIComponent(p[0]);\n          if(omitIndex && ((m = regex.exec(k)) !== null)) {\n            k = m[1]+'[]';\n          }\n          let v: string | string[] = decodeURIComponent(p[1]) || '';\n          if (k in params) {\n            const x = params[k];\n            if (x instanceof Array) {\n              x.push(v);\n              v = x;\n            } else {\n              v = [x, v];\n            }\n          }\n          params[k] = v;\n        });\n      }\n      return params;\n    }\n    \n    //noinspection JSUnusedGlobalSymbols\n    public static mergeQueryParams(a: QueryParams, b: QueryParams, mergeCallBack?: (name: string, valueA: string | string[], valueB: string | string[]) => string | string[] | null): QueryParams {\n      const params: QueryParams = {};\n      for (let k in a) {\n        if (!a.hasOwnProperty(k)) {\n          continue;\n        }\n        if (k in b) {\n          if (mergeCallBack) {\n            const v = mergeCallBack(k, a[k], b[k]);\n            if (v !== null) {\n              params[k] = v;\n            }\n          }\n        }\n        else {\n          params[k] = a[k];\n        }\n      }\n      for (let k in b) {\n        if (!b.hasOwnProperty(k) || k in a) {\n          continue;\n        }\n        params[k] = b[k];\n      }\n      return params;\n    }\n    \n    //noinspection JSUnusedGlobalSymbols\n    public static firstWins(name: string, valueA: string | string[], _valueB: string | string[]): string | string[] | null {\n      return valueA;\n    }\n    \n    //noinspection JSUnusedGlobalSymbols\n    public static latterWins(name: string, _valueA: string | string[], valueB: string | string[]): string | string[] | null {\n      return valueB;\n    }\n    \n    public static combine(name: string, valueA: string | string[], valueB: string | string[]): string | string[] | null {\n      const combined: string[] = [];\n      if (valueA instanceof Array) {\n        combined.concat(valueA);\n      }\n      else {\n        combined.push(valueA);\n      }\n      if (valueB instanceof Array) {\n        combined.concat(valueB);\n      }\n      else {\n        combined.push(valueB);\n      }\n      return Array.from(new Set(combined));\n    }\n    \n    public static join(name: string, valueA: string | string[], valueB: string | string[]): string | string[] | null {\n      return (URLHelper.combine(name, valueA, valueB) as string[])?.join(',');\n    }\n    \n  }\n  \n  export type QueryParams = {[key: string]: string | string[]};\n\n  export class DeferredPromise<T> {\n\n    // not supported IE && Node\n    // [Symbol.toStringTag] = 'Promise';\n    \n    private readonly _promise: Promise<T>;\n    public execute: (this: DeferredPromise<T>) => void;\n    public resolve: (value: T | PromiseLike<T>) => void;\n    public reject: (e?: Error) => void;\n    public then;\n    public catch;\n    public finally;\n    \n    constructor(execute: (this: DeferredPromise<T>) => void) {\n      this.execute = execute.bind(this);\n      this._promise = new Promise<T>((_resolve, _reject) => {\n        this.resolve = _resolve;\n        this.reject = _reject;\n      });\n      this.then = this._promise.then.bind(this._promise);\n      this.catch = this._promise.catch.bind(this._promise);\n      this.finally = this._promise.finally.bind(this._promise);\n    }\n  }\n  \n  \n  export function debounce<T extends Function>(cb: T, delay: number = 20) {\n    let h: number;\n    const callable = (...args: any) => {\n      window.clearTimeout(h);\n      h = window.setTimeout(() => cb(...args), delay);\n    };\n    return <T>(<any>callable);\n  }\n  \n  export function formatString(str: string, ...varargs: any[]) {\n    const args = arguments;\n    let i = 0;\n    return str.replace(/(%%)|(%(?:\\d\\$)?s)|(%(?:\\d\\$)?d)|(%(?:\\d\\$)?(\\.\\d)?f)/g,\n         (match, escapeSequence, stringParam, intParam, floatParam, precision) => {\n      if (escapeSequence) {\n        return '%';\n      }\n      const argPos = /%(\\d+)\\$/.exec(match);\n      const arg = argPos === null ? args[++i] : args[parseInt(argPos[1])];\n      if (arg === undefined) {\n        return '';\n      }\n      if (stringParam) {\n        return arg;\n      }\n      if (intParam) {\n        return parseInt(arg);\n      }\n      if (floatParam) {\n        const dec = precision ? parseInt(precision.substring(1)) : 0;\n        const mult = Math.pow(10, dec);\n        let val = '' + (Math.round(parseFloat(arg) * mult) / mult);\n        const idx = val.indexOf('.');\n        let missing = idx === -1 ? dec : dec - (val.length - idx) + 1;\n        if (missing > 0) {\n          if (idx === -1) {\n            val += '.';\n          }\n          for (; missing > 0; missing--) {\n            val += '0';\n          }\n        }\n        return val;\n      }\n      return '';\n    });\n  }\n\n  /**\n   * getter to retrieve iOs or android mobile platform\n   */\n  export function isMobileOS(): boolean {\n    const win:IWin = window as IWin,\n        browserInfo: any = win.browserDetect();\n      return !(!browserInfo.mobile && !(browserInfo.os.toLowerCase().indexOf('android') !== -1));\n  }\n\n  export function isIOSSafari(): boolean {\n    const win:IWin = window as IWin,\n        browserInfo: any = win.browserDetect();\n    return browserInfo.mobile;\n  }\n\n  export function iosDebugConsole(msg: string): void {\n    let iosConsole: JQuery<HTMLElement> = $('.ios-debug-console', document.body);\n    if (!iosConsole.length) {\n      iosConsole = $(`<p onclick=\"$(this).text('');\" ondblclick=\"$(this).remove();\" class=\"ios-debug-console eh-p eh-block-theme--02-shadow eh-scroll-vertical\" style=\"\n                    position: fixed;\n                    font-size: 10px;\n                    line-height: 12px;\n                    width: 200px;\n                    height: 200px;\n                    z-index: 9999999;\n                    top: 50%;\n                    transform: translate(0, -50%); \n                    left: 50px;\"></p>`);\n      $(document.body).prepend(iosConsole);\n    }\n    iosConsole.text(`${iosConsole.text()} \\n ${msg}`);\n  }\n\n  type offsetDirections = 'offsetTop' | 'offsetLeft';\n\n  export function offsetToTarget(el: HTMLElement, dir: offsetDirections, target: Element): number {\n    if (!target.contains(el)) {\n      return NaN;\n    }\n    let offset: number = 0;\n    const isDirectParent: (parent: Element) => boolean = (parent: Element): boolean => parent === target;\n    const addRecurse: (el: HTMLElement) => void = (el: HTMLElement): void => {\n      offset += el[dir];\n      if (!!el.offsetParent && !isDirectParent(el.offsetParent)) {\n        addRecurse(el.offsetParent as HTMLElement);\n      }\n    };\n    addRecurse(el);\n    return offset;\n  }\n\n  export function offsetTopToBody(el: HTMLElement): number {\n    return offsetToTarget(el, 'offsetTop', document.body);\n  }\n\n  export function offsetLeftToBody(el: HTMLElement): number {\n    return offsetToTarget(el, 'offsetLeft', document.body);\n  }\n\n  export function nodelistToArray(_l: NodeListOf<Element>): HTMLElement[] {\n    const result: HTMLElement[] = [];\n    for (let i = _l.length >>> 0; i--;) {\n      result[i] = _l[i] as HTMLElement;\n    }\n    return result;\n  }\n\n  export const NOOP: () => void = (): void => {};\n\n}\n","namespace eh {\n\n  export class ScrollPage {\n    public static mobileHeaderHight = 60;\n    public static lastScrollPosY: number;\n\n    private static scrollRoot: Element | null;\n    private static setupScrollRoot: () => Element | null = (): Element | null => {\n      // requires polyfill scrolling-element.js\n      return document.scrollingElement;\n    };\n    private static scrollListeners: {(): void}[] = [];\n    private static isWatching: boolean = false;\n\n    static getScrollRoot(): JQuery<Element> {\n      if (!ScrollPage.scrollRoot) {\n        ScrollPage.scrollRoot = ScrollPage.setupScrollRoot();\n      }\n      return $(ScrollPage.scrollRoot as Element);\n    }\n    \n    static getScrollPosition(): number {\n      return ScrollPage.getScrollRoot()?.scrollTop() || 0;\n    }\n\n    static hasScrollChanged(): boolean {\n      return ScrollPage.getScrollPosition() !== ScrollPage.lastScrollPosY;\n    }\n\n    static scrollTo(position: number) {\n      ScrollPage.getScrollRoot()?.scrollTop(position);\n    }\n\n    static scrollLeft(position: number) {\n      ScrollPage.getScrollRoot()?.scrollLeft(position);\n    }\n\n    static scrollToAnimated(position: number, callback?: () => void) {\n      ScrollPage.lastScrollPosY = ScrollPage.getScrollPosition();\n      ScrollPage.getScrollRoot()?.animate({\n        scrollTop: position\n      },400, 'easeInSine', callback);\n    }\n\n    static scrollToLastPosAnimated(callback?: () => void) {\n      ScrollPage.getScrollRoot()?.animate({\n        scrollTop: ScrollPage.lastScrollPosY\n      },400, 'easeInSine', callback);\n    }\n\n    static onScrollChange(): void {\n      ScrollPage.scrollListeners.forEach((_l: () => void): void => _l());\n    }\n\n    static registerChangeListener(listener: () => void): void {\n      if (!ScrollPage.isWatching) {\n        ScrollPage.watch();\n        ScrollPage.isWatching = true;\n      }\n      if (ScrollPage.scrollListeners.indexOf(listener) === -1) {\n        ScrollPage.scrollListeners.push(listener);\n      }\n    }\n\n    static unregisterChangeListener(listener: () => void): void {\n      if (ScrollPage.scrollListeners.indexOf(listener) !== -1) {\n        ScrollPage.scrollListeners.splice(ScrollPage.scrollListeners.indexOf(listener), 1);\n      }\n      if (ScrollPage.isWatching && !ScrollPage.scrollListeners.length) {\n        ScrollPage.unwatch();\n        ScrollPage.isWatching = false;\n      }\n    }\n\n    static watch(): void {\n      const eventParams: any = eh.Modernizr?.passiveeventlisteners ? { passive: true } : {};\n      document.addEventListener('scroll', ScrollPage.onScrollChange, eventParams);\n    }\n\n    static unwatch(): void {\n      document.removeEventListener('scroll', ScrollPage.onScrollChange);\n    }\n\n      /**\n       * crossbrowser convinience method to prevent\n       * scrolling the page while it is covered by window-sized covering\n       * elements like flyouts | overlays | lightboxes...\n       *\n       * @param enabled\n       *\n       * @param bodyFixClassName - optional className we like to apply for sealing the page in the background.\n       *                           default is 'eh-no-scroll--lt-large eh-full-height--lt-large'.\n       *                           by convention <code>bodyFixClassName</code> has the following pattern:\n       *\n       *                           /\\w\\s(\\w*)/ where\n       *                                        - first \\w: disablement of page scrolling e.g. eh-no-scroll\n       *                                        - second \\w*: optional classes to support ios scrolling e.g. eh-full-height\n       *\n       * @param transitionEl     - optional element we need to wait for its transition to be finished.\n       */\n    static setScrollEnabled(\n        enabled: boolean,\n        bodyFixClassName?: string,\n        transitionEl?: JQuery<HTMLElement>\n      ): void {\n      const classNameToSealPage: string = bodyFixClassName ?? 'eh-no-scroll--lt-large eh-full-height--lt-large';\n      const setEnabled: (enabled: boolean) => void = (_e: boolean): void => {\n        /*\n        // locking height of html and body is needed to support mobile safari\n        const browser = window.browserDetect();\n        const mobileSafari: boolean = browser.name === 'safari' && browser.mobile;\n        if (mobileSafari) {\n          $('html, body').toggleClass(classNameToSealPage, !_e);\n        } else {\n          ScrollPage.getScrollRoot().toggleClass(classNameToSealPage.split(' ')[0], !_e);\n        }\n        if (_e && mobileSafari) {\n          ScrollPage.scrollTo(ScrollPage.lastScrollPosY);\n        }\n        */\n\n        ScrollPage.getScrollRoot().toggleClass(classNameToSealPage.split(' ')[0], !_e);\n      };\n      if (transitionEl) {\n        transitionEl.one('transitionend', (): void => {\n          setEnabled(enabled);\n        });\n      } else {\n        setEnabled(enabled);\n      }\n    }\n\n  }\n\n\n}\n","(function() {\n  'use strict';\n\n  var getOptionTree = function($option) {\n    var selectedLevel = $option.data('level'),\n      doBreak = false;\n    if (selectedLevel === undefined) {\n      return $option;\n    }\n    return $option.nextAll('option').filter(function(idx, el) {\n      doBreak = doBreak || ($(el).data('level') || 0) <= selectedLevel;\n      return !doBreak;\n    }).add($option);\n  };\n\n    /**\n     * override due to synthetic events bug in IE\n     * since jquery 3.4.1\n     */\n    var requireObj = $.fn.select2.amd.require([], function() {});\n    var csSearch = requireObj._defined['select2/dropdown/search'];\n    if (!!csSearch && !!csSearch.prototype.bind) {\n        csSearch.prototype.bind = function (decorated, container, $container) {\n            var self = this;\n\n            var resultsId = container.id + '-results';\n\n            decorated.call(this, container, $container);\n\n            this.$search.on('keydown', function (evt) {\n                self.trigger('keypress', evt);\n                self._keyUpPrevented = evt.isDefaultPrevented();\n            });\n\n            // Workaround for browsers which do not support the `input` event\n            // This will prevent double-triggering of events for browsers which support\n            // both the `keyup` and `input` events.\n            this.$search.on('input', function (evt) {\n                // Unbind the duplicated `keyup` event\n                $(this).off('keyup');\n            });\n\n            this.$search.on('keyup input', function (evt) {\n                self.handleSearch(evt);\n            });\n\n            container.on('open', function () {\n                self.$search.attr('tabindex', 0);\n                self.$search.attr('aria-controls', resultsId);\n\n\n                // prevent dispatch focus events in IE11\n                // self.$search.trigger('focus');\n\n                window.setTimeout(function () {\n                    self.$search.trigger('focus');\n                }, 0);\n            });\n\n            container.on('close', function () {\n                self.$search.attr('tabindex', -1);\n                self.$search.removeAttr('aria-controls');\n                self.$search.removeAttr('aria-activedescendant');\n\n                self.$search.val('');\n                self.$search.trigger('blur');\n            });\n\n            container.on('focus', function () {\n                if (!container.isOpen()) {\n                    self.$search.trigger('focus');\n                }\n            });\n\n            container.on('results:all', function (params) {\n                if (params.query.term == null || params.query.term === '') {\n                    var showSearch = self.showSearch(params);\n\n                    if (showSearch) {\n                        self.$searchContainer.removeClass('select2-search--hide');\n                    } else {\n                        self.$searchContainer.addClass('select2-search--hide');\n                    }\n                }\n            });\n\n            container.on('results:focus', function (params) {\n                if (params.data._resultId) {\n                    self.$search.attr('aria-activedescendant', params.data._resultId);\n                } else {\n                    self.$search.removeAttr('aria-activedescendant');\n                }\n            });\n        };\n    }\n\n\n\n\n  // // Filter Lists\n  $.fn.select2.amd.define('cs.FilterMultiSelectionDecorator', [], function() {\n\n    var FilterMultiSelectionDecorator = function(decoratedFn, $element, options) {\n        decoratedFn.call(this, $element, options);\n        this.defaultHeight = 28;\n      };\n\n    FilterMultiSelectionDecorator.prototype.render = function(decoratedFn) {\n      var $rendered = decoratedFn.call(this);\n      $rendered.append('<span class=\"select2-selection__arrow\" role=\"presentation\"><b role=\"presentation\"></b></span>');\n      return $rendered;\n    };\n\n    FilterMultiSelectionDecorator.prototype.update = function(decoratedFn, data) {\n      decoratedFn.call(this, data);\n      $('.select2-selection__choice__remove', this.$selection).remove();\n      if (this.$selection.height() > this.defaultHeight) {\n        var label = eh.formatString(this.options.get('labelSelectionCondensed') || '', data.length, $('option[value!=\"\"]', this.$element).length);\n        $('.select2-selection__rendered .select2-selection__choice', this.$selection).first().html(label).siblings('.select2-selection__choice').remove();\n      }\n    };\n\n    return FilterMultiSelectionDecorator;\n  });\n  \n  \n  $.fn.select2.amd.define('cs.NoOpSelectionAdapter', ['select2/utils'], function(S2Utils) {\n    \n    var NoOpSelection = function ($element, options) {\n      this.$element = $element;\n      this.options = options;\n    }\n  \n    S2Utils.Extend(NoOpSelection, S2Utils.Observable);\n  \n    NoOpSelection.prototype.render = function () {\n      var $selection = $();\n      this.$selection = $selection;\n      return $selection;\n    };\n  \n    NoOpSelection.prototype.bind = function (container, $container) {\n    };\n  \n    NoOpSelection.prototype.position = function ($selection, $container) {\n    };\n  \n    NoOpSelection.prototype.destroy = function () {\n    };\n  \n    NoOpSelection.prototype.update = function (data) {\n    };\n  \n    return NoOpSelection;\n  });\n  \n  \n  $.fn.select2.amd.define('cs.FilterMultiSelectResultDecorator', [], function() {\n    var FilterMultiSelectResultDecorator = function(decoratedFn, $element, options, data) {\n      decoratedFn.call(this, $element, options, data);\n      this.options = options;\n    };\n  \n    FilterMultiSelectResultDecorator.prototype.bind = function(decoratedFn, select2, $container) {\n      var self = this;\n      decoratedFn.call(self, select2, $container);\n      \n      // watch change of select element\n      select2.$element.on('change', function($event) {\n        var $select = $($event.currentTarget);\n        var selectedValues = Array.isArray($select.val()) ? $select.val() : [$select.val()];\n        $('input[type=checkbox]', $container).each(function(_index, el) {\n          var $cb = $(el);\n          var checked = selectedValues.indexOf($cb.val()) !== -1;\n          $cb.prop('checked', checked);\n        });\n      });\n    };\n    \n    FilterMultiSelectResultDecorator.prototype.template = function(decoratedFn, result, $container) {\n      var self = this;\n      decoratedFn.call(self, result, $container);\n      \n      $(self.$results).addClass('eh-product-filter--items eh-p-b');\n      $($container).addClass('eh-product-filter--item');\n      \n      // prevent native checkbox behaviour, selection is handled by select2\n      $('input[type=checkbox]', $container).on('click', function($event) {\n        $event.preventDefault();\n        $event.stopImmediatePropagation();\n      });\n\n    };\n\n    return FilterMultiSelectResultDecorator;\n  });\n\n\n  $.fn.select2.amd.define('cs.FilterMultiSelectCloseOnSelectDecorator', [], function() {\n    var dataKey = 'cs.FilterMultiSelectCloseOnSelectDecorator_restoreOpenState';\n\n    var FilterMultiSelectCloseOnSelectDecorator = function(decoratedFn, $element, options) {\n      decoratedFn.call(this, $element, options);\n    };\n\n    FilterMultiSelectCloseOnSelectDecorator.prototype.bind = function(decoratedFn, container, $container) {\n      var self = this;\n\n      decoratedFn.call(self, container, $container);\n\n      container.on('select', function(evt) {\n        self._selectTriggered(evt);\n      });\n\n      container.on('unselect', function(evt) {\n        self._selectTriggered(evt);\n      });\n\n      if (!this.options.options.closeOnSelect) {\n        var openState = $(window).data(dataKey);\n        if (openState && openState[self.$element.attr('id')] === true) {\n          delete openState[self.$element.attr('id')];\n          $(window).data(dataKey, openState);\n            window.setTimeout(function() {\n              self.trigger('query', {});\n            }, 0);\n          }\n      }\n    };\n\n    FilterMultiSelectCloseOnSelectDecorator.prototype._selectTriggered = function() {\n      var openState = $(window).data(dataKey) || {};\n      openState[this.$element.attr('id')] = true;\n      $(window).data(dataKey, openState);\n      if (this.options.options.closeOnSelect) {\n        this.trigger('close', {});\n      }\n    };\n\n    return FilterMultiSelectCloseOnSelectDecorator;\n  });\n\n\n  $.fn.select2.amd.define('cs.FilterMultiSelectHierarchicalDecorator', [], function() {\n\n    var FilterMultiSelectHierarchicalDecorator = function(decoratedFn, $element, options) {\n      decoratedFn.call(this, $element, options);\n    };\n\n    FilterMultiSelectHierarchicalDecorator.prototype.bind = function(decoratedFn, container, $container) {\n      var self = this;\n\n      decoratedFn.call(self, container, $container);\n\n      container.on('selecting', function(evt) {\n        self._clickOnCaret(evt);\n      });\n\n      container.on('unselecting', function(evt) {\n        self._clickOnCaret(evt);\n      });\n    };\n\n    FilterMultiSelectHierarchicalDecorator.prototype._clickOnCaret = function(event) {\n      if (event.params.args.originalEvent) {\n        var $target = $(event.params.args.originalEvent.target);\n        if ($target.hasClass('caret')) {\n          event.preventDefault();\n          var currentId = event.params.args.data.id;\n          var $option = self.$element.find('option[value=\"' + currentId + '\"]'),\n            selectedLevel = $option.data('level');\n\n          var show = !$target.closest('li').toggleClass('collapsed').hasClass('collapsed');\n          getOptionTree($option).not($option).each(function() {\n            var $o = $(this),\n              level = $o.data('level');\n            self.$results.find('input[value=\"' + $o.val() + '\"]').closest('li').toggle(level === selectedLevel + 1 ? show : false).toggleClass('collapsed', true);\n          });\n\n          self.dropdown._positionDropdown();\n        }\n      }\n    };\n\n    return FilterMultiSelectHierarchicalDecorator;\n  });\n  \n  \n  $.fn.select2.amd.define('cs.DropDownSearchPromptDecorator', [], function() {\n    \n    var DropDownSearchPromptDecorator = function(decoratedFn, $element, options) {\n      decoratedFn.call(this, $element, options);\n    };\n  \n    DropDownSearchPromptDecorator.prototype.render = function(decorated) {\n      var $rendered = decorated.call(this);\n      return $rendered;\n    }\n    \n    return DropDownSearchPromptDecorator;\n  });\n  \n})();\n","namespace eh {\n\n    class EH_LOGIN_BUTTON_COMMANDS {\n        static LOGIN: string = 'login';\n        static LOGOUT: string = 'logout';\n    }\n\n    export class EhApi implements EhExternalApi {\n\n        private static _instance: EhApi;\n\n        private constructor() {}\n\n        public static getInstance(): EhApi {\n            if (!EhApi._instance) {\n                EhApi._instance = new EhApi();\n            }\n            return EhApi._instance;\n        }\n\n        public setLogin(name?: string): void {\n            $('.eh-login-button').ehLoginButton(EH_LOGIN_BUTTON_COMMANDS.LOGIN, name);\n        }\n\n        public clearLogin(): void {\n            $('.eh-login-button').ehLoginButton(EH_LOGIN_BUTTON_COMMANDS.LOGOUT);\n        }\n\n        public getScrollRoot(): JQuery<Element> {\n            return eh.ScrollPage.getScrollRoot();\n        }\n\n        public myDocumentsReady(): void {\n            eh.MyDocumentsProxy.getInstance().markReady();\n        }\n\n        public nebpReady(): void {\n            eh.NebpProxy.getInstance().markReady();\n        }\n\n        /**\n         * Called by the external NEBP script to drive the header cart-restore progress\n         * indicator. Sets the data-attributes that EhCartController observes (which then\n         * renders the ring + tooltip); passing loading=false ends the restore and hides them.\n         */\n        public setCartRestoreProgress(current: number, total: number, loading: boolean): void {\n            document.querySelectorAll<HTMLElement>('.ehel-cart').forEach((cart: HTMLElement) => {\n                cart.dataset['amountOfItems'] = String(total);\n                cart.dataset['progress'] = String(current);\n                cart.dataset['loading'] = String(loading);\n            });\n        }\n\n        // public productGuideReady(): void {\n        //     eh.ProductGuideProxy.getInstance().markReady();\n        // }\n\n    }\n\n    export interface EhExternalApi {\n        setLogin: (name?: string) => void;\n        clearLogin: () => void;\n        getScrollRoot: () => JQuery<Element>;\n        myDocumentsReady: () => void;\n        nebpReady: () => void;\n        setCartRestoreProgress: (current: number, total: number, loading: boolean) => void;\n        //productGuideReady: () => void;\n    }\n\n}","namespace eh {\n\n\n    export class Breakpoint {\n\n        /*\n        VARIABLE DEFINITIONS:\n        =====================\n        @breakpoint-large: 1280px;    // --\n        @breakpoint-medium: 1025px;   // large      expression: min\n        @breakpoint-small: 769px;     // medium     expression: max -1\n        @breakpoint-x-small: 481px;   // small      expression: max -1\n        @breakpoint-ultra-small: 350px; // x-small  expression: max -1\n        */\n\n        public isMobile: boolean;\n        static MOBILE_THRESHOLD: number = 1025;\n\n        constructor (\n            public id: string,\n            // active max-bound\n            public threshold: number\n        ) {\n            this.isMobile = threshold < Breakpoint.MOBILE_THRESHOLD;\n        }\n\n        public isInRange(range: number): boolean {\n            return range > this.threshold\n        }\n    }\n\n    export enum BreakPointViewType {\n        MOBILE,\n        DESKTOP\n    }\n\n    export class Breakpoints {\n\n        private _listener: {(old: Breakpoint, current: Breakpoint): void;}[] = [];\n        private _viewTypeListener: {(viewType: BreakPointViewType): void;}[] = [];\n        private _resizeListener: {(): void;}[] = [];\n        private _currentBreakpoint: Breakpoint;\n        private _isMobile: boolean;\n        private _ticking: boolean = false;\n        private _initialized: boolean = false;\n        private _currentViewType: BreakPointViewType;\n\n        // list of available breakpoints\n        private _breakpoints: Breakpoint[] = [\n            new Breakpoint('x-large', 1440),\n            new Breakpoint('large', 1025),\n            new Breakpoint('medium', 769),\n            new Breakpoint('small', 481),\n            new Breakpoint('x-small', 350)\n        ];\n\n        private static _instance: Breakpoints;\n\n        private constructor() {\n            window.addEventListener('load', this.invalidate);\n            window.addEventListener('resize', this.invalidate);\n            this.invalidate();\n        }\n\n        public static getInstance(): Breakpoints {\n            if (!Breakpoints._instance) {\n                Breakpoints._instance = new Breakpoints();\n            }\n            return Breakpoints._instance;\n        }\n\n        public get initialized(): boolean {\n            return this._initialized;\n        }\n\n        public get isMobile(): boolean {\n            return this._isMobile;\n        }\n\n        public get viewType(): BreakPointViewType {\n            return this._currentViewType;\n        }\n\n        public registerChangeListener(listener: (old: Breakpoint, current: Breakpoint) => void): void {\n            this._listener.push(listener);\n            if (this._initialized && !!this._currentBreakpoint) {\n                listener(this._currentBreakpoint, this._currentBreakpoint);\n            }\n        }\n\n        public unregisterChangeListener(listener: (old: Breakpoint, current: Breakpoint) => void): void {\n            const idx: number = this._listener.indexOf(listener);\n            if (idx > -1) {\n                this._listener.splice(idx, 1);\n            }\n        }\n\n        public registerViewTypeListener(listener: (viewType: BreakPointViewType) => void): void {\n            this._viewTypeListener.push(listener);\n            if (this._initialized && !isNaN(this._currentViewType)) {\n                this.dispatchViewTypeChanged(this._currentViewType);\n            }\n        }\n\n        public unregisterViewTypeListener(listener: (viewType: BreakPointViewType) => void): void {\n            const idx: number = this._viewTypeListener.indexOf(listener);\n            if (idx > -1) {\n                this._viewTypeListener.splice(idx, 1);\n            }\n        }\n\n        public registerResizeListener(listener: () => void): void {\n            this._resizeListener.push(listener);\n        }\n\n        public unregisterResizeListener(listener: () => void): void {\n            const idx: number = this._resizeListener.indexOf(listener);\n            if (idx > -1) {\n                this._resizeListener.splice(idx, 1);\n            }\n        }\n\n        private invalidate: () => void = (): void => {\n            if (!this._ticking) {\n                window.requestAnimationFrame((): void => {\n                    this.invalidateNow();\n                    this._ticking = false;\n                });\n                this._ticking = true;\n            }\n        };\n\n        private invalidateNow(): void {\n\n            const windowWidth: number = window.innerWidth;\n            let lastValidBreakpoint: Breakpoint = this._breakpoints[this._breakpoints.length - 1];\n\n            for (let i: number = 0; i < this._breakpoints.length; i++) {\n                const _p: Breakpoint = this._breakpoints[i];\n                if (windowWidth >= _p.threshold) {\n                    lastValidBreakpoint = _p;\n                    break;\n                }\n            }\n\n            if (lastValidBreakpoint !== this._currentBreakpoint) {\n                this.dispatchBreakpointChanged(this._currentBreakpoint, lastValidBreakpoint);\n                this._currentBreakpoint = lastValidBreakpoint;\n            }\n\n            if (lastValidBreakpoint.isMobile !== this._isMobile) {\n                this._currentViewType = lastValidBreakpoint.isMobile ? BreakPointViewType.MOBILE : BreakPointViewType.DESKTOP;\n                this._isMobile = lastValidBreakpoint.isMobile;\n                this.dispatchViewTypeChanged(this._currentViewType);\n            }\n\n            if (this._resizeListener.length) {\n                this.dispatchSizeChanged();\n            }\n\n            if (!this._initialized) {\n                this._initialized = true;\n            }\n\n        }\n\n        private dispatchBreakpointChanged(old: Breakpoint, current: Breakpoint): void {\n            this._listener.forEach(_l => _l(old, current));\n        }\n\n        private dispatchViewTypeChanged(viewType: BreakPointViewType): void {\n            this._viewTypeListener.forEach(_l => _l(viewType));\n        }\n\n        private dispatchSizeChanged(): void {\n            this._resizeListener.forEach(_l => _l());\n        }\n\n    }\n\n}\n\n","namespace eh {\n\n  /**\n   * Restore-cart progress indicator for the header cart(s). While the external NEBP shop\n   * integration restores a saved cart it sets `data-loading` / `data-progress` /\n   * `data-amountOfItems` on the `.ehel-cart` element(s); this controller reacts via a\n   * MutationObserver to draw the conic-gradient progress ring (`--ehel-cart-value`), toggle\n   * the `.is-loading` state and rewrite the desktop tooltip counts. Ported from the\n   * endress-webcomponents `eh-navigation` EhCart.controller.\n   */\n  export class EhCartController {\n\n    public static readonly CART_CLASSNAME = 'ehel-cart';\n    public static readonly CART_PROGRESS_CLASSNAME = 'ehel-cart--progress';\n    public static readonly TOOLTIP_CLASSNAME = 'ehel-tooltip-html';\n    public static readonly TOOLTIP_TEXT_CLASSNAME = 'ehel-tooltip--text';\n\n    static init($base: JQuery<HTMLElement>): void {\n      $base.toArray().forEach((base: HTMLElement) => new EhCartController(base));\n    }\n\n    private readonly carts: NodeListOf<HTMLElement>;\n    private readonly progress: NodeListOf<HTMLElement>;\n    private readonly tooltipsText: NodeListOf<HTMLElement>;\n    private vm: EhCartViewModel | null = null;\n\n    constructor(private readonly base: HTMLElement) {\n      this.carts = this.base.querySelectorAll<HTMLElement>(`.${EhCartController.CART_CLASSNAME}`);\n      this.progress = this.base.querySelectorAll<HTMLElement>(`.${EhCartController.CART_CLASSNAME} .${EhCartController.CART_PROGRESS_CLASSNAME}`);\n      this.tooltipsText = this.base.querySelectorAll<HTMLElement>(`.${EhCartController.CART_CLASSNAME} .${EhCartController.TOOLTIP_CLASSNAME} .${EhCartController.TOOLTIP_TEXT_CLASSNAME}`);\n\n      // The tooltip exists on the desktop cart only, so an empty tooltip list is valid;\n      // we only require at least one cart with a progress ring to observe.\n      if (this.carts.length === 0 || this.progress.length === 0) {\n        return;\n      }\n\n      this.vm = new EhCartViewModel(this.carts, this.progress, this.tooltipsText);\n      this.registerControls();\n    }\n\n    private registerControls(): void {\n      const mutationObserver = new MutationObserver(() => this.vm?.onCartChange());\n\n      this.carts.forEach((cart: HTMLElement) => {\n        // NB: cart.dataset['amountOfItems'] writes the attribute `data-amount-of-items`\n        // (hyphenated), so the filter must use that spelling to catch a count-only change.\n        mutationObserver.observe(cart, { attributeFilter: ['data-loading', 'data-amount-of-items', 'data-progress'] });\n      });\n    }\n  }\n\n  class EhCartViewModel {\n\n    /**\n     * The translated tooltip template(s), captured once before any substitution, e.g.\n     * \"{current} of {total} products loaded\". Substituting numbers into textContent\n     * destroys the placeholders, so we always re-render from the stored template rather\n     * than from the current (already-substituted) text.\n     */\n    private readonly tooltipTemplates: string[];\n\n    constructor(\n      private readonly carts: NodeListOf<HTMLElement>,\n      private readonly progress: NodeListOf<HTMLElement>,\n      private readonly tooltipsText: NodeListOf<HTMLElement>,\n    ) {\n      this.tooltipTemplates = Array.from(this.tooltipsText).map((text: HTMLElement) => text.textContent ?? '');\n    }\n\n    public onCartChange(): void {\n      const progress = +(this.carts[0].dataset['progress'] ?? 0);\n      const amountOfItems = +(this.carts[0].dataset['amountOfItems'] ?? 0);\n\n      if (isNaN(progress) || isNaN(amountOfItems)) {\n        return;\n      }\n\n      const progressValue = amountOfItems > 0 ? Math.min((progress / amountOfItems) * 100, 100) : 0;\n\n      this.carts.forEach((cart: HTMLElement) => {\n        const loading = cart.dataset['loading'] === 'true';\n        cart.classList.toggle('is-loading', loading);\n      });\n\n      this.progress.forEach((ring: HTMLElement) => {\n        ring.style.cssText = '--ehel-cart-value:' + progressValue;\n      });\n\n      this.tooltipsText.forEach((text: HTMLElement, index: number) => {\n        text.textContent = this.tooltipTemplates[index]\n          .replace(/\\{current\\}/g, progress + '')\n          .replace(/\\{total\\}/g, amountOfItems + '');\n      });\n\n      // Item-count badge: show the basket total (capped at \"99+\") when > 0, hide when 0.\n      // Scoped to the cart badges only — not the separate .is-logged-in login-button badge.\n      const badgeText = amountOfItems >= 100 ? '99+' : String(amountOfItems);\n      this.carts.forEach((cart: HTMLElement) => {\n        cart.querySelectorAll<HTMLElement>('.amountOfItems').forEach((badge: HTMLElement) => {\n          if (amountOfItems > 0) {\n            badge.textContent = badgeText;\n            badge.style.display = 'block';\n          } else {\n            badge.textContent = '';\n            badge.style.display = 'none';\n          }\n        });\n      });\n    }\n  }\n}\n","namespace eh {\n\n  export class Constants {\n    public static readonly VISIBILITY_CHANGE: string = 'eh-visibility-change';\n  }\n\n  export class TAB_EVENTS {\n    public static readonly TAB_CHANGE: string = 'eh-tab-on-change';\n    public static readonly TAB_CONTENT_SHOWN: string = 'eh-tab-on-content-shown';\n    public static readonly TAB_ACTIVATE_REQUEST: string = 'eh-tab-on-activate-request';\n  }\n\n  export class FILTER_BUTTON_EVENTS {\n    public static readonly STICKY_CHANGE: string = 'eh-filter-button-sticky-change';\n  }\n\n  export class NAV_FLYOUT_EVENTS {\n    public static readonly FLYOUT_EXPANDED: string = 'eh-flyout-expanded';\n  }\n  export class VPAGE_EVENTS {// 5.15.1 overlay and alike trigger track 'data-trck-vpage'\n    public static readonly VPAGE_OPENED: string = 'eh-vpage-opened';\n    public static readonly VPAGE_CLOSED: string = 'eh-vpage-closed';\n    public static readonly DRAWER_OPENED: string = 'eh-drawer-opened';\n    public static readonly DRAWER_CLOSED: string = 'eh-drawer-closed';\n    public static readonly TAB_ACTIVATE: string = 'eh-tab-active';\n    public static readonly VTAB_ACTIVATE: string = 'eh-vtab-active';\n    public static readonly SVG_SHOWN: string = 'eh-svg-shown';\n  }\n\n  export enum UIStateValue {\n    INIT = \"ui-init\", \n    OPENED = \"ui-opened\",\n    CLOSED = \"ui-closed\",\n    ENABLED = \"ui-enabled\",\n    DISABLED = \"ui-disabled\"\n  }\n\n  export interface UIStateProperty {\n    readonly property: string;\n    readonly maxDispatch: number;\n  }\n\n  export class UIStateChanged {\n    public static readonly uiStateMarketHeader: Readonly<UIStateProperty>  =  {property: 'marketHeader', maxDispatch: 1 };\n    public static readonly uiStateMainNav: Readonly<UIStateProperty>  =  {property: 'mainNav', maxDispatch: 1 };\n    public static readonly uiStateSearchPanel: Readonly<UIStateProperty>  =  {property: 'searchPanel', maxDispatch: 1 };\n    private dispatchCount: number = 0;\n    constructor(\n      public context: HTMLElement,\n      public property: UIStateProperty,\n      public state: UIStateValue\n    ) {\n    }\n\n    public getDispatchCount():number {\n      return this.dispatchCount;\n    }\n\n    /* Adding counter to dispatch loop; allows to have sequential reactions to changes */\n    nextDispatch():boolean {\n      this.dispatchCount += 1;\n      return this.property.maxDispatch >= this.dispatchCount;\n    }\n  }\n\n  export class UIObservableSupport {\n    private _listener: {(last: UIStateChanged, current: UIStateChanged): void;}[] = [];\n    private lastState: UIStateChanged | undefined; \n    constructor(\n      public readonly stateProp: UIStateProperty\n    ) {\n    }\n\n    init(context: HTMLElement) {\n      if(!this.lastState && !!context) {\n        this.lastState = new UIStateChanged(context, this.stateProp, UIStateValue.INIT);\n        //console.log('uiSupport / ', this.stateProp.property, ': ', this.lastState.state);\n      }\n    }\n\n    dispatch(value: UIStateValue, ctx?: HTMLElement): void {\n      if(this.lastState && value != this.lastState.state) {\n        let last: UIStateChanged = this.lastState;\n        let chg = new UIStateChanged(ctx || this.lastState.context, this.stateProp, value);\n        while(chg.nextDispatch()) {\n          //console.log('uiSupport / ', this.stateProp, '[',chg.getDispatchCount(), ']: ', last.state, ' -> ', value);\n          this._listener.forEach(_l => _l(last, chg));\n        }\n        this.lastState = chg;\n      }\n    }\n\n    public registerUIStateListener(listener: (last: UIStateChanged, current: UIStateChanged) => void): void {\n      this._listener.push(listener);\n      if (this.lastState) {\n        listener(this.lastState, this.lastState);\n      }\n    }\n\n    public unregisterUIStateListener(listener: (last: UIStateChanged, current: UIStateChanged) => void): void {\n        const idx: number = this._listener.indexOf(listener);\n        if (idx > -1) {\n            this._listener.splice(idx, 1);\n        }\n    }\n\n  }\n}\n","namespace eh {\n  \n  export class CookieDisclaimer {\n\n    static init($base: JQuery<HTMLElement>): void {\n\n      const _FOOTER_SELECTOR: string = '.eh-footer';\n      const $component: JQuery<HTMLElement> = $('.marker-cookie-disclaimer', $base);\n      var cookieVal = eh.getCookie('euhcookiedisclaimer');\n      if(cookieVal == '1') {\n        eh.deleteCookie('euhcookiedisclaimer');\n      }\n      const cookieFound = eh.getCookie('euhcookiedisclaimer') === '2';\n      var $consentMgmt = $('.eh-navigation, .eh-footer', $base);\n      $('.marker-disclaimer-close', $consentMgmt).on('click', ($event) => {\n        if (!cookieFound) {\n          eh.setGlobalCookie('euhcookiedisclaimer', '2', 365, true, 'None');\n          $component.replaceWith('');\n          const $rep = $('.js-disclaimer-close', $component).not('.js-trigger-consent');\n          $rep.addClass('marker-disclaimer-close');\n          eh.Tracking.injectTrackingEvent({}, $rep);\n          $rep.removeClass('marker-disclaimer-close');\n        }\n        if ($($event.currentTarget).hasClass('js-trigger-consent')) {\n          window.utag?.gdpr?.showConsentPreferences();\n        }\n      });\n      if (cookieFound) {\n        $component.replaceWith('');\n        return;\n      }\n      $component.removeClass('eh--hide');\n      $('.js-disclaimer-close', $component).on('click', (ev) => {\n        eh.setGlobalCookie('euhcookiedisclaimer', '2', 365, true, 'None');\n        $component.replaceWith('');\n        if ($(ev.currentTarget).hasClass('js-trigger-consent')) {\n          window.utag?.gdpr?.showConsentPreferences();\n        }\n        ev.preventDefault();\n        //@ts-ignore\n        if (typeof STICKY_EVENTS !== 'undefined' && STICKY_EVENTS.DOM_MUTATION) {\n          //@ts-ignore\n          $(':root').trigger(STICKY_EVENTS.DOM_MUTATION);\n        }\n      });\n      $component.selfOrFind('.disabled').removeClass('disabled');\n    }\n\n  }\n\n}\n","namespace eh {\n  \n  export class CountryDetector {\n    $countrySelect : JQuery<HTMLElement>;\n    $languageSelect : JQuery<HTMLElement>;\n    $redirectButton : JQuery<HTMLElement>;\n    selectedCountry : string = '';\n    selectedLanguage : string = '';\n\n    static init($base: JQuery<HTMLElement>): void {\n      $('.eh-market-chooser', $base).each((_index, element) => {\n        const $marketChooser = $(element),\n          $select = $('.go-to-country-select', $marketChooser),\n          $button = $('.go-to-country-bt', $marketChooser),\n          handleCountrySelection = () => {\n            const $selectOption = $select.find('option:selected');\n            $button.attr('href', $selectOption.data('href') || '#');\n            $button.attr('data-cs-tracking-subtype', $selectOption.data('csTrackingSubtype'));\n          }\n        ;\n        handleCountrySelection();\n        $select.on('change', handleCountrySelection);\n      });\n      \n      // handle detector      \n      if ($base.find('#countrySiteSwitch').length === 1) {\n        const prefix = $base.find('#countrySiteSwitch').data('csPrefix') || 'ii';\n        if (getCookie(prefix + '-countrychooser-shown') !== '') {\n          return;\n        }\n        if ($base.find('.eh-country-detection')) {\n          // on overlay open init logic\n          new CountryDetector($base, prefix);\n        }\n        // on pageload trigger open in overlay\n        const msg = new Message('*:open-id');\n        msg.putParam('title', $base.find('#countrySiteSwitch').data('heading'));\n        msg.putParam('id', '#countrySiteSwitch');\n        window.postMessage(msg, '*');\n      } \n    }\n\n    constructor(readonly $base: JQuery<HTMLElement>, readonly prefix: string) {\n      const $countryDetection: JQuery<HTMLElement> = $base.find('.eh-country-detection');\n      this.$countrySelect = $countryDetection.find('select#country');\n      this.$languageSelect = $countryDetection.find('select#language');\n      this.$redirectButton = $countryDetection.find('.js-go-country-redirect');\n\n      this.$countrySelect.on('change', () => {\n        const t = this.selectedCountry;\n        this.selectedCountry = CountryDetector.getVal(this.$countrySelect);\n        if (t !== this.selectedCountry) {\n          this.updateState(true);\n        }\n      });\n\n      this.$languageSelect.on('change', () => {\n        const t = this.selectedLanguage;\n        this.selectedLanguage = CountryDetector.getVal(this.$languageSelect);\n        if(t !== this.selectedLanguage) {\n          this.updateState(false);\n        }\n      });\n\n      this.$redirectButton.on('click', () => {\n        if (this.selectedCountry) {\n          const parts = [this.selectedCountry]\n          if (this.selectedLanguage) {\n            parts.unshift(this.selectedLanguage);\n          }\n          setCookie('ii-country-redirect', parts.join('_'), 90, false, 'Lax');\n          this.rememberCountryChooserShown();\n        }\n      });\n  \n      $countryDetection.one(eh.Overlay.EventIdPreClose, () => {\n        this.rememberCountryChooserShown();\n      });\n      \n      this.$countrySelect.trigger('change');\n    }\n    \n    private rememberCountryChooserShown() {\n      setCookie(this.prefix + '-countrychooser-shown', '1', 0, false, 'Lax');\n    }\n    \n    private updateState(reinit:boolean): void {\n      const countryOption = this.$countrySelect.find('option[value=\"'+this.selectedCountry+'\"]');\n      const locales = countryOption.data('locales') || '';\n      const ls = locales.split(',');\n      if(ls.length == 1) {\n        this.selectedLanguage = ls[0];\n      } else {\n        if(ls.indexOf(this.selectedLanguage) < 0) {\n          this.selectedLanguage = '';\n        }\n      }\n      if(this.selectedLanguage.length === 0) {\n        let doit = true;\n        if(this.$languageSelect.data('locales')) {\n          let prefLs = this.$languageSelect.data('locales').split(',');\n          if(prefLs) {\n            prefLs.forEach((elP:string) => {\n              ls.forEach((elL:string) => {\n                if(doit && elL === elP) {\n                  this.selectedLanguage = elL;\n                  doit = false;\n                }\n              });\n            });\n          }\n        }\n        if(doit) {\n          this.selectedLanguage = ls[0];\n        }\n      }\n      this.$languageSelect.parent('.eh-form-row').removeClass('eh--hide');\n      let count = 0;\n      this.$languageSelect.find('option').each((idx, el) => {\n        let $el = $(el);\n        if(ls.indexOf($el.val()) > -1) {\n          $el.removeClass('eh--hide');\n          $el.removeAttr('disabled').removeProp('disabled');\n          count++;\n        } else {\n          $el.addClass('eh--hide');\n          $el.prop('disabled', true);\n        }\n        $el.prop('selected', this.selectedLanguage === $el.val())\n      });\n      if(count < 2) {\n        this.$languageSelect.addClass(\"eh--hide\");\n        this.$languageSelect.parents(\".eh-form-row\").addClass(\"eh--hide\");\n      } else {\n        this.$languageSelect.removeClass(\"eh--hide\");\n        this.$languageSelect.parents(\".eh-form-row\").removeClass(\"eh--hide\");\n      }\n      if(reinit) {\n        this.$languageSelect.trigger('select2:csReinit');\n      }\n      let languageOption = this.$languageSelect.find('option[value=\"'+this.selectedLanguage+'\"]');\n\n      let link = languageOption.data('href') || countryOption.data('link') || window.location.href;\n      const qps = URLHelper.buildQueryParamMap(URLHelper.getQueryString(link));\n      const MAGIC_LOCALE_URL_PLACEHOLDER = 'LOCL';\n      if (link.indexOf(MAGIC_LOCALE_URL_PLACEHOLDER) !== -1) {\n        link = link.replace(new RegExp(MAGIC_LOCALE_URL_PLACEHOLDER, 'g'), encodeURI(this.selectedLanguage));\n      }\n      else {\n        if (!countryOption.data('link') && this.selectedCountry) {\n          qps['ii-country'] = this.selectedCountry;\n        }\n      }\n      if (this.selectedLanguage) {\n        qps['locale'] = this.selectedLanguage;\n      }\n      link = URLHelper.buildUrl(link, URLHelper.buildQueryString(qps));\n      this.$redirectButton.attr('href', link);\n  }\n\n\n    private static getVal(sel: JQuery<HTMLElement>):string {\n      if(sel.val()) {\n        return ''+sel.val();\n      }\n      return '';\n    }\n  }\n}","namespace eh {\n  \n  export class DatePicker {\n    \n    static init($base: JQuery<HTMLElement>): void {\n      DatePicker.initializeDatePicker($base);\n    }\n    \n    private static initializeDatePicker($base: JQuery<HTMLElement>): void {\n      $(`.${DatePicker.CLS_MARKER_DATEPICKER}`, $base).each((_index, el) => {\n        new DatePicker($(el));\n      });\n      // hide picker on scroll events\n      eh.ScrollPage.getScrollRoot().on('scroll', () => {\n        if (document.activeElement === null) {\n          return;\n        }\n        const $el = $(document.activeElement);\n        if ($el.hasClass('hasDatepicker')) {\n          $el.trigger('blur');\n          $.datepicker._hideDatepicker();\n        }\n      });\n    }\n    \n    public static readonly CLS_MARKER_DATEPICKER = 'marker-dp';\n    public static readonly CLS_MARKER_DATEPICKER_CONTROL = 'marker-dp-control';\n    private static readonly CLS_MARKER_DATEPICKER_DISPLAY = 'marker-dp-display';\n    private static readonly CLS_MARKER_DATEPICKER_PARENT = 'marker-dp-parent';\n    private static readonly CLS_TRIGGER_DATEPICKER_RESET = 'trigger-dp-reset';\n    \n    private readonly $parent: JQuery<HTMLElement>;\n    private readonly $inputField: JQuery<HTMLElement>;\n    private readonly $resetButton: JQuery<HTMLElement>;\n    \n    constructor(private readonly $dp: JQuery<HTMLElement>) {\n      this.$parent = $dp.closest(`.${DatePicker.CLS_MARKER_DATEPICKER_PARENT}`);\n      this.$inputField = this.findInputField($dp.data('backingFieldName'));\n      $('.trigger-dp-open', this.$parent).on('click', $event => {\n        $event.preventDefault();\n        this.$inputField.trigger('focus');\n      });\n      this.$resetButton = this.connectResetButton();\n      let opts = $.extend({\n        'maxDate': $dp.data('last'),\n        'minDate': $dp.data('first'),\n        'dateFormat': $dp.data('dateFormat'),\n        'onSelect': (newValue: string) => {\n          this.$inputField.val(newValue);\n          $(`.${DatePicker.CLS_MARKER_DATEPICKER_DISPLAY}`, this.$parent).text(newValue);\n          this.$resetButton.toggle(!!newValue);\n          this.$inputField.trigger('change');\n        },\n        'beforeShow': this.handleLayout,\n        'showOtherMonths': true,\n        'selectOtherMonths': true,\n        'showAnim': false,\n        'firstDay': 1,\n      }, $dp.data('datePickerLocalization') || {})\n      ;\n      if (this.$inputField.length === 1) {\n        opts.defaultDate = this.$inputField.val();\n      }\n      else {\n        opts.defaultDate = $dp.val();\n        this.$resetButton.toggleClass('eh--hide', !!$dp.val());\n      }\n      $dp.datepicker(opts);\n    }\n  \n    private findInputField(fieldName: string | undefined) {\n      let $result: JQuery<HTMLElement> = this.$dp;\n      this.$parent.find('input').each((_index, el) => {\n        const $input = $(el), name = $input.prop('name') || '', i = name.indexOf(fieldName);\n        if (i === 0 || i === name.indexOf('.') + 1) {\n          $result = $input;\n          return false;\n        }\n      });\n      return $result;\n    };\n    \n    private connectResetButton() {\n      return $(`.${DatePicker.CLS_TRIGGER_DATEPICKER_RESET}`, this.$parent)\n        .on('click', () => {\n          this.$inputField.val('');\n          this.$inputField.trigger('change');\n      });\n    }\n\n    private handleLayout = (input: HTMLInputElement, inst: {dpDiv: JQuery<HTMLElement>}): void => {\n      requestAnimationFrame((): void => {\n        const gutter: number = 16;\n        let pageOffset: number = ScrollPage.getScrollRoot().hasClass('eh-no-scroll') ? 0 : ScrollPage.getScrollPosition();\n        const inputBounds: DOMRect = input.getBoundingClientRect();\n        const widgetElement: HTMLElement | undefined = inst.dpDiv.get(0);\n        if (!widgetElement) {\n          return;\n        }\n        const widgetBounds: DOMRect = widgetElement.getBoundingClientRect();\n        const spaceBelow: number = innerHeight - (inputBounds.top + inputBounds.height);\n        const placement: {top: number, left: number} = {\n          top: 0,\n          left: inputBounds.left\n        };\n        if (spaceBelow < widgetBounds.height) {\n          // place above input\n          placement.top = inputBounds.top + pageOffset - (widgetBounds.height + gutter);\n        } else {\n          // place below input\n          placement.top = inputBounds.top + inputBounds.height + pageOffset + gutter;\n        }\n        inst.dpDiv.css(placement);\n      });\n    };\n  \n  }\n}\n","namespace eh {\n  \n    export class FlexInfo {\n\n        static init(base:JQuery<HTMLElement>):void {\n            //console.log(\"base:\", base);\n            base.find('.cs-flex-info').each(function (_index, element) {\n                var segm = $(element).data('flexSegment');\n                if(segm) {\n                    $(element).on('click', (event: JQuery.TriggeredEvent) => {\n                        event.preventDefault();\n                        FlexInfo.showId('flex-info-'+segm, $(element));\n                    });\n                }\n            });\n            base.find('.cs-flex-desc').each(function (_index, element) {\n                $(element).on('click', (event: JQuery.TriggeredEvent) => {\n                    event.preventDefault();\n                    FlexInfo.showDesc($(element));\n                });\n            });\n        }\n        static showId(id:string, elem:JQuery<HTMLElement>) {\n            const msg = new Message('*:open-static2-id');\n            msg.putParam('title', $('#'+id).data('heading'));\n            msg.putParam('id', id);\n            window.postMessage(msg, '*');\n        }\n        static showDesc(elem:JQuery<HTMLElement>) {\n            const msg = new Message('*:open-static2-wide-id');\n            msg.putParam('title', $('#flex-info-desc').data('heading'));\n            msg.putParam('id', 'flex-info-desc');\n            window.postMessage(msg, '*');\n        }\n    }\n\n}","namespace eh {\n    export class FullContentOverlayController {\n        public static OVERLAY_CLASSNAME: string = 'ehel-full-content-overlay';\n        public static OVERLAY_CONTAINER_CLASSNAME: string = 'ehel-full-content-overlay--container';\n        public static OVERLAY_OPEN_BTN_CLASSNAME: string = 'ehel-full-content-overlay--open';\n        public static OVERLAY_CLOSE_BTN_CLASSNAME: string = 'ehel-full-content-overlay--close';\n        public static OVERLAY_OPENED_CLASSNAME: string = 'ehel-full-content-overlay--container-opened';\n        public static OVERLAY_CLOSED_CLASSNAME: string = 'ehel-full-content-overlay--container-closed';\n        public static OVERLAY_TARGET_DATA: string = 'fullContentOverlayTarget';\n        // Opening this overlay target reflects a \"product-configure\" tab in the URL.\n        private static CONFIG_TARGET: string = 'full-content-configuration';\n        // ... switching back to the overview drops it again. Public because eh.Tracking\n        // identifies the \"back\" breadcrumb by this target.\n        public static OVERVIEW_TARGET: string = 'full-content-overview';\n        private static TAB_ID_PARAM: string = 't.tabId';\n        private static CONFIG_TAB_ID: string = 'product-configure';\n\n        static init($base: JQuery<HTMLElement>): void {\n            const $container = $base.selfOrFind(`.${FullContentOverlayController.OVERLAY_CLASSNAME}`);\n            if ($container.length === 0) {\n                return;\n            }\n            $container.each((idx, container) =>{\n                new FullContentOverlayController(container);\n            });\n        }\n\n        private openButtons: NodeListOf<HTMLElement> | null | undefined;\n        private closeButtons: NodeListOf<HTMLElement> | null | undefined;\n        private vm: FullContentOverlayViewModel | null | undefined = null;\n        constructor(private readonly overlay: HTMLElement) {\n            this.openButtons = this.overlay?.querySelectorAll(`.${FullContentOverlayController.OVERLAY_OPEN_BTN_CLASSNAME}`);\n            this.closeButtons = this.overlay?.querySelectorAll(`.${FullContentOverlayController.OVERLAY_CLOSE_BTN_CLASSNAME}`);\n            this.vm = new FullContentOverlayViewModel(this.overlay);\n            this.init();\n        }\n\n        private init(): void {\n            this.registerControls();\n            // 5.15.3 COM-3358: overwrite the value already set by PS TabsGroup PID Skin.ftl\n            let currId = EhTabController.getControllerInside(this.overlay)?.addExternalTabName(FullContentOverlayController.CONFIG_TAB_ID);\n            if(FullContentOverlayController.isConfigurationOpen()) {\n                eh.Tracking.handleOnsiteNavigation(FullContentOverlayController.CONFIG_TAB_ID, currId);\n            }\n        }\n\n        /** True while the configuration view is the current page state. */\n        public static isConfigurationOpen(): boolean {\n            return !!document.querySelector(\n                `#${FullContentOverlayController.CONFIG_TARGET}.${FullContentOverlayController.OVERLAY_OPENED_CLASSNAME}`);\n        }\n\n        private registerControls(): void {\n            this.openButtons?.forEach(btn => {\n                btn.addEventListener('click', () => this.onOpenClick(btn));\n            });\n            this.closeButtons?.forEach(btn => {\n                btn.addEventListener('click', () => this.onCloseClick());\n            });\n        }\n\n        private onOpenClick = (btn: HTMLElement): void => {\n            const target = btn.dataset[FullContentOverlayController.OVERLAY_TARGET_DATA];\n            this.vm?.open(target ?? '');\n            if (target === FullContentOverlayController.CONFIG_TARGET) {\n                FullContentOverlayController.pushConfigTabIdState();\n                // Deferred by one macro task. This handler is bound on the button itself and\n                // therefore runs in the target phase, while the tracking listens delegated on\n                // document. Changing the heading right here would rewrite the hierarchy before\n                // the click is analysed, so the opening click would be attributed to the\n                // configuration page instead of the page it was made on (QA package 1, row 74).\n                // Same reasoning as DrawerController.onStateChanged.\n                EhTabController.getControllerInside(this.overlay)?.fireTabChangedExtern(FullContentOverlayController.CONFIG_TAB_ID);\n            }\n            else if (target === FullContentOverlayController.OVERVIEW_TARGET) {\n                FullContentOverlayController.clearConfigTabIdState();\n                EhTabController.getControllerInside(this.overlay)?.fireTabChangedExtern(null);\n            }\n        }\n\n        /** Current 't.tabId' value, '' when the param is absent. */\n        private static getTabIdFromParam(): string {\n            const params = eh.URLHelper.buildQueryParamMap(eh.URLHelper.parse(window.location.href).search);\n            const value = params[FullContentOverlayController.TAB_ID_PARAM];\n            if (!value) {\n                return '';\n            }\n            return value instanceof Array ? value[0] : value;\n        }\n\n        // When the configuration overlay is opened, push a new history state carrying\n        // 't.tabId=product-configure' so the state is bookmarkable/shareable and can be\n        // navigated back — unless the current URL already carries that value.\n        private static pushConfigTabIdState(): void {\n            if (FullContentOverlayController.getTabIdFromParam() === FullContentOverlayController.CONFIG_TAB_ID) {\n                return;\n            }\n            const url = window.location.href;\n            const params = eh.URLHelper.buildQueryParamMap(eh.URLHelper.parse(url).search);\n            params[FullContentOverlayController.TAB_ID_PARAM] = FullContentOverlayController.CONFIG_TAB_ID;\n            window.history.pushState(null, document.title, eh.URLHelper.buildUrl(url, eh.URLHelper.buildQueryString(params)));\n        }\n\n        /**\n         * Switching back to the overview removes 't.tabId=product-configure' again. This\n         * replaces the current entry instead of pushing one: the way back corrects the URL of\n         * the state the user is leaving, so Back still leads where it led before the overlay\n         * was opened. Any other 't.tabId' value belongs to a real tab and is left untouched.\n         */\n        private static clearConfigTabIdState(): void {\n            if (FullContentOverlayController.getTabIdFromParam() !== FullContentOverlayController.CONFIG_TAB_ID) {\n                return;\n            }\n            const url = window.location.href;\n            const params = eh.URLHelper.buildQueryParamMap(eh.URLHelper.parse(url).search);\n            delete params[FullContentOverlayController.TAB_ID_PARAM];\n            window.history.replaceState(null, document.title, eh.URLHelper.buildUrl(url, eh.URLHelper.buildQueryString(params)));\n        }\n\n        private onCloseClick = (): void => {\n            this.vm?.close();\n        }\n    }\n\n    class FullContentOverlayViewModel {\n        private static OPENED_CLASSNAME: string = FullContentOverlayController.OVERLAY_OPENED_CLASSNAME;\n        private static CLOSED_CLASSNAME: string = FullContentOverlayController.OVERLAY_CLOSED_CLASSNAME;\n\n        private containers: NodeListOf<HTMLElement>;\n        constructor(private readonly overlay: HTMLElement) {\n            this.containers = this.overlay.querySelectorAll(`:scope > .${FullContentOverlayController.OVERLAY_CONTAINER_CLASSNAME}`);\n            this.init();\n        }\n\n        private resize() {\n            // A single container is the overlay's whole content, so it can keep its natural\n            // height; pinning it to the container's scrollHeight only fought the content.\n            // The measured height is needed from the second container on, where the overlay\n            // has to follow whichever one is open.\n            if (this.containers.length > 1) {\n                this.containers.forEach((container) => {\n                    if (container.classList.contains(FullContentOverlayViewModel.OPENED_CLASSNAME)) {\n                        this.overlay.style.height = container.scrollHeight + 'px';\n                    }\n                });\n            }\n        }\n\n        public init() {\n            setTimeout(() => {\n                this.resize();\n            }, 500);\n            window.addEventListener('resize', eh.debounce(() => this.resize(), 40));\n            new MutationObserver(() => this.resize()).observe(this.overlay, {childList: true, subtree: true});\n            // COM-3893: also react to pure size changes inside the overlay (e.g. a\n            // \"show more\" expanding) so the overlay height is recalculated.\n            this.containers.forEach((container) => {\n                new ResizeObserver(() => this.resize()).observe(container);\n            });\n            new ResizeObserver(() => this.resize()).observe(this.overlay);\n        }\n\n        public open(targetId: string): void {\n            this.containers.forEach(container => {\n                if (container.id === targetId) {\n                    container.classList.remove(FullContentOverlayViewModel.CLOSED_CLASSNAME);\n                    container.classList.add(FullContentOverlayViewModel.OPENED_CLASSNAME);\n                    this.overlay.style.height = container.scrollHeight + 'px';\n                } else {\n                    container.classList.add(FullContentOverlayViewModel.CLOSED_CLASSNAME);\n                    container.classList.remove(FullContentOverlayViewModel.OPENED_CLASSNAME);\n                }\n            });\n            eh.ScrollPage.scrollTo(0);\n        }\n\n        public close(): void {\n            this.containers.forEach((container, i) => {\n                if (i === 0) {\n                    container.classList.remove(FullContentOverlayViewModel.CLOSED_CLASSNAME);\n                    container.classList.add(FullContentOverlayViewModel.OPENED_CLASSNAME);\n                } else {\n                    container.classList.add(FullContentOverlayViewModel.CLOSED_CLASSNAME);\n                    container.classList.remove(FullContentOverlayViewModel.OPENED_CLASSNAME);\n                }\n            });\n        }\n    }\n}","import offsetTopToBody = eh.offsetTopToBody;\n\nnamespace eh {\n    export interface IHeaderMetrics {\n        visibleHeaderHeight: number;\n        visibleDisplaceElemHeight: number;\n        headerStickyState: boolean\n    }\n\n    export class HEADER_EVENTS {\n        static DOM_MUTATION: string = 'eh-headercomposer-on-dom-mutation';\n    }\n\n    /* Start - Sticky - reworking, pid,spd,productfinder */\n\n    /* Added shared runtime and viewport/boundary helpers so sticky instances can be reinitialized safely and report stable layout metrics. */\n    interface IHeaderRuntime {\n        breakpointManager: Breakpoints;\n        onViewTypeChanged: (viewType: BreakPointViewType) => void;\n        onResize: () => void;\n        dispose: () => void;\n    }\n\n    function getVisibleViewportHeight(element: HTMLElement): number {\n        const rect: DOMRect = element.getBoundingClientRect();\n        return Math.max(0, Math.min(rect.bottom, window.innerHeight) - Math.max(rect.top, 0));\n    }\n\n    function getStickyBoundaryHeight(element: HTMLElement): number {\n        const elementStyles: CSSStyleDeclaration = window.getComputedStyle(element);\n        const elementMargins: number = (parseFloat(elementStyles.marginTop) || 0) + (parseFloat(elementStyles.marginBottom) || 0);\n        return element.offsetHeight + elementMargins;\n    }\n    /* End - Sticky - reworking,  pid,spd,productfinder */\n\n    const HEADER_BOTTOM_CSS_VAR: string = '--ehHeaderBottom';\n    const HEADER_BOTTOM_FOLLOW_FRAMES: number = 32; // the header transition lasts 500ms\n    let headerBottomFrames: number = 0;\n    let headerBottomRafId: number = 0;\n\n    function publishHeaderBottom(headerWrapper: HTMLElement): void {\n        const publish = (): void => {\n            const bottom: number = Math.max(64, headerWrapper.getBoundingClientRect().bottom);\n            document.documentElement.style.setProperty(HEADER_BOTTOM_CSS_VAR, `${bottom}px`);\n        };\n\n        const follow = (): void => {\n            headerBottomFrames -= 1;\n            headerBottomRafId = headerBottomFrames > 0 ? window.requestAnimationFrame(follow) : 0;\n            publish();\n        };\n\n        headerBottomFrames = HEADER_BOTTOM_FOLLOW_FRAMES;\n        publish();\n\n        if (!headerBottomRafId) {\n            headerBottomRafId = window.requestAnimationFrame(follow);\n        }\n    }\n\n    export class Header {\n        static HEADER_DISPLACE_ELEMENT_CLASS: string = '.eh-tabs--products-sticky';\n        static HEADER_DISPLACE_ACTIVE: boolean = true;\n        /* Start - Sticky - reworking, pid,spd,productfinder */\n        /* Reworked header bootstrap to clean previous listeners and to support one sticky behavior per candidate element, with a fallback when no displacement block exists. */\n        private static runtime?: IHeaderRuntime;\n\n        private static destroyRuntime(): void {\n            if (!Header.runtime) {\n                return;\n            }\n\n            Header.runtime.dispose();\n            Header.runtime = undefined;\n        }\n\n        static init($base: JQuery<HTMLElement>, isSnippetRequest: boolean = false): void {\n            if (isSnippetRequest) {\n                return;\n            }\n            Header.destroyRuntime();\n\n            let headerComposer: HeaderComposition[];\n            const displacingElements: HTMLElement[] = $(Header.HEADER_DISPLACE_ELEMENT_CLASS, $base).toArray() as HTMLElement[];\n\n            const stickyMobileHeader: HeaderComposition[] = displacingElements.length\n                ? displacingElements.map(element => new HeaderComposition(new HeaderMobileScrollBehavior(element)))\n                : [new HeaderComposition(new HeaderMobileScrollBehavior(undefined))];\n            const stickyDesktopHeader: HeaderComposition[] = displacingElements.length\n                ? displacingElements.map(element => new HeaderComposition(new HeaderDesktopScrollBehavior(element)))\n                : [new HeaderComposition(new HeaderDesktopScrollBehavior(undefined))];\n\n            const breakpointManager: Breakpoints = Breakpoints.getInstance();\n\n            const onViewTypeChanged = (viewType: BreakPointViewType): void => {\n                const composition: HeaderComposition[] = viewType === BreakPointViewType.MOBILE ? stickyMobileHeader : stickyDesktopHeader;\n                headerComposer?.forEach(c => c.dispose());\n                headerComposer = composition;\n                headerComposer.forEach(c => c.init());\n            };\n            eh.MarketSelector.uiStateSupport.registerUIStateListener(onMarketHeaderChanged);\n\n            /* Start - COM-3974: Sticky - iOS URL bar flicker */\n            /* Height-only resizes (iOS collapsing/expanding the URL bar) must not re-init the sticky\n               behaviors: init() -> destroy() drops `.is-sticky` and the inline top, so the sticky block\n               falls back to `bottom: -100vh` and replays its slide-in on every toolbar transition. Only a\n               width change can invalidate the cached sticky metrics, so gate the re-init on\n               `window.innerWidth`. */\n            let lastResizeWidth: number = window.innerWidth;\n\n            const onResize = (): void => {\n                if (window.innerWidth === lastResizeWidth) {\n                    return;\n                }\n\n                lastResizeWidth = window.innerWidth;\n                headerComposer.forEach(c => c.resize());\n            };\n            /* End - COM-3974: Sticky - iOS URL bar flicker */\n\n            function onMarketHeaderChanged() {\n                headerComposer.forEach(c => c.resize());\n            }\n\n            breakpointManager.registerViewTypeListener(onViewTypeChanged);\n            breakpointManager.registerResizeListener(onResize);\n\n            /* Start - Sticky - gap after page load with hash */\n            let disposed: boolean = false;\n            if (window.location.hash && displacingElements.length) {\n                const suppressTransitions = (): void => {\n                    displacingElements.forEach(el => { el.style.transitionProperty = 'none'; });\n                };\n                const restoreTransitions = (): void => {\n                    displacingElements.forEach(el => { el.style.removeProperty('transition-property'); });\n                };\n                const settleStickyAfterHashJump = (): void => {\n                    if (disposed) {\n                        return;\n                    }\n                    suppressTransitions();\n                    headerComposer?.forEach(c => c.init());\n                    window.requestAnimationFrame(() => window.requestAnimationFrame(() => {\n                        if (!disposed) {\n                            restoreTransitions();\n                        }\n                    }));\n                };\n                if (document.readyState === 'complete') {\n                    window.requestAnimationFrame(settleStickyAfterHashJump);\n                } else {\n                    window.addEventListener('load', () => window.requestAnimationFrame(settleStickyAfterHashJump), {once: true});\n                }\n            }\n            /* End - Sticky - gap after page load with hash */\n\n        Header.runtime = {\n            breakpointManager,\n            onViewTypeChanged,\n            onResize,\n            dispose: (): void => {\n                disposed = true;\n                headerComposer?.forEach(c => c.dispose());\n                breakpointManager.unregisterViewTypeListener(onViewTypeChanged);\n                breakpointManager.unregisterResizeListener(onResize);\n            },\n        };\n    }\n}\n\nexport class HeaderComposition {\n    private _resizeUpdateDelay: number = 200;\n    private _resizeTimeout: number = NaN;\n\n    constructor(private _behavior: any) {}\n\n    dispose(): void {\n        clearTimeout(this._resizeTimeout);\n        this._behavior.destroy();\n    }\n\n    init(): void {\n        this._behavior.init();\n    }\n\n    resize(): void {\n        window.clearTimeout(this._resizeTimeout);\n        this._resizeTimeout = window.setTimeout(this._resizeNow, this._resizeUpdateDelay, this);\n    }\n\n    private _resizeNow: () => void = (): void => {\n        this._behavior.init();\n    };\n}\n\n    class HeaderMobileScrollBehavior {\n        private static HEADER_DISPLACEMENT_ACTIVE: boolean = eh.Header.HEADER_DISPLACE_ACTIVE;\n        private static DEFAULT_STICKY_OFFSET: number = 300;\n        private static instances: HeaderMobileScrollBehavior[] = [];\n\n        private headerStickyState: boolean = false;\n        private readonly headerWrapper: HTMLElement;\n        private readonly visibleRowToKeepInViewport: HTMLElement;\n        private readonly page: HTMLElement;\n        private readonly marketChooser: HTMLElement;\n        private scroller: Document;\n        private stickyClass: string = 'is-sticky';\n        private readonly stickyParentClass: string = 'is-sticky-parent';\n        private headerCollapsedHeight: number = NaN;\n        private headerInitialHeight: number = NaN;\n        private headerStickyThreshold: number = NaN;\n        private ticking: boolean = false;\n        private displaceThreshold: number = NaN;\n        private readonly wrapElement!: HTMLElement;\n        private readonly stickyParentElement!: HTMLElement;\n\n        private isScrollingDown = true;\n        private lastScrollTop = 0;\n        private startScrollTop = 0;\n        private offsetScrollingUp = 0;\n\n        private readonly stickyOffset: number = 300;\n        private readonly togetherOffset: number = 100;\n        private readonly displaceOffset: number = 0;\n        private readonly stickyParentInitialMinHeight: string;\n        private lastMetricsKey: string = '';\n        private stickyBoundaryHeightMax: number = 0;\n\n        constructor(private readonly displaceByElement: HTMLElement | undefined) {\n            this.headerWrapper = document.querySelector('.eh-header--wrapper') as HTMLElement;\n\n            this.stickyParentElement = ((this.displaceByElement?.closest(`.${this.stickyParentClass}`) as HTMLElement) || document.querySelector(`.${this.stickyParentClass}`)) as HTMLElement;\n            this.stickyParentInitialMinHeight = this.stickyParentElement?.style.minHeight || '';\n\n            if (this.displaceByElement?.dataset['stickyWrapClass']) {\n                this.wrapElement = document.querySelector(`.${this.displaceByElement?.dataset['stickyWrapClass']}`) as HTMLElement;\n            }\n\n            this.marketChooser = document.querySelector(\n                '.ehel-market-chooser-banner'\n            ) as HTMLElement;\n            this.visibleRowToKeepInViewport = document.querySelector('.eh-mobile-navigation--search-row') as HTMLElement;\n            this.scroller = document as Document;\n            this.page = document.querySelector('#eh-page') as HTMLElement;\n            this.registerFilterButtonStickyChange();\n\n            if (!this.headerWrapper || !this.visibleRowToKeepInViewport || !this.page) {\n                throw new Error('Failed to query required elements.');\n            }\n        }\n\n        /* Start - Sticky - reworking, pid,spd,productfinder */\n        /* Mobile lifecycle and helper methods now register ownership, restore initial layout state, dedupe DOM mutation events, and compute earlier sticky ownership for sticky-scroll blocks. */\n        public init(): void {\n            this.destroy();\n            this.initializeHeaderScroll();\n            HeaderMobileScrollBehavior.registerInstance(this);\n            this.scroller.addEventListener('scroll', this.onScrollChange, {\n                passive: true,\n            });\n        }\n\n        public destroy(): void {\n            HeaderMobileScrollBehavior.unregisterInstance(this);\n            $(':root').off(FILTER_BUTTON_EVENTS.STICKY_CHANGE, this.onFilterButtonStickyChange);\n            this.scroller.removeEventListener('scroll', this.onScrollChange);\n            this.headerWrapper.classList.remove(this.stickyClass);\n            // @TODO: removing attr style is a dangerous operation\n            this.headerWrapper.removeAttribute('style');\n            this.page.removeAttribute('style');\n            if (this.displaceByElement) {\n                this.displaceByElement.classList.remove(this.stickyClass);\n                this.displaceByElement.classList.remove('sticky-overflow');\n                this.displaceByElement.classList.remove('has-shadow');\n                this.displaceByElement.style.removeProperty('--overflowOffset');\n                this.displaceByElement.style.removeProperty('opacity');\n                this.displaceByElement.style.removeProperty('top');\n\n                this.resetStickyParentMinHeight();\n            }\n        }\n\n        private registerFilterButtonStickyChange(): void {\n            $(':root').off(eh.FILTER_BUTTON_EVENTS.STICKY_CHANGE, this.onFilterButtonStickyChange);\n            $(':root').on(eh.FILTER_BUTTON_EVENTS.STICKY_CHANGE, this.onFilterButtonStickyChange);\n        }\n\n        private readonly onFilterButtonStickyChange = (_e: JQuery.TriggeredEvent, isSticky: boolean): void => {\n                if (this.displaceByElement) {\n                    if (!isSticky) {\n                        this.displaceByElement.classList.add('has-shadow');\n                    } else {\n                        this.displaceByElement.classList.remove('has-shadow');\n                    }\n                } else {\n                    if (!isSticky) {\n                        this.headerWrapper.classList.add('has-shadow');\n                    } else {\n                        this.headerWrapper.classList.remove('has-shadow');\n                    }\n                }\n            };\n\n        private initializeHeaderScroll(): void {\n            if (this.displaceByElement) {\n                this.displaceThreshold = offsetTopToBody(this.displaceByElement);\n            }\n            this.lastMetricsKey = '';\n            this.stickyBoundaryHeightMax = 0;\n            this.headerStickyState = false;\n            this.headerInitialHeight = this.headerWrapper.offsetHeight;\n            this.headerCollapsedHeight = this.visibleRowToKeepInViewport.offsetHeight;\n            this.headerStickyThreshold = this.headerInitialHeight - this.headerCollapsedHeight;\n            this.offsetScrollingUp = window.innerHeight * 0.18;\n\n            this.onScrollChange();\n        }\n\n        private static registerInstance(instance: HeaderMobileScrollBehavior): void {\n            if (HeaderMobileScrollBehavior.instances.indexOf(instance) === -1) {\n                HeaderMobileScrollBehavior.instances.push(instance);\n            }\n        }\n\n        private static unregisterInstance(instance: HeaderMobileScrollBehavior): void {\n            const idx: number = HeaderMobileScrollBehavior.instances.indexOf(instance);\n            if (idx > -1) {\n                HeaderMobileScrollBehavior.instances.splice(idx, 1);\n            }\n        }\n\n        private static getOwner(offset: number): HeaderMobileScrollBehavior | undefined {\n            if (!HeaderMobileScrollBehavior.instances.length) {\n                return undefined;\n            }\n\n            const eligibleInstances: HeaderMobileScrollBehavior[] = HeaderMobileScrollBehavior.instances.filter(instance => {\n                return !instance.displaceByElement || (!isNaN(instance.getOwnerThreshold()) && offset >= instance.getOwnerThreshold());\n            });\n\n            if (!eligibleInstances.length) {\n                return HeaderMobileScrollBehavior.instances[0];\n            }\n\n            return eligibleInstances.reduce((currentOwner, instance) => {\n                if (!currentOwner) {\n                    return instance;\n                }\n\n                return instance.getOwnerThreshold() >= currentOwner.getOwnerThreshold() ? instance : currentOwner;\n            }, eligibleInstances[0]);\n        }\n\n        private isHeaderOwner(offset: number): boolean {\n            return HeaderMobileScrollBehavior.getOwner(offset) === this;\n        }\n\n        private getHeaderStickyOffset(): number {\n            return this.stickyOffset;\n        }\n\n        private getStickyScrollOffset(): number {\n            if (!this.displaceByElement?.dataset['stickyScroll']) {\n                return 0;\n            }\n\n            const bannerHeight = this.marketChooser?.offsetHeight || 0;\n            const innerHeight = this.headerWrapper.querySelector('.eh-mobile-navigation-links')?.clientHeight || this.headerWrapper.offsetHeight;\n            return innerHeight + bannerHeight;\n        }\n\n        private getOwnerThreshold(): number {\n            return this.displaceThreshold - this.getStickyScrollOffset();\n        }\n\n        private setStickyParentMinHeight(height: number): void {\n            if (this.stickyParentElement) {\n                this.stickyParentElement.style.minHeight = `${height}px`;\n            }\n        }\n\n        private resetStickyParentMinHeight(): void {\n            if (this.stickyParentElement) {\n                this.stickyParentElement.style.minHeight = this.stickyParentInitialMinHeight || 'unset';\n            }\n        }\n\n        private dispatchMetrics(visibleHeaderHeight: number, visibleDisplaceElemHeight: number): void {\n            const metrics: IHeaderMetrics = {\n                visibleHeaderHeight,\n                visibleDisplaceElemHeight,\n                headerStickyState: this.headerStickyState,\n            };\n            const metricsKey: string = `${metrics.visibleHeaderHeight}|${metrics.visibleDisplaceElemHeight}|${metrics.headerStickyState}`;\n\n            if (metricsKey === this.lastMetricsKey) {\n                return;\n            }\n\n            this.lastMetricsKey = metricsKey;\n\n            //const event: CustomEvent = new CustomEvent(eh.HEADER_EVENTS.DOM_MUTATION, {\n            //    detail: metrics,\n            //});\n            //$(':root')[0].dispatchEvent(event);\n            $(':root').trigger(HEADER_EVENTS.DOM_MUTATION, [metrics]);\n        }\n\n        private onScrollChange: () => void = (): void => {\n            if ((ScrollPage.getScrollRoot().scrollTop() || 0) - this.lastScrollTop > 0) {\n                this.isScrollingDown = true;\n                this.startScrollTop = ScrollPage.getScrollRoot().scrollTop() || 0;\n            } else {\n                if (this.offsetScrollingUp < (this.startScrollTop - (ScrollPage.getScrollRoot().scrollTop() || 0))) {\n                    this.isScrollingDown = false;\n                }\n            }\n            this.lastScrollTop = ScrollPage.getScrollRoot().scrollTop() || 0;\n\n            if (!this.ticking) {\n                window.requestAnimationFrame(() => {\n                    this.restrict();\n                    this.ticking = false;\n                });\n                this.ticking = true;\n            }\n        };\n\n        private restrict(): void {\n            const offset: number = ScrollPage.getScrollRoot().scrollTop() || 0;\n            const bannerHeight = this.marketChooser?.offsetHeight || 0;\n            const headerOwner: boolean = this.isHeaderOwner(offset);\n            const owner: HeaderMobileScrollBehavior | undefined = HeaderMobileScrollBehavior.getOwner(offset);\n            const ownerStickyOffset: number = owner && (!owner.displaceByElement || offset >= owner.getOwnerThreshold())\n                ? owner.getHeaderStickyOffset()\n                : HeaderMobileScrollBehavior.DEFAULT_STICKY_OFFSET;\n            const headerShouldBeSticky: boolean = offset > ownerStickyOffset;\n\n            // COM-3966: opt out of the mobile sticky bottom-dock entirely when the\n            // displaced element requests it (e.g. the PID detail tab bar carrying\n            // .eh-tabs--products-sticky-avoid-mobile). The design guards the whole\n            // repositioning body with `if (!restrictedOnMobile)`; since nothing runs\n            // after that block, an early return is behaviourally identical.\n            // COM-3763: the restriction only applies at real mobile widths (< 769px);\n            // on wider viewports the sticky bar behaves normally.\n            const restrictedOnMobile = this.displaceByElement?.classList.contains('eh-tabs--products-sticky-avoid-mobile') && window.innerWidth < 769;\n            if (!restrictedOnMobile) {\n\n                // this.headerWrapper.style.top = bannerHeight + 'px';    \n                let headerTop = bannerHeight + 'px';\n\n                let innerHeight = this.headerWrapper.querySelector('.eh-mobile-navigation-links')?.clientHeight || this.headerWrapper.offsetHeight;\n                let displaceTop = bannerHeight - 1;\n\n                // enable repositioning\n                if (!this.displaceByElement || HeaderMobileScrollBehavior.HEADER_DISPLACEMENT_ACTIVE) {\n                    if (headerShouldBeSticky) {\n                        if (!this.headerStickyState && headerOwner) {\n                            this.headerWrapper.classList.add(this.stickyClass);\n                        }\n                    } else {\n                        if (this.headerStickyState && headerOwner) {\n                            this.headerWrapper.classList.remove(this.stickyClass);\n                            headerTop = bannerHeight + 'px';\n                        }\n                    }\n                }\n\n                this.headerStickyState = headerShouldBeSticky;\n\n                /* Start - 8.10.1 - Support product page (SPD) */\n                // a sticky block that is not rendered must neither displace the header nor take its\n                // shadow over - otherwise the header scrolls its content under a flat edge\n                const displaceByElementRendered: boolean = !!this.displaceByElement?.getClientRects().length;\n                /* End - 8.10.1 - Support product page (SPD) */\n\n                if (this.displaceByElement && displaceByElementRendered) {\n                    const offsetDiff = offset - this.displaceThreshold;\n                    const stickyStack: boolean = !!this.displaceByElement.dataset['stickyStack'];\n                    const hiddenHeaderTop: number = -innerHeight;\n                    const visibleHeaderTop: number = bannerHeight - 1;\n                    const collapsedDisplaceTop: number = bannerHeight - 1;\n                    const stackedDisplaceTop: number = bannerHeight + innerHeight - 1;\n\n                    if (offset >= this.displaceThreshold + this.displaceOffset) {\n                        this.setStickyParentMinHeight(getStickyBoundaryHeight(this.displaceByElement));\n\n                        this.displaceByElement.classList.add(this.stickyClass);\n                        this.displaceByElement.classList.add('has-shadow');\n                        this.displaceByElement.style.opacity = '1';\n\n                        // this.displaceByElement.classList.add('ehtw-transition-all', '!ehtw-ease-out', '!ehtw-duration-300', '!ehtw-shadow-fly');\n\n                        if (headerOwner) {\n                            this.headerWrapper.classList.remove('ehtw-shadow-fly');\n                            this.headerWrapper.classList.remove('has-shadow');\n                        }\n\n                        const shouldHideHeader: boolean = !stickyStack && this.isScrollingDown && offsetDiff > this.togetherOffset + this.displaceOffset;\n\n                        displaceTop = shouldHideHeader ? collapsedDisplaceTop : stackedDisplaceTop;\n\n                        if (headerOwner) {\n                            headerTop = `${shouldHideHeader ? hiddenHeaderTop : visibleHeaderTop}px`;\n                        }\n                    } else {\n                        this.displaceByElement.style.opacity = '1';\n                        displaceTop = collapsedDisplaceTop;\n                        this.displaceByElement.classList.remove(this.stickyClass);\n                        this.stickyBoundaryHeightMax = 0;\n                        if (!this.headerStickyState) {\n                            this.resetStickyParentMinHeight();\n                        }\n                        this.displaceByElement.classList.remove('has-shadow');\n\n                        if (headerOwner) {\n                            this.headerWrapper.classList.add('ehtw-shadow-fly');\n                            this.headerWrapper.classList.add('has-shadow');\n                        }\n                    }\n\n                    if (offsetDiff > 0 && offsetDiff < this.displaceOffset) {\n                        this.displaceByElement.style.opacity = '0';\n                    }\n\n                    /* Start - 8.10.1 - Support product page (SPD) */\n                    const wrapBottomMobile = this.wrapElement ? offsetTopToBody(this.wrapElement) + this.wrapElement.offsetHeight : Infinity;\n                    const isOverflowingMobile = this.displaceByElement.classList.contains('sticky-overflow');\n                    const stickyBoundaryHeightMobile = getStickyBoundaryHeight(this.displaceByElement);\n                    this.stickyBoundaryHeightMax = Math.max(this.stickyBoundaryHeightMax, stickyBoundaryHeightMobile);\n                    const stableStickyBoundaryHeightMobile = Math.max(stickyBoundaryHeightMobile, this.stickyBoundaryHeightMax);\n\n                    // COM-4148: an element docked to the viewport bottom (the mobile action bar) is not\n                    // displaced from the header stack, so its resting position has to be measured from\n                    // the bottom edge. Measuring it from displaceTop would compare the overflow limit\n                    // against a position the element never takes, and it would never retract.\n                    const normalDisplaceTopMobile = this.displaceByElement.dataset['stickyBottom'] !== undefined\n                        ? window.innerHeight - stableStickyBoundaryHeightMobile\n                        : displaceTop;\n\n                    const overflowTopMobile = wrapBottomMobile - offset - stableStickyBoundaryHeightMobile;\n                    const clampedDisplaceTopMobile = Math.min(normalDisplaceTopMobile, overflowTopMobile);\n                    const shouldOverflowMobile = this.wrapElement ? clampedDisplaceTopMobile < normalDisplaceTopMobile : false;\n\n                    if (shouldOverflowMobile) {\n                        if (!isOverflowingMobile) {\n                            this.displaceByElement.classList.add('sticky-overflow');\n                        }\n                        displaceTop = clampedDisplaceTopMobile;\n                        this.displaceByElement.style.setProperty('--overflowOffset', `${clampedDisplaceTopMobile}px`);\n                    } else if (isOverflowingMobile) {\n                        this.displaceByElement.classList.remove('sticky-overflow');\n                        this.displaceByElement.style.removeProperty('--overflowOffset');\n                    }\n                    /* End - 8.10.1 - Support product page (SPD) */\n\n                    this.displaceByElement.style.top = `${displaceTop}px`;\n\n                } else {\n                    if (headerOwner) {\n                        this.headerWrapper.classList.add('ehtw-shadow-fly');\n                        this.headerWrapper.classList.add('has-shadow');\n                    }\n                }\n\n\n                if (headerOwner) {\n                    let visibleHeaderHeight = this.headerWrapper.offsetHeight + bannerHeight;\n                    let visibledisplaceElemHeight = 0;\n                    if (this.displaceByElement && $(this.displaceByElement).hasClass(this.stickyClass)) {\n                        visibledisplaceElemHeight = getVisibleViewportHeight(this.displaceByElement);\n                    }\n\n                    this.dispatchMetrics(visibleHeaderHeight, visibledisplaceElemHeight);\n                    this.headerWrapper.style.top = headerTop;\n                }\n            }\n\n            publishHeaderBottom(this.headerWrapper);\n        }\n    }\n\n    class HeaderDesktopScrollBehavior {\n        private static HEADER_DISPLACEMENT_ACTIVE: boolean = eh.Header.HEADER_DISPLACE_ACTIVE;\n        private static ANCHOR_NAV_SELECTOR: string = '.ehel-anchor-navigation';\n\n        private static DEFAULT_STICKY_OFFSET: number = 300;\n        private static instances: HeaderDesktopScrollBehavior[] = [];\n\n        private headerStickyState: boolean = false;\n        private readonly headerWrapper: HTMLElement;\n        private readonly scroller: Document;\n        private readonly page: HTMLElement;\n        private readonly marketChooser: HTMLElement;\n        private readonly bottomNav: HTMLElement | null;\n        private readonly stickyClass: string = 'is-sticky';\n        private readonly stickyParentClass: string = 'is-sticky-parent';\n\n        private readonly tableOfContent: string = 'ehel-anchor-navigation-table-of-content';\n        private headerCollapsedHeight: number = 64; // 48 height + (top: 8, bottom: 8)\n        private headerInitialHeight: number = NaN;\n        private headerStickyThreshold: number = NaN;\n        private elementUpdateThresholdMin: number = NaN;\n        private elementUpdateThresholdMax: number = NaN;\n        private ticking: boolean = false;\n        private displaceThreshold: number = NaN;\n\n        private readonly wrapElement!: HTMLElement;\n        private readonly stickyParentElement!: HTMLElement;\n\n        private readonly stickyOffset: number = 300;\n        private readonly togetherOffset: number = 100;\n        private readonly displaceOffset: number = 0;\n        private readonly stickyActivationMargin: number = 50;\n        private isScrollingDown = true;\n        private lastScrollTop = 0;\n        private startScrollTop = 0;\n        private offsetScrollingUp = 0;\n\n        private readonly stickyParentInitialMinHeight: string;\n        private lastMetricsKey: string = '';\n        private stickyBoundaryHeightMax: number = 0;\n\n        constructor(private displaceByElement: HTMLElement | undefined) {\n\n            if (this.displaceByElement && this.displaceByElement.classList.contains(this.tableOfContent)) {\n                this.displaceByElement = undefined;\n            }\n\n            if (this.displaceByElement?.dataset['stickyWrapClass']) {\n                this.wrapElement = document.querySelector(`.${this.displaceByElement?.dataset['stickyWrapClass']}`) as HTMLElement;\n            }\n\n            if (this.displaceByElement?.dataset['stickyOffset']) {\n                this.stickyOffset = parseInt(this.displaceByElement?.dataset['stickyOffset'], 10);\n            }\n\n            if (this.displaceByElement?.dataset['stickyActivationMargin']) {\n                this.stickyActivationMargin = parseInt(this.displaceByElement?.dataset['stickyActivationMargin'], 10);\n            }\n\n            this.headerWrapper = document.querySelector('.eh-header--wrapper') as HTMLElement;\n            this.bottomNav = this.headerWrapper?.querySelector<HTMLElement>('.ehel-navigation--row-left')?.parentElement ?? null;\n\n            this.stickyParentElement = ((this.displaceByElement?.closest(`.${this.stickyParentClass}`) as HTMLElement) || document.querySelector(`.${this.stickyParentClass}`)) as HTMLElement;\n            this.stickyParentInitialMinHeight = this.stickyParentElement?.style.minHeight || '';\n            this.marketChooser = document.querySelector('.ehel-market-chooser-banner') as HTMLElement;\n            this.scroller = document as Document;\n            this.page = document.querySelector('#eh-page') as HTMLElement;\n            if (!this.headerWrapper || !this.page || !this.scroller) {\n                throw new Error('Failed to query required elements.');\n            }\n        }\n\n        public init(): void {\n            this.destroy();\n            this.initializeHeaderScroll();\n            HeaderDesktopScrollBehavior.registerInstance(this);\n            this.scroller.addEventListener('scroll', this.onScrollChange, {\n                passive: true,\n            });\n        }\n\n        public destroy(): void {\n            HeaderDesktopScrollBehavior.unregisterInstance(this);\n\n            this.scroller.removeEventListener('scroll', this.onScrollChange);\n            this.headerWrapper.classList.remove(this.stickyClass);\n            // @TODO: removing attr style is a dangerous operation\n            this.headerWrapper.removeAttribute('style');\n            this.page.removeAttribute('style');\n            if (this.displaceByElement) {\n                this.displaceByElement.classList.remove(this.stickyClass);\n                this.displaceByElement.classList.remove('sticky-overflow');\n                this.displaceByElement.classList.remove('has-shadow');\n                this.displaceByElement.style.removeProperty('--overflowOffset');\n                this.displaceByElement.style.removeProperty('opacity');\n                this.displaceByElement.style.removeProperty('top');\n                this.resetStickyParentMinHeight();\n            }\n        }\n\n        private initializeHeaderScroll(): void {\n            if (this.displaceByElement) {\n                this.displaceThreshold = offsetTopToBody(this.displaceByElement);\n            }\n            this.lastMetricsKey = '';\n            this.stickyBoundaryHeightMax = 0;\n            this.headerStickyState = false;\n            this.headerInitialHeight = Math.min(this.headerWrapper.offsetHeight, 110);\n            this.headerStickyThreshold = this.headerInitialHeight;\n            this.elementUpdateThresholdMin = this.headerInitialHeight;\n            this.elementUpdateThresholdMax = this.headerInitialHeight + this.headerCollapsedHeight;\n\n            this.offsetScrollingUp = window.innerHeight * 0.18;\n\n            this.onScrollChange();\n        }\n\n        private static registerInstance(instance: HeaderDesktopScrollBehavior): void {\n            if (HeaderDesktopScrollBehavior.instances.indexOf(instance) === -1) {\n                HeaderDesktopScrollBehavior.instances.push(instance);\n            }\n        }\n\n        private static unregisterInstance(instance: HeaderDesktopScrollBehavior): void {\n            const idx: number = HeaderDesktopScrollBehavior.instances.indexOf(instance);\n            if (idx > -1) {\n                HeaderDesktopScrollBehavior.instances.splice(idx, 1);\n            }\n        }\n\n        private static getOwner(offset: number): HeaderDesktopScrollBehavior | undefined {\n            if (!HeaderDesktopScrollBehavior.instances.length) {\n                return undefined;\n            }\n\n            const eligibleInstances: HeaderDesktopScrollBehavior[] = HeaderDesktopScrollBehavior.instances.filter(instance => {\n                return !instance.displaceByElement || (!isNaN(instance.getOwnerThreshold()) && offset >= instance.getOwnerThreshold());\n            });\n\n            if (!eligibleInstances.length) {\n                return HeaderDesktopScrollBehavior.instances[0];\n            }\n\n            return eligibleInstances.reduce((currentOwner, instance) => {\n                if (!currentOwner) {\n                    return instance;\n                }\n\n                return instance.getOwnerThreshold() >= currentOwner.getOwnerThreshold() ? instance : currentOwner;\n            }, eligibleInstances[0]);\n        }\n\n        private isHeaderOwner(offset: number): boolean {\n            return HeaderDesktopScrollBehavior.getOwner(offset) === this;\n        }\n\n        private getHeaderStickyOffset(): number {\n            return this.stickyOffset;\n        }\n\n        private getStickyScrollOffset(): number {\n            if (!this.displaceByElement?.dataset['stickyScroll']) {\n                return 0;\n            }\n\n            const bannerHeight = this.marketChooser?.offsetHeight || 0;\n            const innerHeight = this.headerWrapper.querySelector('.ehel-navigation--bottom')?.clientHeight || this.headerWrapper.offsetHeight;\n            return innerHeight + bannerHeight;\n        }\n\n        private getOwnerThreshold(): number {\n            return this.displaceThreshold - this.getStickyScrollOffset();\n        }\n\n        private setStickyParentMinHeight(height: number): void {\n            if (this.stickyParentElement) {\n                this.stickyParentElement.style.minHeight = `${height}px`;\n            }\n        }\n\n        private resetStickyParentMinHeight(): void {\n            if (this.stickyParentElement) {\n                this.stickyParentElement.style.minHeight = this.stickyParentInitialMinHeight || 'unset';\n            }\n        }\n\n        /* End - Sticky - reworking,  pid,spd,productfinder */\n\n        private onScrollChange: () => void = (): void => {\n            if (document.scrollingElement?.classList.contains('eh-no-scroll')) return;\n\n            const currentScrollTop: number = ScrollPage.getScrollRoot().scrollTop() || 0;\n            const scrolledUpDistance: number = this.startScrollTop - currentScrollTop;\n\n            if (currentScrollTop - this.lastScrollTop > 0) {\n                this.isScrollingDown = true;\n                this.startScrollTop = currentScrollTop;\n            } else {\n                if (scrolledUpDistance >= this.offsetScrollingUp) {\n                    this.isScrollingDown = false;\n                }\n            }\n            this.lastScrollTop = currentScrollTop;\n\n            if (!this.ticking) {\n                window.requestAnimationFrame(() => {\n                    this.restrict();\n                    this.ticking = false;\n                });\n                this.ticking = true;\n            }\n        };\n\n        /* Start - Sticky - reworking, pid,spd,productfinder */\n\n        /* Desktop restrict/metrics logic now activates the header from the current owner, keeps stacked stickies from hiding the header, and clamps bottom limits without oscillation. */\n        private restrict(): void {\n            const offset: number = ScrollPage.getScrollRoot().scrollTop() || 0;\n            const bannerHeight = this.marketChooser?.offsetHeight || 0;\n            const headerOwner: boolean = this.isHeaderOwner(offset);\n            const owner: HeaderDesktopScrollBehavior | undefined = HeaderDesktopScrollBehavior.getOwner(offset);\n            const ownerStickyOffset: number = owner && (!owner.displaceByElement || offset >= owner.getOwnerThreshold())\n                ? owner.getHeaderStickyOffset()\n                : HeaderDesktopScrollBehavior.DEFAULT_STICKY_OFFSET;\n            const headerShouldBeSticky: boolean = offset > ownerStickyOffset;\n\n            let headerTop = this.headerWrapper.style.top || `${bannerHeight}px`;\n            let displaceTop = bannerHeight;\n\n            const isSearchActive = document.body.classList.contains('eh-header-search-bar--has-focus');\n\n            if (!isSearchActive) {\n                if (!this.displaceByElement || HeaderDesktopScrollBehavior.HEADER_DISPLACEMENT_ACTIVE) {\n                    if (offset > this.elementUpdateThresholdMax && this.headerStickyState) {\n                        headerTop = `${bannerHeight}px`;\n                    }\n\n                    if (headerShouldBeSticky) {\n                        if (!this.headerStickyState && headerOwner) {\n                            this.headerWrapper.classList.add(this.stickyClass);\n                        }\n                    } else {\n                        if (this.headerStickyState && headerOwner) {\n                            this.headerWrapper.classList.remove(this.stickyClass);\n                        }\n                    }\n\n                    if (!(offset < this.elementUpdateThresholdMax && offset > this.elementUpdateThresholdMin && this.headerStickyState)) {\n                        headerTop = `${bannerHeight}px`;\n                    }\n                }\n\n                    let innerHeight = headerShouldBeSticky ? this.headerCollapsedHeight : this.headerWrapper.offsetHeight;\n                    \n                    this.headerStickyState = headerShouldBeSticky;\n                    if (this.displaceByElement) {\n\n                        const offsetDiff = offset - this.displaceThreshold;\n                        // const child = this.displaceByElement.querySelector('&>.eh-center-page');\n\n                        /* Start - 8.10.1 - Support product page (SPD) */\n                        const hasStickyScroll = this.displaceByElement.dataset['stickyScroll'] ? true : false;\n                        const stickyStack: boolean = !!this.displaceByElement.dataset['stickyStack'];\n                        const headerOffsetScroll = hasStickyScroll ? innerHeight + bannerHeight : 0;\n                        const hiddenHeaderTop: number = -innerHeight;\n                        const visibleHeaderTop: number = bannerHeight;\n                        const collapsedDisplaceTop: number = bannerHeight;\n                        const stackedDisplaceTop: number = innerHeight + bannerHeight;\n                        \n\n\n                        if (offset >= this.displaceThreshold + this.displaceOffset - headerOffsetScroll - this.stickyActivationMargin && this.headerStickyState) {\n                        /* End - 8.10.1 - Support product page (SPD) */\n\n                            this.setStickyParentMinHeight(getStickyBoundaryHeight(this.displaceByElement));\n                            \n\n                            this.displaceByElement.classList.add(this.stickyClass);\n                            this.displaceByElement.classList.add('has-shadow');\n                            this.displaceByElement.style.opacity = '1';\n\n                            /* Start - 8.10.1 - Support product page (SPD) */\n                            if (!hasStickyScroll && headerOwner) {\n                                this.headerWrapper.classList.remove('ehtw-shadow-fly');\n                                this.headerWrapper.classList.remove('has-shadow');\n                            }\n                            /* End - 8.10.1 - Support product page (SPD) */\n                            \n\n                            const shouldHideHeader: boolean = !stickyStack && this.isScrollingDown && offsetDiff > this.togetherOffset + this.displaceOffset;\n                            const anchorNavInstance = HeaderDesktopScrollBehavior.instances.find(instance =>\n                                instance.displaceByElement?.matches(HeaderDesktopScrollBehavior.ANCHOR_NAV_SELECTOR));\n                            const anchorNavIsSticky: boolean = !!anchorNavInstance?.displaceByElement?.classList.contains(this.stickyClass);\n                            const anchorNavOffsetDiff: number = anchorNavInstance ? offset - anchorNavInstance.displaceThreshold : -Infinity;\n                            const shouldHideBottomNav: boolean = this.isScrollingDown && anchorNavIsSticky\n                                && anchorNavOffsetDiff > (anchorNavInstance?.stickyOffset ?? 300);\n                            const bottomNavHeight: number = this.bottomNav?.offsetHeight || 0;\n\n                            let dispplaceTopStacked = 0;\n                            if (!shouldHideHeader && stickyStack) {\n                                const stackedElems = $('[data-sticky-stack].is-sticky');\n\n                                stackedElems.removeClass('is-sticky-stacked');\n\n                                if (this.displaceByElement.dataset['stickyStackSorting'] === undefined) {\n                                    this.displaceByElement.dataset['stickyStackSorting'] = stackedElems.length + '';\n                                }\n\n                                const stackedSorting = +(this.displaceByElement.dataset['stickyStackSorting']??0);\n                                stackedElems\n                                    .filter(x => +(stackedElems[x].dataset['stickyStackSorting']??0) < stackedSorting)\n                                    .each(x => {\n\n                                        $(stackedElems[x]).addClass('is-sticky-stacked');\n                                        dispplaceTopStacked += stackedElems[x].offsetHeight;\n                                    });\n\n                                \n                            }\n\n                            displaceTop = shouldHideHeader ? collapsedDisplaceTop : (stackedDisplaceTop + dispplaceTopStacked);\n                            if (shouldHideBottomNav) {\n                                displaceTop -= bottomNavHeight;\n                            }\n\n                            if (headerOwner) {\n                                let headerTopValue: number = shouldHideHeader ? hiddenHeaderTop : visibleHeaderTop;\n                                if (shouldHideBottomNav) {\n                                    headerTopValue -= bottomNavHeight;\n                                }\n                                headerTop = `${headerTopValue}px`;\n                            }\n                        } else {\n                            this.displaceByElement.style.opacity = '1';\n                            displaceTop = collapsedDisplaceTop;\n                            this.displaceByElement.classList.remove(this.stickyClass);\n\n                            this.stickyBoundaryHeightMax = 0;\n                            this.resetStickyParentMinHeight();\n                            \n                            this.displaceByElement.classList.remove('has-shadow');\n\n                            if (headerOwner) {\n                                this.headerWrapper.classList.add('ehtw-shadow-fly');\n                                this.headerWrapper.classList.add('has-shadow');\n                            }\n                        }\n\n                        if (offsetDiff > 0 && offsetDiff < this.displaceOffset) {\n                            this.displaceByElement.style.opacity = '0';\n                        }\n\n                        /* Start - 5.15.1 PID Revamp - technical Package 2 */\n                        const wrapBottomDesktop = this.wrapElement ? offsetTopToBody(this.wrapElement) + this.wrapElement.offsetHeight : Infinity;\n                        const normalDisplaceTopDesktop = displaceTop;\n                        const isOverflowingDesktop = this.displaceByElement.classList.contains('sticky-overflow');\n                        const stickyBoundaryHeightDesktop = getStickyBoundaryHeight(this.displaceByElement);\n                        this.stickyBoundaryHeightMax = Math.max(this.stickyBoundaryHeightMax, stickyBoundaryHeightDesktop);\n                        const stableStickyBoundaryHeightDesktop = Math.max(stickyBoundaryHeightDesktop, this.stickyBoundaryHeightMax);\n                        const overflowTopDesktop = wrapBottomDesktop - offset - stableStickyBoundaryHeightDesktop;\n                        const clampedDisplaceTopDesktop = Math.min(normalDisplaceTopDesktop, overflowTopDesktop);\n                        const shouldOverflowDesktop = this.wrapElement ? clampedDisplaceTopDesktop < normalDisplaceTopDesktop : false;\n\n                        if (shouldOverflowDesktop) {\n                            if (!isOverflowingDesktop) {\n                                this.displaceByElement.classList.add('sticky-overflow');\n                            }\n                            displaceTop = clampedDisplaceTopDesktop;\n                            this.displaceByElement.style.setProperty('--overflowOffset', `${clampedDisplaceTopDesktop}px`);\n\n                            const sorting = +(this.displaceByElement.dataset['stickyStackSorting']??0);\n                            const previousStaked = $('[data-sticky-stack-sorting=' + (sorting-1) + ']');\n                            previousStaked.removeClass('is-sticky-stacked');\n\n                        } else if (isOverflowingDesktop) {\n                            this.displaceByElement.classList.remove('sticky-overflow');\n                            this.displaceByElement.style.removeProperty('--overflowOffset');\n                        }\n                        /* End - 5.15.1 PID Revamp - technical Package 2 */\n\n                        this.displaceByElement.style.top = `${displaceTop}px`;\n\n                    } else {\n                        if (headerOwner) {\n                            this.headerWrapper.classList.add('ehtw-shadow-fly');\n                            this.headerWrapper.classList.add('has-shadow');\n                        }\n                    }\n\n                    if (headerOwner) {\n                        this.triggerChange();\n                        this.headerWrapper.style.top = headerTop;\n                    }\n\n            }\n\n            publishHeaderBottom(this.headerWrapper);\n        }\n\n        private triggerChange(): void {\n            const bannerHeight = this.marketChooser?.offsetHeight || 0;\n            const offset: number = ScrollPage.getScrollRoot().scrollTop() || 0;\n            let visibleHeaderHeight = Math.max(0, Math.min(0, this.headerWrapper.offsetTop) + this.headerWrapper.offsetHeight);\n            let visibledisplaceElemHeight = 0;\n            if (this.displaceByElement && $(this.displaceByElement).hasClass(this.stickyClass)) {\n                visibledisplaceElemHeight = getVisibleViewportHeight(this.displaceByElement);\n            }\n            if (offset == 0) {\n                visibleHeaderHeight = Math.max(this.headerInitialHeight, visibleHeaderHeight) + bannerHeight;\n            }\n\n            const metrics: IHeaderMetrics = {\n                visibleHeaderHeight,\n                visibleDisplaceElemHeight: visibledisplaceElemHeight,\n                headerStickyState: this.headerStickyState,\n            };\n            const metricsKey: string = `${metrics.visibleHeaderHeight}|${metrics.visibleDisplaceElemHeight}|${metrics.headerStickyState}`;\n\n            if (metricsKey === this.lastMetricsKey) {\n                return;\n            }\n\n            this.lastMetricsKey = metricsKey;\n\n            $(':root').trigger(HEADER_EVENTS.DOM_MUTATION, [metrics]);\n        }\n    }\n}","namespace eh {\n  \n  export class IframeScale {\n\n    static init($base: JQuery<HTMLElement>): void {\n        $('.eh-iframe-scaled').each((_index, element) => {\n            const iframe = $(element);\n            const baseline = parseInt(iframe.data('original-width') || '1270');\n            const width = iframe.width() || 0;\n            const scaled = Math.min((width / baseline), 1);\n            iframe.css({'transform': 'scale(' + scaled  + ')', 'width': baseline + 'px'});\n            if(iframe.hasClass('eh-iframe-scale-height')) {\n                const parent = iframe.parent();\n                iframe.height((parent.innerHeight() || 0) * (1 / scaled));\n            }\n\n            const resizeFrame = this.debounce(function() {\n                const parentWidth = iframe.parent().width() || 0;\n                const scaledResized = Math.min((parentWidth / baseline), 1);\n                iframe.css({'transform': 'scale(' + scaledResized  + ')'});\n                if(iframe.hasClass('eh-iframe-scale-height')) {\n                    const parent = iframe.parent();\n                    iframe.height((parent.innerHeight() || 0) * (1 / scaledResized));\n                }\n            }, 250);\n            \n            window.addEventListener('resize', resizeFrame);\n        });\n    }\n\n    private static debounce<F extends Function>(func: F, wait: number):F {\n        let timeout: number;\n      \n        return <F><any>function(this: any, ...args: any[]) {\n            clearTimeout(timeout);\n            const context = this;\n      \n            timeout = window.setTimeout(function() {\n                  func.apply(context, args);\n            }, wait);\n         };\n      };\n\n  }\n\n}\n","interface ISelectOptionWrapper {\n    disabled: boolean;\n    loading: boolean;\n    id: string;\n    text: string;\n    element?: HTMLOptionElement;\n}\n\nnamespace eh {\n\n    export class LanguageChooser {\n\n        static init($base: JQuery<HTMLElement>): void {\n            //// For Microsites\n            //$('.eh-language-chooser-inline', $base).select2({\n            //  theme: 'endress-inline',\n            //  containerCssClass: 'eh-link--01',\n            //  dropdownAutoWidth: true,\n            //  width: 'auto',\n            //  minimumResultsForSearch: -1\n            //});\n\n            function goToLanguageChooseLinkFormatter(optionEl: ISelectOptionWrapper) {\n                if (!optionEl.id\n                    || optionEl.element && $(optionEl.element).data('eh-key') !== 'LANGUAGE_CHOOSER_LINK_OPTION'\n                ) {\n                    return optionEl.text;\n                }\n                const $optionEl = $('<span class=\"eh-select--language-chooser-link ehel-language-link\">' + optionEl.text + '</span>');\n                return $optionEl;\n            };\n\n            Breakpoints.getInstance().registerChangeListener((_old: Breakpoint, _current: Breakpoint): void => {\n                $('.eh-language-chooser-inline', $base).select2('close');\n            });\n\n            document.addEventListener('scroll', function() {\n              if ($('.eh-language-chooser-inline').select2) {\n                  $('.eh-language-chooser-inline').select2('close');\n              }\n            }, {\n              passive: true,\n            });\n\n            $('.eh-language-chooser-inline', $base)\n                .select2({\n                    theme: 'endress-inline',\n                    containerCssClass: 'eh-link--dropdown-arrow', // add custom flavor\n                    dropdownAutoWidth: true,\n                    dropdownCssClass: 'eh-language-chooser-inline--dropdown',\n                    width: 'auto',\n                    minimumResultsForSearch: -1,\n                    templateResult: goToLanguageChooseLinkFormatter,\n                    templateSelection: goToLanguageChooseLinkFormatter\n                })\n                .show().on('change', (event) => {\n                if (!event.currentTarget.dataset.notLanguageChooser) {\n                    if ($(event.currentTarget).val()) {\n                        window.location.href = '' + $(event.currentTarget).val();\n                    }\n                }\n            });\n        }\n    }\n}\n","namespace eh {\n  \n  export class LinkTarget {\n    \n    static isExternalAnchor(el : any, treatCorporateWebsitesAsExternal = true): boolean {\n      if (el instanceof HTMLAnchorElement) {\n        return !!el.hostname && el.hostname !== location.hostname\n          && !el.getAttribute('data-lightbox')\n          && !el.getAttribute('target')\n          && (treatCorporateWebsitesAsExternal || !LinkTarget.isCorporateWebsiteUrl(el.href))\n        ;\n      }\n      return false;\n    }\n  \n    static isCorporateWebsiteUrl(url: string) {\n      return new RegExp('^https://(?:(?:(?:(?:live|staging)-[dqp])|www)\\\\.)?[a-z]{2}(?:sc|w)?\\\\.endress\\\\.com(?:\\\\.cn)?(?::[0-9]{4})?(?:$|/|\\\\?|#).*').test(url);\n    }\n\n    static init($base: JQuery<HTMLElement>): void {\n      $('a', $base).filter((i, el) => {\n        return LinkTarget.isExternalAnchor(el, false);\n      }).attr(\"target\", \"_blank\");\n\n      // concept: define clickable area, define href inside, allow exclusion areas\n      // '.eh-trigger-link-target' define clickable elem\n      // '.eh-link-target' define href holder inside\n      // '.eh-link-target-exclude' exclude inner component \n      $('.eh-trigger-link-target', $base).each((_index, el) => {\n        let $linkedArea: JQuery<HTMLElement> = $(el);\n        $linkedArea.on('click', function ($event) {\n          let $target = $linkedArea.find('.eh-link-target:first'),\n              linkTarget = $target.attr('href');\n          if ($($event.target).closest('a').length === 1) { // anchor in target chain => clicked directly\n            return;\n          }\n          if ($($event.target).closest('.eh-link-target-exclude').length === 1 || $target.hasClass('disabled')) {\n            return;\n          }\n          if ($target.length !== 1) {\n            return;\n          }\n          if ($target.data('lightbox')) {\n            // delegate to lightbox click handler\n            $target.triggerHandler('click');\n            return;\n          }\n          $event.preventDefault();\n          if (linkTarget && linkTarget !== '#') {\n            const windowName = $target.attr('target') || '_self';\n            if (windowName === '_self') {\n              window.location.href = linkTarget;\n            } else {\n              window.open(linkTarget, windowName);\n            }\n          }\n          else {\n            // generate standard DOM event in order to trigger foreign code, e.g. NeBP\n            let event: MouseEvent;\n            if (typeof MouseEvent === 'function') {\n              event = new MouseEvent('click', {\n                view: window,\n                bubbles: true,\n                cancelable: true\n              });\n            }\n            else {\n              event = document.createEvent('MouseEvent');\n              event.initEvent('click', true, false);\n            }\n            $target.get(0)?.dispatchEvent(event);\n          }\n        });\n      });\n\n      // concept: bounding area, define href holder inside, allow inner clickable areas ref to that\n      // '.eh-link-area' define bounding elem\n      // '.eh-area-target' define href holder inside\n      // '.eh-area-target-ref' define clickable inner component\n      $('.eh-area-target-ref', $base).each((_index, el) => {\n        let $areaRef: JQuery<HTMLElement> = $(el);\n        $areaRef.on('click', function ($event) {\n          let $target = $areaRef.closest('.eh-link-area').find('.eh-area-target:first'),\n              linkTarget = $target.attr('href');\n          if ($($event.target).closest('a').length === 1) { // anchor in target chain => clicked directly\n            return;\n          }\n          if ($target.hasClass('disabled')) {\n            return;\n          }\n          if ($target.length !== 1) {\n            return;\n          }\n          if ($target.data('lightbox')) {\n            // delegate to lightbox click handler\n            $target.triggerHandler('click');\n            return;\n          }\n          $event.preventDefault();\n          if (linkTarget && linkTarget !== '#') {\n            const windowName = $target.attr('target') || '_self';\n            if (windowName === '_self') {\n              window.location.href = linkTarget;\n            } else {\n              window.open(linkTarget, windowName);\n            }\n          }\n          else {\n            // generate standard DOM event in order to trigger foreign code, e.g. NeBP\n            let event: MouseEvent;\n            if (typeof MouseEvent === 'function') {\n              event = new MouseEvent('click', {\n                view: window,\n                bubbles: true,\n                cancelable: true\n              });\n            }\n            else {\n              event = document.createEvent('MouseEvent');\n              event.initEvent('click', true, false);\n            }\n            $target.get(0)?.dispatchEvent(event);\n          }\n        });\n      });\n    }\n    \n  }\n  \n}\n","namespace eh {\n  \n  export class LoadingIndicator {\n    \n    private static spinner: JQuery<HTMLElement> | null;\n\n    static init(): void {\n    }\n\n    /** find closest indication target and activate */\n    public static showLoadingByEv(event: JQuery.TriggeredEvent):void {\n      if(event && event.target instanceof HTMLElement) {\n        let evTarget = <HTMLElement> event.target;\n        this.showLoading($(evTarget));\n      };\n    }\n\n    /** find closest indication target and activate */\n    public static showLoading(target: JQuery<HTMLElement> | null):void {\n      if(target) {\n        LoadingIndicator.showSpinner(LoadingIndicator.findLoadCtrl(target));\n      }\n    }\n\n    /** hide current indicator */\n    public static hideLoading():void {\n      LoadingIndicator.hideSpinner();\n    }\n\n    /** find closest elem to add indicator, null if 'no indication' is closer */\n    private static findLoadCtrl(target: JQuery<HTMLElement>): JQuery<HTMLElement> | null {\n      if(target) {\n        let ctrl = target.closest('.eh-load-wrapper, .eh-noload-wrapper');\n        if(ctrl && ctrl.hasClass('eh-load-wrapper')){\n          if(ctrl.hasClass('eh-load-ctrl')) {\n            return ctrl;\n          }\n          return ctrl.find('.eh-load-ctrl');        \n        }\n      }\n      return null;\n    }\n\n    private static showSpinner(loadCtrl: JQuery<HTMLElement> | null): void {\n      if(loadCtrl && !loadCtrl.hasClass('is-loading')) {\n        LoadingIndicator.hideSpinner();\n        loadCtrl.addClass('is-loading');\n        LoadingIndicator.spinner = loadCtrl;\n      }\n    }\n\n    private static hideSpinner(): boolean {\n      if(LoadingIndicator.spinner)  {\n        LoadingIndicator.spinner.removeClass('is-loading');\n        LoadingIndicator.spinner = null;\n        return true;\n      }\n      return false;\n    }\n  }\n}\n","\ninterface EhLoginButtonOptions {}\n\ninterface JQuery {\n    ehLoginButton(optionsOrKey?: Partial<EhLoginButtonOptions> | ehLoginButtonCommands,\n                     value?: string): JQuery;\n}\n\ntype ehLoginButtonCommands = 'login' | 'logout';\n\n/* e.g.:\n  <a href=\"#\" class=\"eh-login-button eh-link eh-icon-button eh-icon-button--large eh-button--02\"\n     data-label=\"Login\"\n     onclick=\"this.classList.add('is-logged-in'); this.classList.add('has-label'); this.querySelector('.eh-label').innerText = 'FP'; return false;\">\n    <i class=\"eh-icon icon-eh-user\"></i>\n    <span class=\"eh-label\">Login 2</span>\n  </a>\n*/\n\n$.fn.ehLoginButton = function (optionsOrCommand?: Partial<EhLoginButtonOptions> | ehLoginButtonCommands,\n                                  value?: string | number | boolean): JQuery {\n\n    const config: EhLoginButtonOptions = {};\n\n    if (typeof optionsOrCommand === 'string') {\n        if (optionsOrCommand === 'login') {\n            this.each((_index, el) => {\n                const $original: JQuery<HTMLElement> = $(el);\n                const $label: JQuery<HTMLElement> = $('.eh-label', $original);\n                if (!!value) {\n                    // set abbreviation\n                    $original.addClass('is-logged-in');\n                    $original.addClass('has-label');\n                    $label.text(value);\n                } else {\n                    // show icon\n                    $original.addClass('is-logged-in');\n                    $original.removeClass('has-label');\n                }\n            });\n        }\n        if (optionsOrCommand === 'logout') {\n            this.each((_index, el) => {\n                const $original: JQuery<HTMLElement> = $(el);\n                const $label: JQuery<HTMLElement> = $('.eh-label', $original);\n                // reset\n                $original.removeClass('is-logged-in');\n                $original.removeClass('has-label');\n                $label.text($original.data('label'));\n            });\n        }\n    } else {\n        $.extend(config, optionsOrCommand);\n        this.each((_index, el) => {\n            const $original: JQuery<HTMLElement> = $(el);\n            const $label: JQuery<HTMLElement> = $('.eh-label', $original);\n\n            if (!$original.data('label')) {\n                throw new Error('default label is missing');\n            }\n\n            $label.text($original.data('label'));\n        });\n    }\n\n    return this;\n};\n","namespace eh {\n\n    interface MaintenanceInfoI {\n        available: boolean,\n        maintenanceAnnouncementEnabled: boolean,\n        maintenanceInfo: string,\n    }\n\n    export class Maintenance {\n\n        static init($base: JQuery<HTMLElement>): void {\n            if ((window.eh as any).maintenanceInfo) {\n                this.apply($base);\n\n            } else {\n                document.addEventListener(\"MaintenanceInfo:loaded\", () => this.apply($(':root')), {once: true});\n            }\n        }\n\n        private static apply($base: JQuery<HTMLElement>) {\n            const info = (window.eh as any).maintenanceInfo.nebp as MaintenanceInfoI\n            if (info.available) {\n                $('.js-nebp-cleanup', $base).each(function (index, element) {\n                    element.classList.remove('disabled');\n                });\n                $('.add-to-cart', $base).each(function (index, element) {\n                    element.classList.remove('disabled');\n                });\n                $('.js-nebp-cleanup-eh-link', $base).each(function (index, element) {\n                    element.classList.remove('disabled');\n                    element.classList.remove('ehtw-cursor-default');\n                    if (!element.classList.contains('eh-login-button')) {\n                        element.classList.add('eh-link');\n                    }\n                    if (element.classList.contains('eh-login-button')) {\n                        element.setAttribute(\"href\", '#');\n                    }\n                });\n                // 5.15.3 - use this for \"pc\"\n                $('.js-nebp-required', $base).each(function (index, element) {\n                    element.classList.remove('is-disabled', 'disabled', 'nebp-unavailable');\n                    element.classList.toggle('[&.disabled]:ehtw-cursor-not-allowed', false);\n                    if(element.dataset.preNebpReqTitle) {\n                        element.title = element.dataset.preNebpReqTitle ?? '';\n                    } else {\n                        element.classList.remove('tooltip');\n                        element.removeAttribute('title');\n                    }\n                });\n            }\n            if (!info.available) {\n                $('.marker-login-link, .add-to-cart, .js-nebp-cleanup', $base).each(function (index, element) {\n                    element.classList.add('disabled');\n                });\n                $('.js-nebp-cleanup-eh-link', $base).each(function (index, element) {\n                    element.classList.remove('eh-link');\n                    element.classList.add('disabled');\n                    element.classList.add('is-disabled');\n                    element.classList.add('ehtw-cursor-default');\n                    if (!element.classList.contains('eh-login-button')) {\n                        element.setAttribute(\"href\", '#');\n                    }\n\n                    // check is-logged-in ??\n                });\n                // 5.15.3 - use this for \"pc\"\n                $('.js-nebp-required', $base).each(function (index, element) {\n                    element.classList.add('disabled', 'is-disabled', 'nebp-unavailable');\n                    element.classList.toggle('[&.disabled]:ehtw-cursor-not-allowed', true);\n                    if (info.maintenanceAnnouncementEnabled) {\n                        if (((element.title ?? '').length > 0) && (!element.dataset.preNebpReqTitle)) {\n                            element.dataset.preNebpReqTitle = element.title ?? '';\n                        }\n                        element.classList.toggle('tooltip', true);\n                        element.title = info.maintenanceInfo;\n                    }\n                });\n            }\n\n\n            $('.js-nebp-cleanup, .add-to-cart, .js-nebp-cleanup-eh-link, .marker-login-link', $base).each(function (index, element) {\n                if (info.maintenanceAnnouncementEnabled) {\n                    element.title = info.maintenanceInfo;\n                } else {\n                    element.classList.remove('tooltip');\n                }\n            });\n        }\n    }\n}\n","namespace eh {\n  \n  /*\n   - show or hide language selector\n   - update button link with target url\n   - execute link and close overlay\n   - execute close / goto-www link and close overlay\n   - open overlay on startup\n   - set cookie before execution\n   */\n  export class MarketChooser {\n    \n    public static readonly SELECTOR = '.marker-market-chooser-www';\n    public static readonly DATA_KEY = 'ehMarketChooser';\n    public static readonly HOLDER_ID = 'marketChooserHolder';\n    \n    private static readonly CLASS_HIDDEN = 'eh--hide';\n    \n    static init($base: JQuery<HTMLElement>): void {\n      \n      $(MarketChooser.SELECTOR, $base).each((_index, el) => {\n        const $marketChooserRoot = $(el);\n  \n        const mc = new MarketChooser($marketChooserRoot);\n        $marketChooserRoot.data(MarketChooser.DATA_KEY, mc);\n        $marketChooserRoot.one(eh.Overlay.EventIdPreClose, () => {\n          mc.rememberCountryChooserShown();\n        });\n        \n        const $holder = $marketChooserRoot.selfOrClosest('#' + MarketChooser.HOLDER_ID);\n        // replaced by merketselector header\n        // if ($holder.length === 1) {\n        //   // on pageload trigger open in overlay\n        //   const msg = new Message('*:open-id');\n        //   msg.putParam('title', $holder.data('heading'));\n        //   msg.putParam('id', MarketChooser.HOLDER_ID);\n        //   window.postMessage(msg, '*');\n        // }\n        \n        $marketChooserRoot.selfOrClosest('.marker-market-chooser-www').each((_index, el) => {\n          const $el = $(el);\n          $el.selfOrFind('.js-overlay-close, .eh-overlay--close').removeClass('disabled');\n          $el.selfOrFind('.js-overlay-close:not(.disabled, [disabled]), .eh-overlay--close:not(.disabled, [disabled])')\n            .on('click', $event => {\n            $event.preventDefault();\n            mc.rememberCountryChooserShown();\n            $el.replaceWith('');\n          });\n          // this was .selfOrFind('.disabled'), which also found a disabled link in NeBP Maintenance mode\n          $el.selfOrFind('.trigger-choose-market').removeClass('disabled');\n        });\n        \n      });\n      \n    }\n    \n    private readonly $buttonChoose: JQuery<HTMLElement>;\n    private readonly $languageSection: JQuery<HTMLElement>;\n    private readonly $selectCountry: JQuery<HTMLElement>;\n    private readonly $selectLanguage: JQuery<HTMLElement>;\n    private readonly context;\n    \n    constructor(public readonly $elem: JQuery<HTMLElement>) {\n      this.$selectCountry = $('#country', this.$elem);\n      if (this.$selectCountry.length === 0) {\n        this.$selectCountry = $('#country2', this.$elem);\n      }\n      this.$selectLanguage = $('#language', this.$elem);\n      this.$buttonChoose = $('.trigger-choose-market', this.$elem);\n      this.$languageSection = $('.marker-language-section', this.$elem);\n      this.context = this.$elem.data('marketChooserContext') ?? '';\n      \n      this.$selectCountry.on('change', this.handleCountryChange);\n      this.$selectLanguage.on('change', this.handleLanguageChange);\n      this.$buttonChoose.on('click', this.handleChooseButtonClick);\n  \n      this.handleCountryChange();\n    }\n    \n    private manageLanguageVisibility() {\n      if (this.$selectLanguage.length === 0) {\n        return;\n      }\n      const $selectedCountry = $('option:selected', this.$selectCountry);\n      const countryCode = $selectedCountry.val();\n      const $languageOptions = $(`option[data-country-code=\"${countryCode}\"]`, this.$selectLanguage);\n      const showLanguages = $languageOptions.length > 1;\n      let selectNextOption = $languageOptions.filter(':selected').length === 0;\n      $('option', this.$selectLanguage).each((_index, el) => {\n        const $option = $(el);\n        const showOption = $option.data('countryCode') === countryCode;\n        if (showOption && selectNextOption) {\n          $option.prop('selected', true);\n          selectNextOption = false;\n        }\n        $option.prop('disabled', !showOption).toggleClass(MarketChooser.CLASS_HIDDEN, !showOption);\n      });\n      this.$languageSection.toggleClass(MarketChooser.CLASS_HIDDEN, !showLanguages);\n      this.$selectLanguage.trigger('change');\n    }\n    \n    private handleCountryChange = () => {\n      const $selected = $('option:selected', this.$selectCountry);\n      this.$buttonChoose.attr('href', $selected.data('link')).data('chosenTarget', $selected.data('chosenTarget'));\n      this.manageLanguageVisibility();\n    };\n    \n    private handleLanguageChange = () => {\n      const $selected = $('option:selected', this.$selectLanguage);\n      this.$buttonChoose.attr('href', $selected.data('link')).data('chosenTarget', $selected.data('chosenTarget'));\n    };\n    \n    private handleChooseButtonClick = () => {\n      const marketChooserTarget = this.$buttonChoose.data('chosenTarget');\n      eh.setCookie('ii-country-redirect', marketChooserTarget, 90, false, 'Lax');\n      this.rememberCountryChooserShown();\n    };\n  \n    public rememberCountryChooserShown() {\n      if (!this.context) {\n        return;\n      }\n      eh.setCookie(this.context + '-countrychooser-shown', '1', 0, false, 'Lax');\n    }\n    \n  }\n}","namespace eh {\n\n    /*\n     - show or hide language selector\n     - update button link with target url\n     - execute link and close overlay\n     - execute close / goto-www link and close overlay\n     - open overlay on startup\n     - set cookie before execution\n     */\n    interface MarketSelectorEntry {\n        site?: string;\n        countryCode?: string;\n        label?: string;\n        selected?: boolean;\n        targetLocale?: string;\n        url?: string;\n    }\n\n    export class MarketSelector {\n\n\n        public static readonly SELECTOR = '.marker-market-selector ';\n        public static readonly DATA_KEY = 'ehMarketSelector';\n        public static readonly HOLDER_ID = 'marketChooserHolder';\n\n        private static readonly CLASS_HIDDEN = 'eh--hide';\n        public static uiStateSupport: eh.UIObservableSupport = new UIObservableSupport(UIStateChanged.uiStateMarketHeader);\n\n        static init($base: JQuery<HTMLElement>): void {\n\n            $(MarketSelector.SELECTOR, $base).each((_index, el) => {\n                const $marketChooserRoot = $(el);\n                const used = eh.getCookie($marketChooserRoot.data('cookieName')) === ('' + $marketChooserRoot.data('cookieUsedValue'))\n                const cookieBannerShown = eh.getCookie('euhcookiedisclaimer') === (''+2);\n                if (cookieBannerShown) {\n                    if (!used || $marketChooserRoot.data('inline') === true) {\n                        const url = $marketChooserRoot.data('snippetUrl');\n                        if (url) {\n                            const jqXHR = $.ajax({\n                                'url': url,\n                                'dataType': 'json',\n                                'method': 'get'\n                            });\n                            jqXHR.then(\n                                (data: MarketSelectorEntry[]) => {\n                                    if (data) {\n                                        data.forEach(d => $marketChooserRoot.find(\"select\").prepend(`<option value=\"${d.url}\" ${d.selected ? 'selected' : ''}>${d.label}</option>`));\n                                        $marketChooserRoot.removeClass('eh--hide');\n                                        const mc = new MarketSelector($marketChooserRoot);\n                                        $marketChooserRoot.data(MarketSelector.DATA_KEY, mc);\n                                        $marketChooserRoot.one(eh.Overlay.EventIdPreClose, () => {\n                                            mc.rememberCountryChooserShown();\n                                        });\n                                        if (el.classList.contains('marker-market-selector-header')) {\n                                            MarketSelector.uiStateSupport.init(el);\n                                        }\n                                    }\n                                },\n                                (_jqXHR, textStatus, errorThrown) => {\n                                }\n                            );\n\n                        }\n                    }\n                }\n\n            });\n\n        }\n\n        private readonly $buttonChoose: JQuery<HTMLElement>;\n        private readonly $selectCountryAndLanguage: JQuery<HTMLElement>;\n\n        constructor(public readonly $elem: JQuery<HTMLElement>) {\n            this.$selectCountryAndLanguage = $('.ehel-language-selector-select', this.$elem);\n            this.$buttonChoose = $('.trigger-choose-market', this.$elem);\n            this.$selectCountryAndLanguage.on('change', this.handleCountryChange);\n            this.$buttonChoose.on('click', this.handleChooseButtonClick);\n            this.handleCountryChange();\n            $('.js-market-chooser--close-button', this.$elem).on('click', () => this.closeBanner());\n            if (!this.$selectCountryAndLanguage.hasClass('select2-hidden-accessible')) {\n                this.$selectCountryAndLanguage.select2({\n                    theme: 'pc-endress-inline',\n                    containerCssClass: 'eh-link--dropdown-arrow', // add custom flavor\n                    dropdownAutoWidth: true,\n                    dropdownCssClass: 'ehel-language-selector-select--dropdown',\n                    width: 'auto',\n                    minimumResultsForSearch: -1,\n                    templateResult: this.goToLanguageChooseLinkFormatter,\n                    templateSelection: this.goToLanguageChooseLinkFormatter\n                })\n                    .show()\n            }\n            $elem.on('mousedown', 'textarea,.select2', function (event) {\n                event.currentTarget.classList.add('focus-click');\n            });\n\n            $elem.on('blur', '.select2', function (event) {\n                event.currentTarget.classList.remove('focus-click');\n                event.currentTarget.classList.remove('select2-container--focus');\n            });\n\n            $elem.on(\"focus.select2\", 'select', function (event) {\n                setTimeout(() => {\n                    $(event.target).select2('open');\n                    $(event.target).siblings('.select2').addClass('focus-click');\n                }, 10);\n            });\n            Breakpoints.getInstance().registerChangeListener((_old: Breakpoint | null, _current: Breakpoint): void => {\n                if ($('.ehel-language-selector-select').select2) {\n                    $('.ehel-language-selector-select').select2('close');\n                }\n            });\n\n            document.addEventListener('scroll', function () {\n                if ($('.ehel-language-selector-select').select2) {\n                    $('.ehel-language-selector-select').select2('close');\n                }\n            }, {\n                passive: true,\n            });\n        }\n\n        private goToLanguageChooseLinkFormatter(optionEl: ISelectOptionWrapper) {\n            if (!optionEl.id\n                || optionEl.element && $(optionEl.element).data('eh-key') !== 'LANGUAGE_CHOOSER_LINK_OPTION'\n            ) {\n                return optionEl.text;\n            }\n            const $optionEl = $('<span class=\"eh-select--language-selector-link ehel-language-link\">' + optionEl.text + '</span>');\n            return $optionEl;\n        };\n\n        private handleCountryChange = () => {\n            const $selected = $('option:selected', this.$selectCountryAndLanguage);\n            const val = $selected.val();\n            if ($selected.data('eh-key') !== 'LANGUAGE_CHOOSER_LINK_OPTION') {\n                this.$buttonChoose.attr('href', val as string).data('chosenTarget', $selected.data('chosenTarget'));\n            } else {\n                this.rememberCountryChooserShown();\n                eh.Tracking.injectTrackingEvent({'event_leaving_website': 'exit_other_application', 'event_outbound_link': '' + val}, $selected, 'content_link');\n                window.location.href = '' + val;\n            }\n        };\n\n        private handleChooseButtonClick = () => {\n            const marketChooserTarget = this.$buttonChoose.data('chosenTarget');\n            eh.setCookie('ii-country-redirect', marketChooserTarget, 90, false, 'Lax');\n            this.rememberCountryChooserShown();\n        };\n\n        public rememberCountryChooserShown() {\n            eh.setGlobalCookie('country-chooser-used', '1', 0, false, 'Lax');\n        }\n\n        public closeBanner() {\n            this.rememberCountryChooserShown();\n            this.$elem.remove();\n            if (this.$elem.hasClass('marker-market-selector-header')) {\n                MarketSelector.uiStateSupport.dispatch(UIStateValue.CLOSED);\n            }\n        }\n\n    }\n}","namespace eh {\n    /**\n     * The nexus represents a global registration on messaging through {@link window.postMessage}.\n     * Each window is represented by a {@link MessageNode}.\n     * A {@link MessageNode} handles all {@link IMessageHandler} registered for that window.\n     * The messages payload must be of format {@link Message}.\n     * The nexus listens for messages on the top level window. \n     * Nodes send messages to listeners by top level window method.\n     * Senders are identified by their event.source Window\n     */\n    export class MessageNexus {\n        static instance : MessageNexus = new MessageNexus;\n\n        static init() {\n\n        }\n        private _msgNodes: MessageNode[] = [];\n\n        /** Pass through to message node */\n        public static setListener(source: Window, callback: IMessageHandler) {\n            eh.MessageNexus.instance.getMessageNode(source).setListener(callback);\n        }\n\n        /** Pass through to message node */\n        public static removeListener(source: Window, callback: IMessageHandler) {\n            eh.MessageNexus.instance.getMessageNode(source).removeListener(callback);\n        }\n\n        /** get or create node for provided window */\n        public getMessageNode(target: Window): MessageNode {\n            // exists?\n            for (let msgNode of this._msgNodes) {\n                if (msgNode.getTarget() === target)\n                    return msgNode;\n            }\n            // else create\n            let msgNode = new MessageNode(target);\n            this._msgNodes.push(msgNode);\n            return msgNode;\n        }\n    \n        static _onMessage(e: MessageEvent) {\n            // message event received\n            let isAllowed = false;\n            try {\n                isAllowed = (e && e.source && (<Window>e.source).parent === window) === true;\n              } catch (e) {}\n            if(!isAllowed) {\n                return;\n            }\n            let msg : Message | null = null;\n            try {\n                if(typeof e.data === 'string') {\n                    msg = Message.fromLegacyString(e.data);\n                } else {\n                    msg = e.data;\n                }\n            } catch(e) {\n                return;\n            }\n\n            if(msg) {\n                msg.params = msg.params ? msg.params : {};\n                eh.MessageNexus.instance\n                    .getMessageNode((<Window>e.source))\n                    .messageReceived(msg, e);\n            }\n        }\n    }\n    window.addEventListener('message', eh.MessageNexus._onMessage);\n\n    /** \n     * The MessageNode represents one window's messaging service. \n     * IMessageHandlers register here with an unique id.\n     */\n    export class MessageNode {\n        private _listeners: { [index: string]: IMessageHandler } = {};\n\n        private readonly _target: Window;\n\n        constructor (target: Window) {\n            this._target = target;\n        }\n        \n        getTarget(): Window {\n            return this._target;\n        }\n\n        setListener(callback: IMessageHandler) {\n            this._listeners[callback.id] = callback;\n        }\n\n        removeListener(callback: IMessageHandler) {\n            // stop listening\n            delete this._listeners[callback.id];\n        }\n\n        messageReceived(data: Message, _event: MessageEvent) {\n            // message received\n            for (let key in this._listeners) {\n                this._listeners[key].onMessage(data);\n            }\n        }\n    }\n\n    /**\n     * A Message is send by window.postMessage()\n     * Message has following fields:\n     * @param method the requested actions name; \n     * Use 'params' object to add key | value strings \n     */\n    export class Message {\n        params: { [index: string]: string } = {};\n\n        static fromLegacyString(data: string) : Message | null {\n            let m = data.match(/^eho-iframe:(seamless\\d):(height|refresh):(\\d+)?:([a-z0-9\\-]+)?$/);\n            let msg : Message | null = null;\n            if (m) {\n                msg = new Message(m[2].substring(0, 4) !== 'eho:' ? 'eho:'+m[2] : m[2]);\n                msg.putParam('$$legacy', 'eho-iframe:');\n                if(m[1]) {\n                    msg.putParam('seamlessClass',m[1]);\n                }\n                if(m[3]) {\n                    msg.putParam('height', m[3]);\n                }\n                if(m[4]) {\n                    msg.putParam(\"id\", m[4]);\n                 }\n            }\n            return msg;  \n        }\n        constructor (public readonly method: string) { }\n\n        public putParam(k:string,v:string) {\n             this.params[k] = v;\n        }\n\n        public asLegacyParam() :string {\n            let me = this.method.substring(0, 4) === 'eho:' ? this.method.substring(4) : this.method;\n            let res = 'eho-iframe:'+me;\n            res = res + (this.params['seamlessClass']?this.params[':seamlessClass']:'');\n            res = res + (this.params['param']?this.params[':param']:'')+':';\n            res = res + (this.params['id']?this.params['id']:'');\n            return res;\n        }\n    }\n    \n    export interface IMessageHandler {\n        id: string;\n        onMessage(message: Message): void;\n    }\n    \n}","namespace eh {\n  \n  export class NebpProxy {\n    \n    private static readonly API_CALL_TIMEOUT_MS = 20_000;\n    private static readonly logger = log.getLogger('eh.NebpProxy');\n    private static readonly _instance: NebpProxy = new NebpProxy();\n    private readonly awaitingReady: eh.DeferredPromise<any>[] = [];\n    private stateReady = false;\n    \n    private constructor() {\n    }\n    \n    public static getInstance(): NebpProxy {\n      return NebpProxy._instance;\n    }\n    \n    public isReady() {\n      return this.stateReady;\n    }\n    \n    public markReady() {\n      this.stateReady = true;\n      this.awaitingReady\n          .splice(0, this.awaitingReady.length)\n          .forEach(p => p.execute());\n      return this;\n    }\n\n    private wrapCall<CallResult>(boundFnSupplier: () => () => Promise<CallResult>): Promise<CallResult> {\n      if (!this.isReady()) {\n        const deferredPromise = new eh.DeferredPromise<CallResult>(\n            function() {\n              try {\n                const boundFn = boundFnSupplier();\n                NebpProxy.logger.debug('resolving deferred promise', boundFnSupplier);\n                return this.resolve(boundFn());\n              }\n              catch (e) {\n                NebpProxy.logger.warn('rejecting deferred promise', e, boundFnSupplier);\n                return this.reject(e);\n              }\n            }\n        );\n        this.awaitingReady.push(deferredPromise);\n        return Promise.race<CallResult>([\n          deferredPromise,\n          new Promise<CallResult>((_resolve, reject) => \n            setTimeout(reject, NebpProxy.API_CALL_TIMEOUT_MS, 'nebpApi timed out'))\n        ]);\n      }\n      try {\n        const boundFn = boundFnSupplier();\n        NebpProxy.logger.debug('executing promise', boundFn);\n        return boundFn();\n      }\n      catch (e) {\n        NebpProxy.logger.warn('rejecting promise', e, boundFnSupplier);\n        return Promise.reject(e);\n      }\n    }\n    \n    public getToken(): Promise<JWToken> {\n      return this.wrapCall(() => window.nebpApi.getToken.bind(window.nebpApi));\n    }\n  \n    public isLoggedIn(): Promise<boolean> {\n      return this.wrapCall(() => window.nebpApi.isLoggedIn.bind(window.nebpApi));\n    }\n    \n    public isLoggedInUserRegistrationStateActivationInProcess(): Promise<boolean> {\n      return this.wrapCall(() => window.nebpApi.isLoggedInUserRegistrationStateActivationInProcess.bind(window.nebpApi));\n    }\n    \n    public isLoggedInUserRegistrationStateInformationMissing(): Promise<boolean> {\n      return this.wrapCall(() => window.nebpApi.isLoggedInUserRegistrationStateInformationMissing.bind(window.nebpApi));\n    }\n    \n    public getRegistrationState(): Promise<RegistrationState> {\n      return this.isLoggedIn()\n        .then(isLoggedIn => {\n          if (isLoggedIn) {\n            return this.isLoggedInUserRegistrationStateInformationMissing()\n              .then(isInformationMissing => {\n                if (isInformationMissing) {\n                  return RegistrationState.INFORMATION_MISSING;\n                }\n                else {\n                  return this.isLoggedInUserRegistrationStateActivationInProcess()\n                    .then(isActivationInProgress => {\n                      return isActivationInProgress ? RegistrationState.IN_PROGRESS : RegistrationState.FINISHED;\n                    })\n                  ;\n                }\n              })\n            ;\n          }\n          else {\n            return RegistrationState.UNKNOWN;\n          }\n        })\n        .catch((err) => {\n          NebpProxy.logger.error('getRegistrationState/catch', err);\n          return RegistrationState.UNKNOWN;\n        })\n      ;\n    }\n    \n  }\n  \n  export type JWToken = string | null;\n  \n  export enum RegistrationState {\n    UNKNOWN,\n    IN_PROGRESS,\n    INFORMATION_MISSING,\n    FINISHED\n  }\n  \n}\n\ninterface Window {\n  nebpApi: {\n    getToken: () => Promise<eh.JWToken>;\n    isLoggedIn: () => Promise<boolean>;\n    isLoggedInUserRegistrationStateActivationInProcess: () => Promise<boolean>;\n    isLoggedInUserRegistrationStateInformationMissing: () => Promise<boolean>;\n  }\n}","namespace eh {\n\n  export class OVERLAY_EVENTS {\n    static readonly EVENT_NODE_CLASS = 'ehts-overlay-events';\n    static readonly LAYER_STATE_EVENT: string = 'eh-overlay-on-layer-state';\n    static readonly LAYER_STATE_OPENED: string = 'opened';\n    static readonly LAYER_STATE_CLOSED: string = 'closed';\n  }\n  export interface OVERLAY_EVENT_PARAMS {\n    state: String;\n  }\n\n  export type OverlayContentType = 'video' | 'iframe' | 'iframe-fullw' | 'iframe-scaled' | 'local' | 'local-transp' | 'local-center' | 'raw' | 'local-s2' | 'local-s2w' | 'local-tw' | 'local-lightbox';\n\n  export class Overlay implements IMessageHandler {\n    public static readonly EventIdPreClose = 'ehOverlay:preClose';\n    private static readonly DATA_KEY__LOCAL_REF_ID = 'localRefId';\n    private static readonly DATA_KEY__OVERLAY_CONTENT = 'eh.Overlay.content';\n\n    public static readonly OVERLAY_BLOCKING_BANNER_CLASSNAME: string = 'ehel-blocking-banner-gating';\n    public static readonly OVERLAY_CONTENT_WRAPPER_CLASSNAME: string = 'ehel-overlay--overlay-content';\n  \n    private static readonly logger = log.getLogger('eh.Overlay');\n    private static instance: Overlay;\n    \n    public readonly id: string = ('eh-overlay-instance');\n    private readonly isMobileSafari: boolean;\n    // white bg\n    private readonly layer: JQuery<HTMLElement>;\n    private readonly layerContentWrapper: JQuery<HTMLElement>;\n    private readonly layerContent: JQuery<HTMLElement>;\n    private layerTitle: JQuery<HTMLElement>;\n    private layerClose: JQuery<HTMLElement>;\n    private contentCloser: JQuery<HTMLElement> | undefined;\n    // transparent bg\n    private readonly layerTransp: JQuery<HTMLElement>;\n    private readonly layerContentTransp: JQuery<HTMLElement>;\n    private layerTitleTransp: JQuery<HTMLElement>;\n    private layerCloseTransp: JQuery<HTMLElement>;\n    private contentCloserTransp: JQuery<HTMLElement> | undefined;\n    private blockingBanner: HTMLElement | null | undefined;\n\n\n    static init($base: JQuery<HTMLElement>, isSnippet: boolean): void {\n      if(!isSnippet) {\n        Overlay.instance = new Overlay($base);\n        eh.MessageNexus.setListener(window, Overlay.instance);\n      } else {\n        this.registerLinks($base);\n      }\n    }\n\n    static registerLinks($base: JQuery<HTMLElement>): void {\n      Overlay.instance?.registerOverlayLinks($base);\n    }\n\n    private static notifyLayerState(wrap: JQuery<HTMLElement>, isOpen:boolean) {\n      // find .ehts-overlay-events\n      // send event\n      wrap.selfOrFind(`.${OVERLAY_EVENTS.EVENT_NODE_CLASS}`).trigger(OVERLAY_EVENTS.LAYER_STATE_EVENT, {\n        'state': isOpen? OVERLAY_EVENTS.LAYER_STATE_OPENED : OVERLAY_EVENTS.LAYER_STATE_CLOSED\n      });\n    }\n\n    public static closeAll() {\n      Overlay.instance.closeLayer();\n      Overlay.instance.closeLayerTransp();\n    }\n\n    constructor(private readonly $base: JQuery<HTMLElement>) {\n      const userAgent = window.navigator.userAgent;\n      this.isMobileSafari = (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) !== null;\n      this.registerOverlayLinks(this.$base);\n      this.layer = $('.eh-marker-overlay-opaque');\n      if (this.isMobileSafari) {\n        this.layer.addClass('safari-mobile')\n      }\n      \n      this.layerContent = this.layer.find('.eh-overlay--content-body');\n      this.layerClose = this.layer.find('.eh-overlay--close');\n      this.layerTitle = this.layer.find('.eh-overlay--headline');\n\n      this.layerContentWrapper = $('.ehel-overlay--overlay-content');\n      \n      this.layerTransp = $('.eh-marker-overlay-transp');\n      if(this.isMobileSafari) {\n        this.layerTransp.addClass('safari-mobile')\n      }\n      this.layerContentTransp = this.layerTransp.find('.eh-overlay--content-body');\n      this.layerCloseTransp = this.layerTransp.find('.eh-overlay--close');\n      this.layerTitleTransp = this.layerTransp.find('.eh-overlay--headline');\n\n\n      $('.js-ol-close', this.layerTransp).on('click', (ev) => {\n        if ($(ev.target).selfOrClosest('.eh-overlay--content-body, .eh-overlay--close').length === 1) {\n          return;\n        }\n        ev.preventDefault();\n        this.closeLayerTransp();\n      });\n\n\n      this.blockingBanner = document?.querySelector(`.${Overlay.OVERLAY_BLOCKING_BANNER_CLASSNAME}`) as HTMLElement;\n\n      console.log('blockingBanner', this.blockingBanner);\n\n      if (this.blockingBanner) {\n        this.registerBlockingBanner();\n      }\n\n\n    }\n\n    onMessage(message : Message) {\n      if(message.params['$$legacy'] !== undefined) {\n        return; // not supported\n      }\n      if(message.method === '*:open-url') {\n        const title = message.params['title'];\n        const ref = message.params['url'];\n        if(ref) {\n          this.showContent(ref, title, 'iframe');  // oder iframe-scaled\n        }\n      }\n      else if(message.method === '*:open-id') {\n        const title = message.params['title'];\n        const ref = message.params['id'];\n        if(ref) {\n          this.showContent(ref, title, 'local');  // oder iframe-scaled\n        }\n      }\n      else if(message.method === '*:open-transp-id') {\n        const title = message.params['title'];\n        const ref = message.params['id'];\n        if(ref) {\n          this.showContentTransp(ref, title, 'local-transp');  // oder iframe-scaled\n        }\n      }\n      else if(message.method === '*:open-static2-id') { // FLEX\n        const title = message.params['title'];\n        const ref = message.params['id'];\n        if(ref) {\n          this.showContentTransp(ref, title, 'local-s2');  \n        }\n      }\n      else if(message.method === '*:open-static2-wide-id') { // FlexDesc\n        const title = message.params['title'];\n        const ref = message.params['id'];\n        if(ref) {\n          this.showContentTransp(ref, title, 'local-s2w'); \n        }\n      }\n    }\n  \n    private registerOverlayLinks($base: JQuery<HTMLElement>) {\n      $('[data-lightbox]:not([data-evict-lightbox=1])', $base).each((_index, el)  => {\n        const $link = $(el);\n        let type : OverlayContentType = $(el).data('lightbox') || 'iframe';\n        // FIXME: if feature on GEC is iframe-scaled and type is iframe ...:\n        // type = 'iframe-scaled';\n        $link.on('click', (event) => {\n          event.preventDefault();\n          if(!$link.hasClass('disabled')) {\n            const href = $link.attr('href') || '#';\n            const title = $link.data('title') || '';\n            if(type === 'local-transp') {\n              this.showContentTransp(href, title, type);\n            } else if (type === 'local-tw') {\n              return; \n            } if (type === 'local-lightbox') {\n              return;\n            } else {\n                this.showContent(href, title, type);\n            }\n          }\n        });\n      });\n      $('.js-overlay-close', $base).on('click', (ev) => {\n        if ($(ev.target).selfOrClosest('.eh-overlay--content-body, .eh-overlay--close').length !== 1) {\n          return;\n        }\n        ev.preventDefault();\n        this.closeLayerTransp();\n        this.closeLayer();\n      });\n    }\n\n    private openLayer(forceInit: boolean = false) {\n      this.closeLayerTransp(false);\n      this.layer.show();\n      if (this.getContentType() !== 'local' || forceInit) {\n        Overlay.notifyReplaced($(this.layer));\n      }\n      this.layerClose.on('click', (ev) => {\n        ev.preventDefault();\n        this.closeLayer();\n      });\n      eh.ScrollPage.setScrollEnabled(false, 'eh-no-scroll eh-full-height');\n      Overlay.notifyLayerState(this.layerContent, true);\n    }\n\n    private closeLayer(deferred:boolean = true) {\n      this.layer.hide();\n      this.layerClose.off('click');\n      if (this.contentCloser) {\n        this.contentCloser.off('click');\n      }\n      \n      const $el = this.layerContent.data(Overlay.DATA_KEY__OVERLAY_CONTENT);\n      $($el).trigger(jQuery.Event(Overlay.EventIdPreClose));\n      eh.ScrollPage.setScrollEnabled(true, 'eh-no-scroll eh-full-height');\n      if (deferred) {\n        setTimeout(() => { // allow the Tracking to access the content before it is removed\n          this.putBackLayer();\n        }, 0);\n      } else {\n        this.putBackLayer();\n      }\n      Overlay.notifyLayerState(this.layerContent, false);\n    }\n\n    private putBackLayer() {\n      if (['local'].indexOf(this.getContentType()) > -1) {\n        const refId = this.layer.data(Overlay.DATA_KEY__LOCAL_REF_ID);\n        if (refId) {\n          const contentParent = $('#'+refId);\n          if (contentParent.length === 1) {\n            if(this.layerContent.find('.is-wrapper').length > 0) {\n              contentParent.append(this.layerContent.find('.is-wrapper').children());\n            } else {\n              contentParent.append(this.layerContent.children());\n            }\n          }\n        }\n      } else {\n          this.layerContent.empty();\n      }\n    }\n\n    private openLayerTransp(forceInit: boolean = false) {\n      this.closeLayer(false);\n      this.layerTransp.show();\n      if (this.getContentType() !== 'local-transp' || forceInit) {\n        Overlay.notifyReplaced($(this.layerTransp));\n      }\n      this.layerCloseTransp.on('click', (ev) => {\n        ev.preventDefault();\n        this.closeLayerTransp();\n      });\n      eh.ScrollPage.setScrollEnabled(false, 'eh-no-scroll eh-full-height');\n      Overlay.notifyLayerState(this.layerTransp, true);\n    }\n\n    private closeLayerTransp(deferred = true) {\n      if(this.layerTransp.find('.eh-scroll-vertical').length === 1) {\n        this.layerTransp.find('.eh-scroll-vertical').scrollTop(0);\n      }\n      if (this.layerTransp.find('.eh-overlay--content-body').length === 1) {\n        this.layerTransp.find('.eh-overlay--content-body').scrollTop(0);\n      }\n      this.layerTransp.hide();\n      this.layerCloseTransp.off('click');\n      if (this.contentCloserTransp) {\n        this.contentCloserTransp.off('click');\n      }\n      const $el = this.layerContentTransp.data(Overlay.DATA_KEY__OVERLAY_CONTENT);\n      $($el).trigger(jQuery.Event(Overlay.EventIdPreClose));\n      eh.ScrollPage.setScrollEnabled(true, 'eh-no-scroll eh-full-height');\n      if(deferred) {\n        setTimeout(() => { // allow the Tracking to access the content before it is removed\n          this.putBackLayerTransp();\n        }, 0);\n      } else {\n        this.putBackLayerTransp();\n      }\n      Overlay.notifyLayerState(this.layerContentTransp, false);\n    }\n\n    private putBackLayerTransp() {\n      if (['local-transp', 'local-s2', 'local-s2w'].indexOf(this.getContentType()) > -1) {\n        const refId = this.layerTransp.data(Overlay.DATA_KEY__LOCAL_REF_ID);\n        if (refId) {\n          const $originalParent = $('#' + refId);\n          if ($originalParent.length === 1) {\n            const $contentParentWrapperToTransferBack = this.layerContentTransp.find('.is-wrapper');\n            const $contentParentToTransferBack = $contentParentWrapperToTransferBack.length > 0 ? $contentParentWrapperToTransferBack : this.layerContentTransp;\n            $originalParent.append($contentParentToTransferBack.children());\n          }\n          else {\n            Overlay.logger.debug('no single $originalParent found to put back', $originalParent);\n          }\n        }\n      } else {\n          this.layerContentTransp.empty();\n      }\n    }\n\n    /* dumb show */\n    public putContent(content: JQuery<HTMLElement>, title?: string) {\n      this.closeLayerTransp(false);\n      this.closeLayer(false);\n\n      if (this.contentCloser) {\n        this.contentCloser.off('click');\n      }\n      this.layerContent.empty();\n      \n      this.layerContent.data(Overlay.DATA_KEY__OVERLAY_CONTENT, content);\n      this.layerContent.append(eh.Overlay.createContentWrapper().append(content));\n      this.layerTitle.empty();\n      if (title) {\n        this.layerTitle.html(title);\n      }\n      this.setContentType('raw');\n      this.contentCloser = $('.js-overlay-close', this.layerContent);\n      this.contentCloser.on('click', (ev) => {\n        ev.preventDefault();\n        this.closeLayer();\n      });\n      \n      this.openLayer();\n    }\n\n    private showContent(href: string, title: string, type: OverlayContentType) {\n      const ref = this.analyzeRef(href);\n      this.closeLayerTransp(false);\n      this.closeLayer(false);\n\n      if (this.contentCloser) {\n        this.contentCloser.off('click');\n      }\n      this.layerContent.empty();\n      \n      const innerContent = this.getTemplate(type, ref);\n      this.layerContent.data(Overlay.DATA_KEY__OVERLAY_CONTENT, innerContent.children());\n      this.layerContent.append(innerContent);\n      this.setContentType(type);\n      this.layerTitle.empty();\n      this.layerTitle.html(title);\n      this.contentCloser = $('.js-overlay-close', this.layerContent);\n      this.contentCloser.on('click', (ev) => {\n        ev.preventDefault();\n        this.closeLayer();\n      });\n      this.openLayer();\n    }\n\n    private showContentTransp(href: string, title: string, type: OverlayContentType) {\n      const ref = this.analyzeRef(href);\n      this.closeLayerTransp(false);\n      this.closeLayer(false);\n\n      if (this.layerContentTransp.closest('.eh-scroll-vertical').length === 1) {\n        this.layerContentTransp.closest('.eh-scroll-vertical')[0].scrollTop = 0;\n      }\n      if (this.contentCloserTransp) {\n        this.contentCloserTransp.off('click');\n      }\n      this.layerContentTransp.empty();\n      \n      const innerContent = this.getTemplate(type, ref).children();\n      this.layerContentTransp.data(Overlay.DATA_KEY__OVERLAY_CONTENT, innerContent);\n      this.layerContentTransp.append(innerContent);\n      this.setContentType(type);\n      this.layerTitleTransp.empty();\n      this.layerTitleTransp.html(title);\n      this.contentCloserTransp = $('.js-overlay-close', this.layerContentTransp);\n      this.contentCloserTransp.on('click', (ev) => {\n        ev.preventDefault();\n        this.closeLayerTransp(true);\n      });\n      this.openLayerTransp();\n    }\n\n    private analyzeRef(ref: string): OverlayContentSource {\n      // ref might be: #id-1#id-2 | id-1 | /url | https://url\n      if (ref.search(new RegExp('^(/)|(https?://)')) > -1) {\n        return {type: 'url', url: ref};\n      }\n      const parts = ref.split('#');\n      if (parts.length === 1) {\n        return {type: 'id', id: parts[0]};\n      }\n      return {type: 'id', id: parts[1], additionalId: parts[2]};\n    }\n\n    private getTemplate(type: OverlayContentType, ref: OverlayContentSource): JQuery<HTMLElement> {\n      if (ref.type === 'url') {\n        switch (type) {\n          case 'video': {\n            return $(`<div class=\"eh-player\"><video class=\"eh-image eh-layout--display-block eh-full-width\" autoplay><source type=\"video/mp4\" src=\"${ref.url}\"/></video></div>`);\n          }\n          case 'iframe-fullw':\n          case 'iframe': {\n            return $(`<iframe class=\"eh-overlay--content-frame eh-no-b eh-full-width eh-full-height\" src=\"${ref.url}\" allow=\"fullscreen; clipboard-write;\"></iframe>`);\n          }\n          case 'iframe-scaled': {\n            return $(`<iframe class=\"eh-overlay--content-frame eh-no-b eh-full-width eh-full-height eh-iframe-scaled eh-iframe-scale-height\" src=\"${ref.url}\" allow=\"fullscreen; clipboard-write;\" data-original-width=\"1024\"></iframe>`);\n          }\n          default:\n            console.warn('overlay type ref mismatch', type, ref);\n            return $('');\n        }\n      }\n      else {\n        switch (type) {\n          case 'local': {\n            let elId = ref.id;\n            this.layer.data(Overlay.DATA_KEY__LOCAL_REF_ID, elId);\n            const wrapper = eh.Overlay.createContentWrapper();\n            return wrapper.append($('#' + elId).children());\n          }\n          case 'local-s2':\n          case 'local-s2w':\n          case 'local-transp': {\n            let elId = ref.id;\n            this.layerTransp.data(Overlay.DATA_KEY__LOCAL_REF_ID, elId);\n            const wrapper = eh.Overlay.createCenterWrapper();\n            return wrapper.append($('#' + elId).children());\n          }\n          default:\n            console.warn('overlay type-ref mismatch', type, ref);\n            return $('');\n        }\n      }\n    }\n\n    private getContentType(): OverlayContentType {\n      return this.layer.data('contentType');\n    }\n\n    private setContentType(type: OverlayContentType) {\n      switch (type) {\n        case 'iframe-fullw': {\n          // iframe-fullw\n          let box = $('.eh-center-page--large', this.layer);\n          box.removeClass('eh-center-page--large').addClass('eh-center-page--large-off');\n          break;\n        }\n        case 'local-s2w':\n          // local-s2* white bg\n          let box = $('.eh-overlay--content.eh-block-theme--10', this.layerTransp);\n          box.removeClass('eh-block-theme--10').addClass('eh-block-theme--14');\n          // local-s2w wide\n          box = $('.eh-lightbox--static', this.layerTransp);\n          box.removeClass('eh-lightbox--static').addClass('eh-lightbox--static-2').addClass(\"has-indent\");\n          break;\n      case 'local-s2': {\n          // local-s2* white bg\n          let box = $('.eh-overlay--content.eh-block-theme--10', this.layerTransp);\n          box.removeClass('eh-block-theme--10').addClass('eh-block-theme--14');\n          // reset \n          box = $('.eh-lightbox--static-2', this.layerTransp);\n          box.removeClass('eh-lightbox--static-2').removeClass('has-indent').addClass('eh-lightbox--static');\n          break;\n        }\n        default: {\n          // reset all\n          let box = $('.eh-center-page--large-off', this.layer);\n          box.removeClass('eh-center-page--large-off').addClass('eh-center-page--large');\n          box = $('.eh-overlay--content.eh-block-theme--14', this.layerTransp);\n          box.removeClass('eh-block-theme--14').addClass('eh-block-theme--10');\n          box = $('.eh-lightbox--static-2', this.layerTransp);\n          box.removeClass('eh-lightbox--static-2').removeClass('has-indent').addClass('eh-lightbox--static');\n        }\n      }\n      return this.layer.data('contentType', type);\n    }\n\n    private static notifyReplaced(el: JQuery<HTMLElement>) {\n      const event = jQuery.Event(cs.Snippet.EventIdPostReplace) as cs.SnippetEventPostReplace;\n      event.replacedTarget = el;\n      $(':root').trigger(event);\n    }\n\n    private static createContentWrapper() {\n      return $('<div class=\"eh-layout--abs-expand is-wrapper\"></div>');\n    }\n    private static createCenterWrapper() {\n      return $('<div class=\"is-wrapper\"></div>');\n    }\n\n    private registerBlockingBanner() {\n      if (this.blockingBanner) {\n        this.blockingBanner.addEventListener('click', eh.debounce(() => {\n          const content = this.blockingBanner?.querySelector(`.${Overlay.OVERLAY_CONTENT_WRAPPER_CLASSNAME}`) as HTMLElement;\n          this.onRootInteraction(content);\n        }, 50));\n\n        setTimeout(() => {\n          eh.ScrollPage.registerChangeListener(eh.debounce(() => {\n            const content = this.blockingBanner?.querySelector(`.${Overlay.OVERLAY_CONTENT_WRAPPER_CLASSNAME}`) as HTMLElement;\n            this.onRootInteraction(content);\n          }, 50));\n        }, 1000);\n        \n      }\n    }\n\n    private onRootInteraction(content: HTMLElement | null | undefined) {\n      \n\n      if (content) {\n        eh.ScrollPage.setScrollEnabled(false, 'eh-no-scroll');\n        content.classList.add('ehel-overlay--overlay-content-shown');\n\n        eh.Tracking.injectTrackingEvent({\n            'event_linkname': 'Gating banner',\n            'event_subtype': 'Learning Resource',\n          }, $(content), 'banner');\n      }\n      \n    }\n  }\n  \n  type OverlayContentSource = {\n    type: 'url';\n    url: string;\n  } | {\n    type: 'id';\n    id: string;\n    additionalId?: string;\n  };\n  \n}\n\n","namespace eh {\n\n  export type CoverType = 'local-tw' | 'local-lightbox';\n\n  export class CoverCtrl  {\n    public static readonly EventIdPreClose = eh.Overlay.EventIdPreClose;//'ehOverlay:preClose';\n    static readonly DATA_KEY__LOCAL_REF_ID = 'localRefId';\n    static readonly DATA_KEY__OVERLAY_CONTENT = 'eh.Overlay.content';\n  \n    private static readonly logger = log.getLogger('eh.CoverCtrl');\n    private static instance: CoverCtrl;\n\n    private currentCover:CoverFace | null = null;\n    private coverTw:CoverTw;\n    private coverLightbox:CoverLightbox;\n\n    public readonly id: string = ('eh-coverctrl-instance');\n    public readonly isMobileSafari: boolean;\n    public static readonly closeCover = () => {\n      CoverCtrl.instance?.closeCurrent();\n    };\n\n    static init($base: JQuery<HTMLElement>, isSnippet: boolean): void {\n      if(!isSnippet) {\n        CoverCtrl.instance = new CoverCtrl($base);\n      } else {\n        this.registerLinks($base);\n      }\n    }\n\n    static registerLinks($base: JQuery<HTMLElement>): void {\n        CoverCtrl.instance?.registerCoverLinks($base);\n    }\n\n    private constructor(private readonly $base: JQuery<HTMLElement>) {\n      const userAgent = window.navigator.userAgent;\n      this.isMobileSafari = (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) !== null;\n      this.coverLightbox = new CoverLightbox(this);\n      this.coverTw = new CoverTw(this);\n      this.registerCoverLinks(this.$base);\n    }\n  \n    private registerCoverLinks($base: JQuery<HTMLElement>) {\n      $('[data-lightbox]:not([data-evict-lightbox=1])', $base).each((_index, el)  => {\n        const $link = $(el);\n        let type : CoverType = $(el).data('lightbox');\n        if(type) {\n          $link.on('click', (event) => {\n            event.preventDefault();\n            if(!$link.hasClass('disabled')) {\n              let initData:CoverInitData = this.analyze($link);\n              let cover: CoverFace | null = null;\n              switch(type) {\n                case 'local-lightbox':\n                  cover = this.coverLightbox;\n                  break;\n                case 'local-tw':\n                  cover = this.coverTw;\n                  break;\n                default:\n                  return;\n              }\n              if(cover) {\n                Overlay.closeAll();\n                CoverCtrl.instance?.open(cover, initData);\n              }\n            }\n          });\n        }\n      });\n      $('.js-overlay-close', $base).on('click', (ev) => {\n        if ($(ev.target).selfOrClosest('.eh-overlay--content-body, .eh-overlay--close').length !== 1) {\n          return;\n        }\n        ev.preventDefault();\n        this.closeCurrent();\n      });\n      // COM-3285\n      $('.js-overlay-vanish', $base).on('click', (ev) => {\n        if ($(ev.target).selfOrClosest('.eh-overlay--content-body, .eh-overlay--close').length !== 1) {\n          return;\n        }\n        this.closeCurrent();\n      });\n    }\n\n    private open(cover:CoverFace, initData:CoverInitData):void{\n      this.closeCurrent();\n      this.currentCover = cover;\n      cover.show(initData);\n    }\n\n    public closeCurrent() {\n      this.currentCover?.dispose();\n      this.currentCover = null;\n    }\n\n    private analyze(initor: JQuery<HTMLElement>): CoverInitData {\n      // ref might be: #id-1#id-2 | id-1 | /url | https://url\n      const href = initor.attr('href') || '#';\n      const title = initor.data('title') || '';\n      if (href.search(new RegExp('^(/)|(https?://)')) > -1) {\n        return {type: 'url', url: href, id: undefined, additionalId: undefined};\n      }\n      const parts = href.split('#');\n      if (parts.length === 1) {\n        return {type: 'id', id: parts[0]};\n      }\n      return {type: 'id', id: parts[1], additionalId: parts[2], url: undefined};\n    }\n\n  }\n\n  class CoverBase {\n    protected wrapper: JQuery<HTMLElement>;\n    protected content: JQuery<HTMLElement>;\n    protected title: JQuery<HTMLElement>;\n    protected closer: JQuery<HTMLElement>;\n    protected contentCloser: JQuery<HTMLElement> | undefined;\n    private isOpen: boolean = false;\n\n    constructor(readonly ctrl:CoverCtrl, classWrapper:string) {\n      this.wrapper = $(classWrapper);\n      if (ctrl.isMobileSafari) {\n        this.wrapper.addClass('safari-mobile');\n      }\n      this.content = this.wrapper.find('.eh-overlay--content-body');\n      this.closer = this.wrapper.find('.eh-overlay--close');\n      // Closing is closing, whatever the overlay shows -- so the X reports a fixed subtype\n      // for every overlay. It gets no link name on purpose: ck2 is the localised label of a\n      // link and the X carries none. Its hierarchy level is mirrored in syncBackTrackingPath.\n      this.closer.attr('data-cs-tracking-subtype', 'close');\n      this.title = this.wrapper.find('.eh-overlay--headline');\n    }\n\n    protected triggerVPageOpen(elem: JQuery<HTMLElement>) {\n      // 5.15.1 -> inform tracking to search trck-vpage in page context before cut out\n      if(elem.get(0)) {\n        $(':root').trigger(eh.VPAGE_EVENTS.VPAGE_OPENED, elem.get(0));\n      }\n    }\n\n    /** Levels this overlay currently holds in the tracking hierarchy; empty while it is closed. */\n    private trackingLevels: string[] = [];\n\n    protected static trackingLevelsOf(elem: JQuery<HTMLElement> | undefined): string[] {\n      // Read the attribute, not the jQuery data: data() caches on first access and the same\n      // element nodes travel in and out of the overlay on every opening.\n      const path = elem?.attr('data-cs-trck-vpage') ?? '';\n      return path.split('.').filter(segment => segment.length > 0);\n    }\n\n    /**\n     * Put the overlay's levels into the data layer and keep them there while it is open.\n     *\n     * A page view carries its hierarchy in that one hit only. Everything sent afterwards falls\n     * back to the hierarchy of the page underneath, so from the second interaction on the\n     * analytics tool attributes the clicks to that page instead of to the overlay. The drawers\n     * avoid this by pushing their level for as long as they are open (DrawerController\n     * .onStateChanged); the overlay does the same here, and clearTrackingLevels takes it back.\n     *\n     * Call this deferred by one macro task, exactly like triggerVPageOpen: the handlers sit on\n     * the elements themselves and run before the delegated tracking on document, so changing\n     * the hierarchy right away would move the click that caused the change.\n     */\n    protected setTrackingLevels(levels: string[]): void {\n      // Drop what the overlay put there before -- naming the first level is enough, the\n      // hierarchy is truncated from it -- and lay down the new path.\n      this.clearTrackingLevels();\n      this.trackingLevels = levels;\n      levels.forEach(level => eh.Tracking.handleOnsiteNavigation(level, []));\n    }\n\n    protected clearTrackingLevels(): void {\n      const root = this.trackingLevels[0];\n      if (root) {\n        eh.Tracking.handleOnsiteNavigation('', [root]);\n      }\n      this.trackingLevels = [];\n    }\n\n    protected triggerVPageClosed(elem: JQuery<HTMLElement>) {\n      // 5.15.1 -> inform tracking to search trck-vpage in page context after put back\n      if(elem.get(0)) {\n        $(':root').trigger(eh.VPAGE_EVENTS.VPAGE_CLOSED, elem.get(0));\n      }\n    }\n\n    protected beforeOpen(data: CoverInitData) {\n      if(data.title) {\n        this.title.html(data.title);\n      }\n      this.contentCloser = $('.js-overlay-close', this.content);\n      this.contentCloser.on('click', (ev) => {\n        ev.preventDefault();\n        this.ctrl.closeCurrent();\n      });\n      // why? this.wrapper && CoverCtrl.notifyReplaced($(this.wrapper));\n      this.closer.on('click', (ev) => {\n        ev.preventDefault();\n        this.ctrl.closeCurrent();\n      });\n      if(! this.isOpen) {\n        this.isOpen = true;\n        ScrollPage.setScrollEnabled(false, 'eh-no-scroll eh-full-height');\n        this.notifyLayerState(this.content, this.isOpen);\n      }\n      this.wrapper.get().forEach(overlay => {\n        overlay.addEventListener('keydown', (e: KeyboardEvent) => {\n          if([\"Escape\"].indexOf(e.code) > -1) {\n            this.closer.trigger('click');\n          }\n        });\n      })\n      this.wrapper.on('mouseover', (ev) => {\n        this.wrapper.trigger('focus');\n      });\n\n    }\n\n    protected cleanupContent(deferred?: boolean):void {\n      this.title.empty();\n      this.closer.off('click');\n      if (this.contentCloser) {\n        this.contentCloser.off('click');\n      }\n      if (deferred) {\n        setTimeout(() => {\n          // allow the Tracking to access the content before it is removed\n          this.putBack();\n        }, 0);\n      } else {\n        this.putBack();\n      }\n      if(this.isOpen) {\n        this.isOpen = false;\n        ScrollPage.setScrollEnabled(true, 'eh-no-scroll eh-full-height');\n        this.notifyLayerState(this.content, this.isOpen);\n      }\n    }\n    \n    protected notifyReplaced(el: JQuery<HTMLElement>) {\n      const event = jQuery.Event(cs.Snippet.EventIdPostReplace) as cs.SnippetEventPostReplace;\n      event.replacedTarget = el;\n      $(':root').trigger(event);\n    }\n\n    private notifyLayerState(wrap: JQuery<HTMLElement>, isOpen:boolean) {\n      // find .ehts-overlay-events\n      // send event\n      wrap.selfOrFind(`.${OVERLAY_EVENTS.EVENT_NODE_CLASS}`).trigger(OVERLAY_EVENTS.LAYER_STATE_EVENT, {\n        'state': isOpen? OVERLAY_EVENTS.LAYER_STATE_OPENED : OVERLAY_EVENTS.LAYER_STATE_CLOSED\n      });\n    }\n\n    private putBack() {\n      const refId = this.wrapper.data(CoverCtrl.DATA_KEY__LOCAL_REF_ID);\n      if (refId) {\n        this.wrapper.data(CoverCtrl.DATA_KEY__LOCAL_REF_ID, undefined);\n        const $originalParent = $('#' + refId);\n        if ($originalParent.length === 1) {\n          const $contentParentWrapperToTransferBack = this.content.find('.is-wrapper');\n          const $contentParentToTransferBack = $contentParentWrapperToTransferBack.length > 0\n          ? $contentParentWrapperToTransferBack\n          : this.content;\n          $originalParent.append($contentParentToTransferBack.children());\n          this.clearTrackingLevels();\n          this.triggerVPageClosed($originalParent);\n        } \n      }\n      this.content.empty();\n    }\n  }\n\n  class CoverTw extends CoverBase implements CoverFace {\n    private static readonly ATTR__TRCK_PATHID = 'data-cs-trck-pathid';\n    private static readonly DATA__TRCK_PATHID = 'csTrckPathid';\n    private previousPage: HTMLElement[] = [];\n    // The levels of the page the overlay opened with; the first overlay page carries no\n    // data-cs-trck-vpage of its own, so returning to it restores these.\n    private rootTrackingLevels: string[] = [];\n\n    /**\n     * The back button is a single shared element and gets moved out of its markup context together\n     * with the overlay pages, so it can never inherit a tracking path from an ancestor. Keep its\n     * path in sync with the page currently on top of the stack: a click then reports the page it\n     * leaves, which is what the tracking concept asks for. jQuery caches data-* on first read, so\n     * the attribute alone would not be picked up -- set the data as well.\n     */\n    private syncBackTrackingPath(): void {\n      const current = this.previousPage[this.previousPage.length - 1];\n      const path = current?.getAttribute(CoverTw.ATTR__TRCK_PATHID) ?? '';\n      // The X sits in the overlay frame, outside the content moved in from the page, so it\n      // has no element of its own carrying the level -- Tracking.constructIdLayers would walk\n      // past it and the close click would lose the overlay from its event_id.\n      this.content.find('.eh-overlay-back').add(this.closer).each((_index, el) => {\n        if (path) {\n          el.setAttribute(CoverTw.ATTR__TRCK_PATHID, path);\n          $(el).data(CoverTw.DATA__TRCK_PATHID, path);\n        } else {\n          el.removeAttribute(CoverTw.ATTR__TRCK_PATHID);\n          $(el).removeData(CoverTw.DATA__TRCK_PATHID);\n        }\n      });\n    }\n    private jqXHR?: JQuery.jqXHR;\n\n    constructor(readonly ctrl:CoverCtrl) {\n      super(ctrl, '.eh-marker-overlay-tw');\n    }\n\n    show(initData: CoverInitData) {\n      this.dispose(false);\n      let cid = initData.additionalId ?? initData.id ?? undefined;\n      const innerContent = $('<div class=\"is-wrapper\"></div>');\n      if(cid) {\n        this.wrapper.data(CoverCtrl.DATA_KEY__LOCAL_REF_ID, cid);\n        const $vpageSource = $('#' + cid);\n        // Deferred by one macro task: show() is reached from a handler bound on the link\n        // itself, i.e. the target phase, while the tracking listens delegated on document.\n        // Sending the page view here would rewrite the hierarchy before the click is\n        // analysed, so the opening click would be attributed to the overlay instead of the\n        // page it was made on (QA package 1, row 108). The element is captured beforehand --\n        // the next line moves its children into the overlay.\n        window.setTimeout(() => {\n          this.rootTrackingLevels = CoverTw.trackingLevelsOf($vpageSource);\n          this.setTrackingLevels(this.rootTrackingLevels);\n          this.triggerVPageOpen($vpageSource);\n        }, 0);\n        innerContent.append($vpageSource.children());\n      } else if(initData.url) {\n        this.jqXHR = $.ajax({\n          'url': initData.url,\n          'dataType': 'html',\n          'method': 'get'\n        });\n        this.jqXHR.then(\n          (data: any) => {\n            innerContent.empty().append($(data).children());\n            this.notifyReplaced(innerContent);\n          }, \n          (_jqXHR, textStatus, errorThrown) => {\n          }\n        );\n      }\n      this.content.data(\n        CoverCtrl.DATA_KEY__OVERLAY_CONTENT,\n        innerContent.children()\n      );\n      this.content.append(innerContent);\n      this.wrapper.show();\n      this.beforeOpen(initData);\n      //this.notifyReplaced($(this.wrapper));\n\n      this.content.find('.eh-overlay-back').each((ind, backEl) => {\n        backEl.classList.add('ehtw-hidden');\n      });\n      let page = (initData.type == 'id') ? initData.additionalId ?? '' : '';\n      this.content.find('.eh-overlay-page').each((index, el) => {\n        el.style.transition = 'none';\n        if (el.parentElement) {\n          el.parentElement.style.transition = 'none';\n        }\n        if ((!page && index > 0) || (page && page != el.id)) {\n          el.style.left = '100%';\n        } else {\n          el.style.left = '0%';\n          if (el.parentElement) {\n            el.style.height = '';\n            el.parentElement.style.height = (el.clientHeight + 48) + 'px';\n            el.style.height = 'calc(100% - 48px)'\n          }\n          this.previousPage.push(el);\n        }\n        setTimeout(() => {\n          el.style.transition = '';\n          if (el.parentElement) {\n            el.parentElement.style.transition = '';\n          }\n        }, 500);\n      });\n      this.syncBackTrackingPath();\n      // Probar con transform \n      // show() runs on every opening, and the overlay content is the page's own DOM: it is\n      // moved in here and moved back by putBack(), so these are the SAME element nodes every\n      // time. Listeners stick to the node, so registering again would stack them up and the\n      // n-th opening would fire n page views per click. Mark what is already wired; content\n      // loaded later is unmarked and still gets its handler.\n      this.content.find('.eh-overlay-back').each((index, el) => {\n        if (el.dataset.ehOverlayBound) { return; }\n        el.dataset.ehOverlayBound = 'true';\n        el.addEventListener('click', (ev) => {\n          ev.preventDefault();\n          const last = this.previousPage[this.previousPage.length - 1];\n          const previous = this.previousPage[this.previousPage.length - 2];\n          this.previousPage.pop();\n          if (this.previousPage.length > 1) {\n            el.classList.remove('ehtw-hidden');\n          } else {\n            el.classList.add('ehtw-hidden');\n          }\n          previous.style.left = '0%';\n          if (previous.parentElement) {\n            previous.style.height = '';\n            previous.parentElement.style.height = (previous.clientHeight + 48) + 'px';\n            previous.style.height = 'calc(100% - 48px)'\n          }\n          last.style.left = '100%';\n          // Deferred on purpose: this handler sits on the button itself and therefore runs before\n          // the delegated tracking handler on the document. Re-syncing right here would overwrite\n          // the path before tracking reads it, and the click would report the page we return to\n          // instead of the one we leave. Update it once the click has finished bubbling.\n          setTimeout(() => {\n            const levels = CoverTw.trackingLevelsOf($(previous));\n            this.setTrackingLevels(levels.length ? levels : this.rootTrackingLevels);\n            this.syncBackTrackingPath();\n            // Stepping back is a page change like closing is: the levels above now describe the\n            // page the user is on again, so it gets its own view. Sent from here and not through\n            // triggerVPageOpen, because the page returned to is not being opened -- its view has\n            // to be built from the hierarchy, not from the element's data-cs-trck-vpage.\n            this.triggerVPageClosed($(previous));\n          }, 0);\n        });\n      });\n      this.content.find('.eh-overlay-link-page').each((index, el) => {\n        if (el.dataset.ehOverlayBound) { return; }\n        el.dataset.ehOverlayBound = 'true';\n        el.addEventListener('click', (ev) => {\n          ev.preventDefault();\n          const href = el.getAttribute('href');\n          this.content.find('.eh-overlay-page').each((index, page) => {\n            if (`#${page.id}`=== href ) {\n              page.style.left = '0';\n              if (page.parentElement) {\n                page.style.height = '';\n                page.parentElement.style.height = (page.clientHeight + 48) + 'px';\n                page.style.height = 'calc(100% - 48px)';\n              }\n              this.previousPage.push(page);\n              // A page inside the overlay is a virtual page of its own -- report it like the one the\n              // overlay opened with. The levels come from the page's own data-cs-trck-vpage.\n              // Deferred by one macro task, same reasoning as in show() and\n              // DrawerController.onStateChanged: this handler is bound on the link itself and runs\n              // in the target phase, while the tracking listens delegated on document. Reporting\n              // here would put the page view into the stream ahead of the click that opened it.\n              window.setTimeout(() => {\n                this.setTrackingLevels(CoverTw.trackingLevelsOf($(page)));\n                this.triggerVPageOpen($(page));\n              }, 0);\n              this.syncBackTrackingPath();\n              this.content.find('.eh-overlay-back').each((ind, backEl) => {\n                backEl.classList.remove('ehtw-hidden');\n              });\n            } else {\n              page.style.left = '-100%';\n            }\n          });\n        })\n      });\n      ScrollPage.setScrollEnabled(false, 'eh-no-scroll eh-full-height');\n    }\n    dispose(deferred:boolean = true): void {\n      this.jqXHR?.abort();\n      this.wrapper.hide();\n      this.previousPage = [];\n      const $el = this.content.data(CoverCtrl.DATA_KEY__OVERLAY_CONTENT);\n      $($el).trigger($.Event(Overlay.EventIdPreClose));\n      ScrollPage.setScrollEnabled(true, 'eh-no-scroll eh-full-height');\n      this.wrapper.find('.eh-scroll-vertical').scrollTop(0);\n      this.wrapper.find('.eh-overlay--content-body').scrollTop(0);\n      this.cleanupContent(deferred);\n    }\n  }\n\n  class CoverLightbox extends CoverBase implements CoverFace {\n\n    constructor(readonly ctrl:CoverCtrl) {\n      super(ctrl, '.eh-marker-overlay-lightbox');\n    }\n\n    show(initData: CoverInitData): void {\n      this.dispose(false);\n      let cid = initData.id ?? undefined;\n      const innerContent = $('<div class=\"is-wrapper\"></div>');\n      if(cid) {\n        this.wrapper.data(CoverCtrl.DATA_KEY__LOCAL_REF_ID, cid);\n        this.triggerVPageOpen($('#' + cid));\n        innerContent.append($('#' + cid).children());\n      }\n      this.content.data(\n        CoverCtrl.DATA_KEY__OVERLAY_CONTENT,\n        innerContent.children()\n      );\n      this.content.append(innerContent);\n      this.beforeOpen(initData);\n      this.wrapper.show();\n    }\n\n    dispose(deferred:boolean = true): void {\n      this.wrapper.hide();\n      const $el = this.content.data(CoverCtrl.DATA_KEY__OVERLAY_CONTENT);\n      $($el).trigger($.Event(Overlay.EventIdPreClose));\n      ScrollPage.setScrollEnabled(true, 'eh-no-scroll eh-full-height');\n      this.cleanupContent(deferred);\n    }\n  }\n\n  type CoverInitData = {\n    type: 'url' | 'id';\n    title?: string;\n    url?: string;\n    id?: string;\n    additionalId?: string;\n  };\n\n  interface CoverFace {\n    show(initData: CoverInitData):void;\n    dispose(deferred?:boolean):void;\n  }\n\n}\n\n","namespace eh {\n  /** Controller to manage flyout navigation behaviour. */\n  export class NavigationController {\n\n    public static NAV_WRAPPER: string = 'ehel-navigation';\n    public static NAV_CLASSNAME: string = 'ehel-navigation--categories';// wrapper lvl1\n    public static NAV_CATEGORY_CLASSNAME: string = 'ehel-navigation--links-item-category';// menueitem with sub\n    public static NAV_CATEGORY_LINK_CLASSNAME: string = 'ehel-navigation--links-item-category-link';// menuitem without sub\n    public static NAV_SUBMENU_CLASSNAME: string = 'ehel-navigation--sub-links-items';// wrapper sub1, sub2 sets\n    public static NAV_WRAPPER_CLASSNAME: string = 'ehel-navigation-wrapper';\n    public static NAV_HEADER_CANCEL_BUTTON_ID: string = 'nebp-header-navigation';\n    public static NAV_HEADER_MOBILE_TARGET_CONTAINER_CLASSNAME: string = 'eh-mobile-header-navigation-target-container';\n    public static NAV_HEADER_MOBILE_DESKTOP_CONTAINER_CLASSNAME: string = 'eh-desktop-header-navigation-target-container';\n    public static NAV_HEADER_ROW_LEFT_CLASSNAME: string = 'ehel-navigation--row-left'; \n    public static NAV_CANCEL_CLASSNAME: string = 'ehel-show-navigation-cancel';\n    public static NAV_MENU_BUTTON: string = 'ehel-navigation--menu-button';\n    public static NAV_CLOSE_MENU_BUTTON: string = 'ehel-navigation--close-menu-button';\n    public static ICON_CLASSNAME: string = 'ehel-icon-desktop';\n    public static NAV_OVERLAY_CLASSNAME: string = 'ehel-navigation--overlay';\n    public static PAGE_WRAPPER_CLASSNAME: string = 'eh-page--wrapper';\n    public static SEARCH_INPUT_CLASSNAME: string = 'eh-header-search-bar--filter-input';\n    public static NAV_META_GENERAL_CLASSNAME: string = 'ehel-navigation--general';\n    public static NAV_META_ITEM_GENERAL_CLASSNAME: string = 'ehel-navigation--links-item-general';\n    public static NAV_FOCUS_PANEL_CLASSNAME: string = 'ehel-navigation--focus';\n\n    public static uiStateSupport: eh.UIObservableSupport = new UIObservableSupport(UIStateChanged.uiStateMainNav);\n\n    static init($base: JQuery<HTMLElement>): void {\n      $(`.${NavigationController.NAV_WRAPPER}`, $base).each((index: number, element: HTMLElement) => {\n        new NavigationController(element);\n      });\n    }\n\n    private el: HTMLElement | null | undefined;\n    private pageWrapper: HTMLElement | null | undefined;\n    private subnav: HTMLElement | null | undefined;\n    private subnavWrapper: HTMLElement | null | undefined;\n    private wrapper: HTMLElement | null | undefined;\n    private headerNavigationCancelButton: HTMLElement | null | undefined;\n    private viewTargetContainerMobile: HTMLElement | null | undefined;\n    private viewTargetContainerDesktop: HTMLElement | null | undefined;\n    private categories: NodeListOf<HTMLElement> | null | undefined;\n    private categoriesLink: NodeListOf<HTMLElement> | null | undefined;\n    private navGeneral: HTMLElement | null | undefined;\n    private itemsGeneral: NodeListOf<HTMLElement> | null | undefined;\n    private icons: NodeListOf<HTMLElement> | null | undefined;\n    private cancelBtn: NodeListOf<HTMLElement> | null | undefined;\n    private closeBtn: NodeListOf<HTMLElement> | null | undefined;\n    private overlay: HTMLElement | null | undefined;\n    private menuBtn: NodeListOf<HTMLElement> | null | undefined;\n    private focusPanels: NodeListOf<HTMLElement> | null | undefined;\n\n    private root: HTMLElement = document.scrollingElement as HTMLElement;\n\n    private vm: NavigationViewModel;\n\n    constructor(\n      private readonly base: HTMLElement\n    ) {\n      this.el = this.base.querySelector(`.${NavigationController.NAV_CLASSNAME}`) as HTMLElement;\n      this.wrapper = this.base.querySelector(`.${NavigationController.NAV_WRAPPER_CLASSNAME}`) as HTMLElement;\n      this.categories = this.base.querySelectorAll(`.${NavigationController.NAV_CATEGORY_CLASSNAME}`);\n      this.categoriesLink = this.base?.querySelectorAll(`.${NavigationController.NAV_CATEGORY_LINK_CLASSNAME}`);\n      this.navGeneral = this.base?.querySelector(`.${NavigationController.NAV_META_GENERAL_CLASSNAME}`) as HTMLElement;\n      this.itemsGeneral = this.base?.querySelectorAll(`.${NavigationController.NAV_META_ITEM_GENERAL_CLASSNAME}`);\n      this.icons = this.base.querySelectorAll(`.${NavigationController.NAV_CATEGORY_CLASSNAME} .${NavigationController.ICON_CLASSNAME}`);\n      this.subnav = this.base.querySelector(`.${NavigationController.NAV_SUBMENU_CLASSNAME}`) as HTMLElement;\n      this.subnavWrapper = this.base?.querySelector(`.${NavigationController.NAV_HEADER_ROW_LEFT_CLASSNAME}`) as HTMLElement;\n      this.cancelBtn = this.base.querySelectorAll(`.${NavigationController.NAV_CANCEL_CLASSNAME}`);\n      this.closeBtn = this.base?.querySelectorAll(`.${NavigationController.NAV_CLOSE_MENU_BUTTON}`);\n      this.overlay = this.base?.querySelector(`.${NavigationController.NAV_OVERLAY_CLASSNAME}`) as HTMLElement;\n      this.menuBtn = this.base?.querySelectorAll(`.${NavigationController.NAV_MENU_BUTTON}`);\n      this.headerNavigationCancelButton = this.base?.querySelector(`#${NavigationController.NAV_HEADER_CANCEL_BUTTON_ID}`) as HTMLElement;\n      this.viewTargetContainerMobile = this.base?.querySelector(`.${NavigationController.NAV_HEADER_MOBILE_TARGET_CONTAINER_CLASSNAME}`) as HTMLElement;\n      this.viewTargetContainerDesktop = this.base?.querySelector(`.${NavigationController.NAV_HEADER_MOBILE_DESKTOP_CONTAINER_CLASSNAME}`) as HTMLElement;\n      this.focusPanels = this.base?.querySelectorAll(`.${NavigationController.NAV_FOCUS_PANEL_CLASSNAME}`);\n      this.pageWrapper = document?.querySelector(`.${NavigationController.PAGE_WRAPPER_CLASSNAME}`) as HTMLElement;\n\n      if (!this.el || !this.categories || !this.subnav || !this.cancelBtn || !this.icons || !this.wrapper || !this.cancelBtn || !this.closeBtn\n        || !this.headerNavigationCancelButton || !this.viewTargetContainerDesktop || !this.viewTargetContainerMobile || !this.overlay) {\n        return;\n      }\n      this.vm = new NavigationViewModel(\n        this.categories,\n        this.subnav,\n        this.icons,\n        this.base,\n        this.wrapper,\n        this.headerNavigationCancelButton,\n        this.viewTargetContainerDesktop,\n        this.viewTargetContainerMobile,\n        this.overlay,\n        this.pageWrapper,\n        this.subnavWrapper,\n        this.navGeneral,\n        this.focusPanels\n      );\n      this.init();\n    }\n\n    private init(): void {\n      NavigationController.uiStateSupport.init(this.base)\n      SiteSearch.uiStateSupport.registerUIStateListener(this.onSearchPanelChange);\n      this.registerControls();\n    }\n\n    private registerControls(): void {\n      this.categories?.forEach(cat => {\n        cat.addEventListener('click', this.doCategoryClick);\n        cat.addEventListener('focus', this.doCategoryFocus);\n      });\n      this.categoriesLink?.forEach(cat => {\n        cat.addEventListener('mousedown', this.doCategoryMousedown);\n        cat.addEventListener('focusout', this.doCategoryFocusout);\n      });\n \n      this.cancelBtn?.forEach(cat => {\n        cat.addEventListener('click', this.onCancelBtnClicked);\n      });\n      this.closeBtn?.forEach(btn => {\n        btn.addEventListener('click', this.onCloseBtnClicked);\n      });\n      this.menuBtn?.forEach(cat => {\n        cat.addEventListener('click', this.onMenuBtnClicked);\n      });\n      this.root.addEventListener('click', this.onScrollPageClicked);\n\n      this.base?.addEventListener('keydown', this.onKeypressed);\n      this.itemsGeneral?.forEach(item => {\n        item.addEventListener('mousedown', this.doCategoryMousedown);\n        item.addEventListener('focusout', this.doCategoryFocusout);\n      });\n      // document.addEventListener('scroll', this.onScrollChange, {\n      //   passive: true,\n      // });\n    }\n\n    private onKeypressed = (e: KeyboardEvent): void => {\n      if(eh.Breakpoints.getInstance().isMobile) {\n        return;\n      }\n      let cat;\n      if (this.base) {\n        cat = $(this.base).find('.ehel-navigation--categories .ehel-navigation--links-item.active a:first');\n      }\n      if(cat && cat.length > 0) {\n        if([\"Escape\", \"Tab\"].indexOf(e.code) > -1) {\n          this.vm.reset();\n        }\n        if(!this.vm.isSubOpen()) {\n          if([\"ArrowDown\"].indexOf(e.code) > -1) {\n            e.preventDefault();\n            e.stopPropagation();\n            if (this.vm.showCategory(cat[0])) {\n              this.triggerExpanded(cat[0]);\n            }\n          }\n        } else if ([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\", \"Enter\"].indexOf(e.code) > -1) {\n          e.preventDefault();\n          e.stopPropagation();\n          this.vm.onKeypressed(cat[0], e.code);\n        }\n      }\n    }\n\n    private doCategoryFocus = (e: UIEvent): void => {\n      if(eh.Breakpoints.getInstance().isMobile) {\n        return;\n      }\n      let ctrl = this;\n      // do not interfere with clicks, only do open and click be handled first ..\n      let ct = e.currentTarget as HTMLElement;\n      e.preventDefault();\n      e.stopPropagation();\n      if(!ctrl.vm.isOpen() && ctrl.isTopLevel(ct)) {\n        window.setTimeout(function() {\n          if(!ctrl.vm.isOpen() && ctrl.isTopLevel(ct)) {\n            ctrl.vm?.reset();\n            ctrl.vm?.onResize(ct);\n            if (ctrl.vm.showCategory(ct)) {\n              ctrl.triggerExpanded(ct);\n            }\n          } else {\n            ctrl.vm?.checkFocusPanel();\n          }\n        }, 200);\n      }\n    }\n\n    private doCategoryFocusout = (e: UIEvent): void => {\n      let ct = e.currentTarget as HTMLElement;\n      ct.classList.remove('focus-click');\n    }\n\n    private doCategoryMousedown = (e: UIEvent): void => {\n      let ct = e.currentTarget as HTMLElement;\n      ct.classList.add('focus-click');\n    }\n\n    private doCategoryClick = (e: UIEvent): void => {\n      let ct = e.currentTarget as HTMLElement;\n      e.preventDefault();\n      e.stopPropagation();\n      if(eh.Breakpoints.getInstance().isMobile) {\n        if (this.vm.showCategory(ct)) {\n          this.triggerExpanded(ct);\n        }\n        return;\n      }\n      const wasOpened = this.isTopLevel(ct) && this.vm?.isCatOpen(ct);\n\n      if(this.isTopLevel(ct))  {\n        this.vm?.reset();\n        this.vm?.onResize(ct);\n      } else {\n        this.vm?.checkFocusPanel();\n      }\n    \n      if (!wasOpened && this.vm?.showCategory(ct)) {\n        this.triggerExpanded(ct);\n      }\n    }\n\n\n    private onCancelBtnClicked = (e: MouseEvent | TouchEvent): void => {\n      e.preventDefault();\n      this.vm.cancelBtn(e);\n    }\n\n    private onCloseBtnClicked = (e: MouseEvent | TouchEvent): void => {\n      e.preventDefault();\n      this.vm?.closeBtn(e);\n    }\n\n    private onMenuBtnClicked = (e: MouseEvent | TouchEvent): void => {\n      //e.preventDefault();\n      this.vm?.menuBtn(e);\n    }\n\n    private onScrollPageClicked = (e: MouseEvent | TouchEvent): void => {\n      let el = e.target as HTMLElement;\n      let x = $(el).closest(`.${NavigationController.NAV_CLASSNAME}`);\n      if (x.length == 0) {\n        this.vm.clickRoot(el);\n      }\n    }\n\n    // private onScrollChange = (): void => {\n    //   if(!eh.Breakpoints.getInstance().isMobile) {\n    //     this.vm?.reset();\n    //   }\n    // }\n\n    private isTopLevel(elem: HTMLElement): boolean {\n      return $(elem).closest(`.${NavigationController.NAV_CLASSNAME}`).length > 0;\n    }\n\n    private triggerExpanded(elem: HTMLElement) {\n      if(this.isTopLevel(elem) && eh.NAV_FLYOUT_EVENTS) {\n        $(':root').trigger(eh.NAV_FLYOUT_EVENTS.FLYOUT_EXPANDED, elem);\n      }\n    }\n\n    private onSearchPanelChange: (last: UIStateChanged, current: UIStateChanged) => void = (last: UIStateChanged, current: UIStateChanged): void => {\n      if(eh.Breakpoints.getInstance().isMobile) {\n        return;\n      }\n      if(current.state == UIStateValue.OPENED) {\n        this.vm.reset();\n      }\n     }\n  }\n\n  class NavigationViewModel {\n\n    private static HIDDEN_CLASSNAME: string = 'lg:ehtw-hidden';\n    private static BLOCK_CLASSNAME: string = 'lg:ehtw-block';\n    private static INVISIBLE_CLASSNAME: string = 'ehtw-invisible';\n\n    private static LEFT_FULL_CLASSNAME: string = 'ehtw-left-full';\n    private static LEFT_NONE_CLASSNAME: string = 'ehtw-left-none';\n\n    private static RIGTH_FULL_CLASSNAME: string = '-ehtw-right-full';\n    private static RIGHT_NONE_CLASSNAME: string = 'ehtw-right-none';\n\n    private static CAT_OPENED_CLASSNAME: string = 'eh-cat-opened';\n    private static CAT_CLOSED_CLASSNAME: string = 'eh-cat-closed';\n\n    private static OVERFLOW_HIDDEN_CLASSNAME: string = '!ehtw-overflow-hidden';\n    private static ABSOLUTE_CLASSNAME: string = 'ehtw-absolute';\n\n    private static ACTIVE_CLASSNAME: string = 'active';\n    private static AVOID_CLOSE_CLASSNAME: string = 'ehel-navigation--avoid-close';\n\n    private levels: string[] = [];\n    private isNavOpen: boolean = false;\n    private isSubMenuOpened = false;\n\n    private currentNavItem: HTMLElement | null = null;\n    private pageWrapperMarginTop = 0;\n\n    constructor(\n      private categories: NodeListOf<HTMLElement>,\n      private subnav: HTMLElement,// wrapper sub1, sub2 sets=ul\n      private icons: NodeListOf<HTMLElement>,\n      private navigation: HTMLElement,\n      private wrapper: HTMLElement,\n      private headerNavigationCancelButton: HTMLElement,\n      private viewTargetContainerDesktop: HTMLElement,\n      private viewTargetContainerMobile: HTMLElement,\n      private overlay: HTMLElement,\n      private pageWrapper?: HTMLElement,\n      private subnavWrapper?: HTMLElement,\n      private navGeneral?: HTMLElement,\n      private focusPanels?: NodeListOf<HTMLElement> | null\n    ) {\n      setTimeout(() => {\n        this.init();\n        }, 20);\n    }\n\n    private init(): void {\n      eh.Breakpoints.getInstance().registerChangeListener(this.onBreakpointChange);\n      eh.Breakpoints.getInstance().registerResizeListener(this.onResize);\n      $(':root').on(HEADER_EVENTS.DOM_MUTATION, this.syncDropdownPosition);\n  }\n\n    private onBreakpointChange: (old: Breakpoint | null, current: Breakpoint) => void = (_old: Breakpoint | null, _current: Breakpoint): void => {\n      this.reset();\n      if (_current.isMobile) {\n        this.viewTargetContainerMobile.appendChild(this.headerNavigationCancelButton);\n      } else {\n         this.viewTargetContainerDesktop.prepend(this.headerNavigationCancelButton);\n      }\n    };\n\n    public checkFocusPanel() {\n      setTimeout(() => {\n        if (this.focusPanels) {\n          this.focusPanels.forEach(focusPanel => {\n            const items = focusPanel.querySelectorAll(`li`);\n            if (items.length > 2) {\n              // padding top\n              let totalHeight = 80;\n              items.forEach(item => {\n                // + Gap\n                totalHeight += item.offsetHeight + 16;\n                if (totalHeight > (window.innerHeight - this.wrapper.offsetHeight)) {\n                  item.classList.add(NavigationViewModel.ABSOLUTE_CLASSNAME);\n                  item.classList.add(NavigationViewModel.INVISIBLE_CLASSNAME);\n                } else {\n                  item.classList.remove(NavigationViewModel.ABSOLUTE_CLASSNAME);\n                  item.classList.remove(NavigationViewModel.INVISIBLE_CLASSNAME);\n                }\n              });\n            }\n          });\n        }\n      }, 0);\n    }\n\n    public onResize: (currentNavItem?: HTMLElement) => void = (currentNavItem?: HTMLElement): void => {\n      //this.reset();\n      if (currentNavItem) {\n        this.currentNavItem = currentNavItem;\n      }\n    \n      if (this.subnav && this.currentNavItem) {\n        const windowsWidth = window.innerWidth;\n        const firstLevel = this.subnav.querySelector(`[data-sub-navigation-menu=\"${this.currentNavItem?.dataset['navigationMenu']}\"`) as HTMLElement;\n        const nbLevels = +(this.currentNavItem?.dataset['navigationLevels'] || 1);\n        if (windowsWidth > 1024 && windowsWidth < 1200 && nbLevels > 2) {\n          firstLevel.style.maxWidth = `${(windowsWidth - 350)/2}px`;\n        }\n      }\n      this.checkFocusPanel();\n      this.pageWrapperMarginTop = 0;\n    };\n\n    private syncDropdownPosition: (e: JQuery.TriggeredEvent, metrics: IHeaderMetrics) => void = (e: JQuery.TriggeredEvent, metrics: IHeaderMetrics): void => {\n      setTimeout(() => {\n        if (!metrics) {\n          metrics = (e.originalEvent as CustomEvent).detail;\n        }\n\n        const header = $('header');\n        const headerOffset = (header && header[0]) ? header[0].offsetTop : 0;\n\n        if (!eh.Breakpoints.getInstance().isMobile) {\n          if (this.subnavWrapper) {\n            this.subnav.style.top = `${/* Start - Issue market selector */headerOffset + /* End - Issue market selector */this.subnavWrapper.offsetHeight + (metrics.headerStickyState || !this.navGeneral ? 0 : this.navGeneral?.offsetHeight)}px`;\n            this.subnav.style.maxHeight = `calc(100vh - ${/* Start - Issue market selector */headerOffset + /* End - Issue market selector */this.subnavWrapper.offsetHeight + (metrics.headerStickyState || !this.navGeneral ? 0 : this.navGeneral?.offsetHeight)}px - 24px)`;\n            this.overlay.style.top = `${/* Start - Issue market selector */headerOffset + /* End - Issue market selector */ this.subnavWrapper.offsetHeight + (metrics.headerStickyState || !this.navGeneral ? 0 : this.navGeneral?.offsetHeight)}px`;\n          }\n        } else {\n          this.subnav.style.top = '0px';\n        }\n        if (this.pageWrapper && !metrics.headerStickyState) {\n          this.pageWrapperMarginTop = Math.max(metrics.visibleHeaderHeight,this.pageWrapperMarginTop );\n          this.pageWrapper.style.marginTop = `${this.pageWrapperMarginTop}px`;\n        }\n        const stikyElements = document.getElementsByClassName('is-sticky');\n        if (stikyElements.length > 1) {\n          /* Start - 8.10.1 - Support product page (SPD) */\n          let hasStickyScroll = false;\n          for (let i = 0; i < stikyElements.length; i++) {\n            if ((stikyElements[i] as HTMLElement).dataset['stickyScroll']) {\n              hasStickyScroll = true;\n            }\n          }\n          if (!hasStickyScroll) {\n            const header = $(this.navigation).find('header');\n            header.removeClass('has-shadow');\n            header.removeClass('ehtw-shadow-fly');\n          }\n          /* End - 8.10.1 - Support product page (SPD) */\n        }\n      }, 500);\n    }\n\n    public isOpen():boolean {\n      return this.isNavOpen;\n    }\n    public isSubOpen() {\n      return this.isSubMenuOpened;\n    }\n\n    public isCatOpen(elem: HTMLElement): boolean {\n      return $(elem).closest(`.ehtw-navigated-state.active`).length > 0;;\n    }\n\n    public reset() {\n      this.icons.forEach(icon => {\n        icon.classList.add(NavigationViewModel.CAT_CLOSED_CLASSNAME);\n        icon.classList.remove(NavigationViewModel.CAT_OPENED_CLASSNAME);\n      });\n      this.categories.forEach(cat => {\n        cat.classList.remove(NavigationViewModel.ACTIVE_CLASSNAME);\n        const parent = cat?.closest('li');\n        if (parent) {\n          parent.classList.remove(NavigationViewModel.ACTIVE_CLASSNAME);\n        }\n      });\n\n      const submenus = this.subnav.querySelectorAll(`ul`);\n      submenus.forEach(submenu => {\n        submenu.classList.add(NavigationViewModel.HIDDEN_CLASSNAME);\n        submenu.classList.add(NavigationViewModel.LEFT_FULL_CLASSNAME);\n        submenu.classList.add(NavigationViewModel.RIGTH_FULL_CLASSNAME);\n\n        submenu.classList.remove(NavigationViewModel.LEFT_NONE_CLASSNAME);\n        submenu.classList.remove(NavigationViewModel.RIGHT_NONE_CLASSNAME);\n      });\n      this.isSubMenuOpened = false;\n\n      const siteEl: JQuery<Element> = eh.ScrollPage.getScrollRoot();\n      const toggleNaviClassName: string = 'eh-navigation-active';\n      const isOpen: boolean = siteEl.hasClass(toggleNaviClassName);\n\n      if (isOpen) {\n        eh.ScrollPage.setScrollEnabled(isOpen);\n        siteEl.toggleClass(toggleNaviClassName, !isOpen);\n      }\n      //eh.ScrollPage.setScrollEnabled(true, 'eh-no-scroll');\n      this.wrapper.classList.remove(NavigationViewModel.OVERFLOW_HIDDEN_CLASSNAME);\n      this.levels = [];\n      this.overlay.classList.remove(NavigationViewModel.BLOCK_CLASSNAME);\n      document.body.classList.remove('eh-header-main-nav-opened');\n\n      if(this.isNavOpen) {\n        eh.NavigationController.uiStateSupport.dispatch(UIStateValue.CLOSED);\n      }\n      this.isNavOpen = false;\n      this.wrapper.style.transform = '';  \n      this.wrapper.scrollTop = 0;\n    }\n\n    public showCategory(cat: HTMLElement | null): boolean {\n      //eh.ScrollPage.setScrollEnabled(false, 'eh-no-scroll');\n      this.wrapper.classList.add(NavigationViewModel.OVERFLOW_HIDDEN_CLASSNAME);\n      if (!eh.Breakpoints.getInstance().isMobile) {\n        this.subnav.style.display = 'none';\n        void this.subnav.offsetHeight;\n        this.subnav.style.display = 'flex';\n      }\n      this.overlay.classList.add(NavigationViewModel.BLOCK_CLASSNAME);\n      document.body.classList.add('eh-header-main-nav-opened');\n      if(!this.isNavOpen) {\n        eh.NavigationController.uiStateSupport.dispatch(UIStateValue.OPENED);\n      }\n      document.body.classList.add('eh-header-main-nav-opened');\n      this.isNavOpen = true;\n\n      const isCatActive = cat?.classList.contains(NavigationViewModel.ACTIVE_CLASSNAME) || cat?.closest('li')?.classList.contains(NavigationViewModel.ACTIVE_CLASSNAME);\n      if (cat?.dataset['navigationMenu'] && !this.levels.includes(cat.dataset['navigationMenu'] as string)) {\n        this.isSubMenuOpened = true;\n        const icon = cat.querySelector(`.${NavigationController.ICON_CLASSNAME}`);\n        if (icon) {\n          icon.classList.remove(NavigationViewModel.CAT_CLOSED_CLASSNAME);\n          icon.classList.add(NavigationViewModel.CAT_OPENED_CLASSNAME);\n        }\n\n        if (!cat.closest(`.ehel-navigation--sub-links-item-2`)) {\n          this.hideLevel3(null);\n        }  else {\n          this.subnav.querySelectorAll(`.active`).forEach(sn =>  sn.classList.remove(NavigationViewModel.ACTIVE_CLASSNAME));\n        }\n        const submenus = this.subnav.querySelectorAll(`[data-sub-navigation-menu=\"${cat?.dataset['navigationMenu']}\"`) as NodeListOf<Element>;\n        if(submenus && submenus.length > 0) {\n          submenus.forEach((submenu: Element) => {\n              submenu.classList.remove(NavigationViewModel.LEFT_FULL_CLASSNAME);\n              submenu.classList.remove(NavigationViewModel.RIGTH_FULL_CLASSNAME);\n              submenu.classList.remove(NavigationViewModel.HIDDEN_CLASSNAME);\n              submenu.classList.add(NavigationViewModel.LEFT_NONE_CLASSNAME);\n              submenu.classList.add(NavigationViewModel.RIGHT_NONE_CLASSNAME);\n          });\n        }\n        cat.classList.add(NavigationViewModel.ACTIVE_CLASSNAME);\n        const parent = cat.closest('li');\n        if (parent) {\n          parent.classList.add(NavigationViewModel.ACTIVE_CLASSNAME);\n        }\n        this.levels.push(cat.dataset['navigationMenu'] as string);\n        if (cat?.dataset['navigationMenu'] && submenus.length <= 1 && !eh.Breakpoints.getInstance().isMobile) {\n          submenus.forEach(sm => {\n            const firstChild = sm.querySelector('[data-navigation-menu]');\n\n            if (firstChild) {\n              this.showCategory(firstChild as HTMLElement);  \n            }\n            sm.querySelectorAll('[data-navigation-menu]').forEach(c => {\n              c.classList.add(NavigationViewModel.AVOID_CLOSE_CLASSNAME);\n            });\n\n          });\n        }\n        return true;\n      } else if (cat?.dataset['navigationMenu'] && !cat.classList.contains(NavigationViewModel.AVOID_CLOSE_CLASSNAME)) {\n        if (cat && !cat.closest(`.ehel-navigation--sub-links-item-2`)) {\n          this.hideLevel3(null);\n          const parentCat = cat.closest(`.ehel-navigation--sub-links-item-1`) as HTMLElement;\n          if (parentCat) {\n            const submenus = this.subnav.querySelectorAll(`[data-sub-navigation-menu=\"${parentCat?.dataset['subNavigationMenu']}\"`) as NodeListOf<Element>;\n            if(submenus && submenus.length > 0) {\n              submenus.forEach((submenu: Element) => {\n                submenu.classList.remove(NavigationViewModel.LEFT_FULL_CLASSNAME);\n                submenu.classList.remove(NavigationViewModel.RIGTH_FULL_CLASSNAME);\n                submenu.classList.remove(NavigationViewModel.HIDDEN_CLASSNAME);\n                submenu.classList.add(NavigationViewModel.LEFT_NONE_CLASSNAME);\n                submenu.classList.add(NavigationViewModel.RIGHT_NONE_CLASSNAME);\n              });\n            }\n          }\n        } else {\n          //this.subnav.querySelectorAll(`.active`).forEach(sn =>  sn.classList.remove(NavigationViewModel.ACTIVE_CLASSNAME));\n        }\n        if (!isCatActive) {\n          cat?.classList.add(NavigationViewModel.ACTIVE_CLASSNAME);\n          const parent = cat?.closest('li');\n          if (parent) {\n              parent.classList.add(NavigationViewModel.ACTIVE_CLASSNAME);\n          }\n        }\n      }\n      if(!this.isNavOpen) {\n        eh.NavigationController.uiStateSupport.dispatch(UIStateValue.OPENED);\n      }\n      this.isNavOpen = true;\n      //this.openOverView();\n      return false;\n    }\n\n    public hideLevel3(elem: HTMLElement | null) {\n      this.subnav.querySelectorAll(`.ehel-navigation--sub-links-item-2`).forEach(sn => {\n        sn.classList.add(NavigationViewModel.HIDDEN_CLASSNAME);\n        this.levels = this.levels.filter(x => x !== (sn as HTMLElement).dataset['subNavigationMenu']);\n      });\n      this.subnav.querySelectorAll(`.active`).forEach(sn => sn.classList.remove(NavigationViewModel.ACTIVE_CLASSNAME));\n    }\n\n    public cancelBtn(e: MouseEvent | TouchEvent) {\n      if (this.levels.length > 0) {\n        const level = this.levels.pop();\n        const submenus = this.subnav.querySelectorAll(`[data-sub-navigation-menu=\"${level}\"`) as NodeListOf<Element>;\n        const menu = this.navigation.querySelector(`[data-navigation-menu=\"${level}\"`) as HTMLElement;\n        if (menu) {\n          menu.classList.remove(NavigationViewModel.ACTIVE_CLASSNAME);\n          const parent = menu?.closest('li');\n          if (parent) {\n            parent.classList.remove(NavigationViewModel.ACTIVE_CLASSNAME);\n          }\n        }\n        \n        if(submenus && submenus.length > 0) {\n          submenus.forEach((submenu: Element) => {\n            submenu.classList.add(NavigationViewModel.LEFT_FULL_CLASSNAME);\n            submenu.classList.add(NavigationViewModel.RIGTH_FULL_CLASSNAME);\n            submenu.classList.remove(NavigationViewModel.LEFT_NONE_CLASSNAME);\n            submenu.classList.remove(NavigationViewModel.RIGHT_NONE_CLASSNAME);\n          });\n        }\n        if (this.levels.length === 0) {\n          this.wrapper.classList.remove(NavigationViewModel.OVERFLOW_HIDDEN_CLASSNAME);\n        }\n      } else {\n        this.reset();\n      }\n    }\n\n    public closeBtn(e: MouseEvent | TouchEvent) {\n      if(!eh.Breakpoints.getInstance().isMobile) {\n        this.categories.forEach((x: HTMLElement) => {\n          if(x.classList.contains('active')) {// tracking remember 'pub spot'\n            $(e.currentTarget as HTMLElement).data('csTrackingPsName', $(x).data('csTrackingTitleNormalized'))\n          }\n        });\n      }\n      const submenu = this.navigation?.querySelector('.ehel-navigation--sub-links-items');\n      if (submenu) {\n        submenu.classList.add('ehtw-pointer-events-none');\n      }\n      this.reset();\n    }\n\n    public menuBtn(e: MouseEvent | TouchEvent) {\n      if (!this.levels || this.levels.length === 0) {\n        this.wrapper.style.transform = 'none';\n      }\n      const submenu = this.navigation?.querySelector('.ehel-navigation--sub-links-items');\n      if (submenu) {\n        if (this.isOpen()) {\n          submenu.classList.add('ehtw-pointer-events-none');\n        } else if (!eh.Breakpoints.getInstance().isMobile) {\n          submenu.classList.remove('ehtw-pointer-events-none');\n        }\n      }\n    }\n\n    public clickRoot(elem: HTMLElement | null) {\n      const subnav = elem?.closest('.ehel-navigation--sub-links-items');\n      if (!subnav && this.isSubMenuOpened) {\n        this.reset();\n      }\n    }\n\n    public onKeypressed(cat: HTMLElement, code: string): HTMLElement | null {\n      const activeElems = this.subnav.querySelectorAll(`li.${NavigationViewModel.ACTIVE_CLASSNAME}`);\n      let activeElem;\n      if (activeElems && activeElems.length) {\n        activeElem = activeElems[activeElems.length - 1];\n      }\n      if (activeElem) {\n        let element: HTMLElement | undefined | null = null;\n        let expanded: HTMLElement | undefined | null = null;\n        switch (code) {\n          case 'ArrowUp':\n            if((activeElem as HTMLElement).classList.contains('ehjs-navigate-all')) {\n              const submenu = (activeElem as HTMLElement).closest('.ehel-navigation--sub-links-item-2');\n              let all = submenu?.querySelectorAll('li');\n              if(all && all.length) {\n                element = all[all.length-1];\n              }\n            } else if(activeElem.previousElementSibling) {\n              if(!((activeElem.previousElementSibling as HTMLElement)?.classList.contains('ehjs-navigate-all')\n                && !(activeElem.previousElementSibling as HTMLElement)?.classList.contains('ehjs-navigation-cancel'))) {\n                  element = (activeElem.previousElementSibling as HTMLElement)?.querySelector('a');\n              }\n            }\n            break;\n          case 'ArrowDown':\n            if (!(activeElem as HTMLElement)?.classList.contains('ehjs-navigate-all')) {\n              if(activeElem.nextElementSibling instanceof HTMLElement) {\n                element = (activeElem.nextElementSibling as HTMLElement)?.querySelector('a');\n              } else {\n                element = ((activeElem.parentElement as HTMLElement)?.querySelector(`.ehjs-navigate-all`) as HTMLElement)?.querySelector('a');\n                if(element) {\n                  element.classList.add(NavigationViewModel.ACTIVE_CLASSNAME);\n                  element.closest('li')?.classList.add(NavigationViewModel.ACTIVE_CLASSNAME);\n                }\n              }\n            }\n            break;\n          case 'ArrowLeft':\n            const submenu = (activeElem as HTMLElement).closest('.ehel-navigation--sub-links-item-2');\n            if (submenu) {\n              element = this.subnav.querySelector(`[data-navigation-menu=\"${(submenu as HTMLElement)?.dataset['subNavigationMenu']}\"`) as HTMLElement;\n            }\n            break;\n          case 'ArrowRight':\n            let aElement = (activeElem as HTMLElement).querySelector('a');\n            if (aElement) {\n              const submenu = this.subnav.querySelector(`[data-sub-navigation-menu=\"${aElement?.dataset['navigationMenu']}\"`) as HTMLElement;\n              const firstChild = submenu?.querySelectorAll('li')[2];\n              if (firstChild) {\n                if (this.levels.length <= activeElems.length && this.showCategory(aElement as HTMLElement)) {\n                  expanded = aElement;\n                }\n                element = firstChild?.querySelector('a');\n              }\n            }\n            break;\n          case 'Enter':\n            let href = $(activeElem).find('a').attr('href');\n            if(href && href !== '#') {\n              window.location.href = href;\n            }\n            break;\n        }\n        if (element && this.showCategory(element as HTMLElement)) {\n          return expanded || element;\n        }\n      }\n      else if(code == 'ArrowDown') {\n        if(cat?.dataset['navigationMenu']) {\n          const submenu = this.subnav.querySelector(`[data-sub-navigation-menu=\"${cat.dataset['navigationMenu']}\"`) as HTMLElement;\n          const firstChild = submenu?.querySelectorAll('li')[1];\n          if (firstChild) {\n            const aElement = firstChild?.querySelector('a');\n            if (aElement) {\n              if(this.showCategory(aElement)) {\n                return aElement;\n              }\n            }\n          }\n        }\n      }\n      return null;\n    }\n\n  }\n}","namespace eh {\n\n  /** teasers as pure button list - handle COM-2452 ; pc_link-teaser-block--topics-in-focus-home **/\n  export class ShortcutController {\n    public static SHORTCUT_BAR_WRAPPER_CLASSNAME: string = 'ehel-shortcut-bar';\n    public static SHORTCUT_BAR_BUTTONS_CLASSNAME: string = 'ehel-shortcut-bar--buttons';\n    public static SHORTCUT_BAR_SHOW_MORE_LESS_CLASSNAME: string = 'ehel-shortcut-bar--show-more-less';\n    public static SHORTCUT_BAR_CONTENT_CLASSNAME: string = 'ehel-shortcut-bar--content';\n    public static COLS_TO_SHOW: number = 4;\n\n    static init($base: JQuery<HTMLElement>): void {\n      $(`.${ShortcutController.SHORTCUT_BAR_WRAPPER_CLASSNAME}`, $base).each((index: number, element: HTMLElement) => {\n        new ShortcutController(element);\n      });\n    }\n\n    private shortcutBarButtons: HTMLElement | null | undefined;\n    private shortcutBarShowMoreLess: HTMLElement | null | undefined;\n    private shortcutBarContent: HTMLElement | null | undefined;\n\n    private vm: EhShortcutViewModel;\n\n    constructor(\n      private readonly base: HTMLElement | null,\n    ) {\n      this.shortcutBarContent = this.base?.querySelector(`.${ShortcutController.SHORTCUT_BAR_CONTENT_CLASSNAME}`);\n      this.shortcutBarButtons = this.shortcutBarContent?.querySelector(`.${ShortcutController.SHORTCUT_BAR_BUTTONS_CLASSNAME}`);\n      this.shortcutBarShowMoreLess = this.shortcutBarContent?.querySelector(`.${ShortcutController.SHORTCUT_BAR_SHOW_MORE_LESS_CLASSNAME}`);\n      if (!this.shortcutBarContent || !this.shortcutBarButtons || !this.shortcutBarShowMoreLess) {\n        return;\n      }\n      this.vm = new EhShortcutViewModel(\n        this.shortcutBarButtons,\n        this.shortcutBarShowMoreLess,\n        this.shortcutBarContent\n      );\n    }\n  }\n\n  class EhShortcutViewModel {\n    constructor(\n      private shortcutBarButtons: HTMLElement,\n      private shortcutBarShowMoreLess: HTMLElement,\n      private shortcutBarContent: HTMLElement) {\n      this.init();\n    }\n    private init(): void {\n      eh.Breakpoints.getInstance().registerResizeListener(this.onResize);\n    }\n    public onResize: () => void = (): void => {\n      const buttons = this.shortcutBarButtons.querySelectorAll('a');\n      let rows = 0;\n      let sumWidth = 0;\n      let heightColumns = 0;\n      buttons.forEach(button => {\n        sumWidth += button.offsetWidth + 12; // Gap 12\n        if (sumWidth > (this.shortcutBarButtons.parentElement?.offsetWidth || window.innerWidth)) {\n          sumWidth = button.offsetWidth + 12;\n          rows++;\n          if (!heightColumns && rows > ShortcutController.COLS_TO_SHOW) {\n            heightColumns = button.offsetTop;\n            this.shortcutBarContent.style.setProperty('--ehel-shortcut-closed-h', `${heightColumns + this.shortcutBarShowMoreLess.offsetHeight}px`);\n          }\n        } else if (!rows) {\n          rows++;\n        }\n      });\n      this.shortcutBarContent.style.setProperty('--ehel-shortcut-h', `${this.shortcutBarButtons.offsetHeight + this.shortcutBarShowMoreLess.offsetHeight + 12}px`);\n      if (heightColumns) {\n        this.shortcutBarShowMoreLess.style.top = `max(${heightColumns}px,calc(100% - 41px))`;\n      }\n    };\n  }\n}","namespace eh {\n  /**\n   * Controller to manage tab behaviour.\n   */\n  export class EhTabController {\n\n    /* Start - 2.26 Content World Tagging */\n    public static TAB_CLASSNAME: string = \"ehel-tab-navigation\";\n    public static TAB_NAVIGATION_CLASSNAME: string = \"ehel-tab-navigation--navigation\";\n    public static TAB_NAVIGATION_ITEM_CLASSNAME: string = \"ehel-button\";\n    public static TAB_PREVIOUS_BTN_CLASSNAME: string = \"ehel-tab-navigation--prev-btn\";\n    public static TAB_NEXT_BTN_CLASSNAME: string = \"ehel-tab-navigation--next-btn\";\n    /* End - 2.26 Content World Tagging */\n    public static TAB_ITEM_LINK_BTN_CLASSNAME: string = 'ehel-tab-navigation--tab-item-link';/* 5.15.2 PID Redesign - Package 2 */\n\n\n    static init($base: JQuery<HTMLElement>): void {\n      $base\n        .selfOrFind(`.${EhTabController.TAB_CLASSNAME}`)\n        .each((index: number, element: HTMLElement) => {\n          $(element).data('tabController', new EhTabController(element));\n        });\n    }\n\n    static getControllerInside(el: HTMLElement): EhTabController | null {\n        return $(el).selfOrFind(`.${EhTabController.TAB_CLASSNAME}`).data('tabController');\n    }\n\n    private el: HTMLElement | null | undefined;\n    private readonly navigation: HTMLElement | null | undefined;\n    private readonly navigationItems: NodeListOf<HTMLElement> | undefined;\n    private readonly linkItems: NodeListOf<HTMLElement> | undefined; /* 5.15.2 PID Redesign - Package 2 */\n    private readonly previousBtn: HTMLElement | null | undefined;\n    private readonly nextBtn: HTMLElement | null | undefined;\n    private readonly vm: EhTabViewModel;\n\n    constructor(private readonly base: HTMLElement | null) {\n      this.el = this.base;\n      this.navigation = this.el?.querySelector(`.${EhTabController.TAB_NAVIGATION_CLASSNAME}`);\n      this.navigationItems = this.navigation?.querySelectorAll(`.${EhTabController.TAB_NAVIGATION_ITEM_CLASSNAME}`);\n      this.linkItems = document?.querySelectorAll(`.${EhTabController.TAB_ITEM_LINK_BTN_CLASSNAME}`);/* 5.15.2 PID Redesign - Package 2 */\n      this.previousBtn = this.el?.querySelector(`.${EhTabController.TAB_PREVIOUS_BTN_CLASSNAME}`);\n      this.nextBtn = this.el?.querySelector(`.${EhTabController.TAB_NEXT_BTN_CLASSNAME}`);\n\n      if (!this.navigation) {\n        throw new Error(`Missing required element`);\n      }\n\n      this.vm = new EhTabViewModel(\n        this.navigation,\n        this.navigationItems,\n        this.linkItems,\n        this.previousBtn,\n        this.nextBtn,\n        this.base?.classList.contains('marker-cs-tracking-onsite-subpage') ?? false\n      );\n\n      if (!this.vm.isDisabled) {\n        this.init();\n      }\n    }\n\n    private init(): void {\n      this.registerControls();\n      // Reported from here, not from the view model's own init: that one is deferred by 200 ms,\n      // by which time eh.Tracking has already sent the initial page view. Same place and same\n      // reasoning as eh.FullContentOverlayController.init, which reports the external\n      // 'product-configure' tab -- and which runs after us (start.ts), so an open configuration\n      // view still wins over the tab reported here.\n      this.vm.reportInitialTab();\n    }\n\n    private registerControls(): void {\n      this.previousBtn?.addEventListener(\"click\", this.onPreviousClicked);\n      this.nextBtn?.addEventListener(\"click\", this.onNextClicked);\n      this.navigationItems?.forEach((item: HTMLElement): void => {\n        item.addEventListener(\"click\", this.onItemClicked);\n      });\n      this.linkItems?.forEach((item: HTMLElement): void => {\n          item.addEventListener('click', this.onLinkItemClicked);\n      });\n      $(':root').on(TAB_EVENTS.TAB_ACTIVATE_REQUEST, ($event: JQuery.TriggeredEvent, tab: HTMLElement | string): void => {\n        // pid only for Tabs... not drawers\n        const reqId = this.parseTabId(tab);\n        if(reqId) {\n          this.vm.setCurrentItemFromId(reqId);\n        }\n      });\n    }\n\n    public parseTabId(tabOrId: HTMLElement | string): string {\n      const tabAttrId: string | null = tabOrId instanceof HTMLElement ? tabOrId.getAttribute('id') : tabOrId;\n      if (tabAttrId === null) {\n        return '';\n      }\n      return tabAttrId;\n    }\n\n    public addExternalTabName(extTabId:string):string[] {\n        this.vm.addExternalTabName(extTabId);\n        let ids: string[] = [];\n        if(this.navigationItems) {\n          this.navigationItems?.forEach((value: HTMLElement): void => {\n              ids.push(value.dataset.csTrckTabId ?? '');\n          });\n        }\n        return ids;\n    }\n\n    public fireTabChangedExtern(extTabId:string|null) {\n      this.vm.fireTabChangedExtern(extTabId);\n    }\n\n    public refresh(): void {\n      this.vm.refresh();\n    }\n\n    private onItemClicked = (e: MouseEvent | TouchEvent): void => {\n      e.preventDefault();\n      const item = e.currentTarget as HTMLElement;\n      this.vm.setCurrentItem(item, true, true, true);\n      if (item.classList.contains('marker-spd-tab')) {\n        this.vm.scrollToItem(item);\n      }\n    };\n\n    private onLinkItemClicked = (e: MouseEvent | TouchEvent): void => {\n      if(!(e.currentTarget as HTMLElement).classList.contains('ehel-drawer--menu-open')) {\n        e.preventDefault();\n      }\n      this.vm.setCurrentItemFromLink(e.currentTarget as HTMLElement);\n    }\n\n    private onPreviousClicked = (e: MouseEvent | TouchEvent): void => {\n      e.preventDefault();\n      this.vm.previous();\n    };\n\n    private onNextClicked = (e: MouseEvent | TouchEvent): void => {\n      e.preventDefault();\n      this.vm.next();\n    };\n  }\n\n  interface IScrollerItem {\n    tabId: string,\n    idx: number;\n    link: HTMLElement;\n    target: HTMLElement;\n    thresholdBegin: number;\n    thresholdEnd: number;\n  }\n\n  class EhTabViewModel {\n    public isDisabled: boolean = false;\n\n    private static ACTIVE_CLASSNAME: string = \"is-active\";\n    private static DISABLED_CLASSNAME: string = \"is-disabled\";\n    private static HIDE_CLASSNAME: string = \"ehtw-hidden\";\n    private static TAB_ID_PARAM: string = \"t.tabId\";\n    private static TRANSITION_EASING_LINEAR: string = \"linear\";\n    private static TRANSITION_EASING_SWING: string = \"swing\";\n    private static TRANSITION_DURATION: number = 400;\n    private static MIN_AMOUNT_SCROLL_ITEMS: number = 2;\n    private _currentItem: IScrollerItem | undefined;\n    private _scrollerItems: IScrollerItem[] = [];\n    private _externalTabs: string[] = [];\n    private targetScrollPosLeft: number = 0;\n    private navigationHeight: number = 0;\n\n    constructor(\n      private scroller: HTMLElement,\n      public items: NodeListOf<HTMLElement> | undefined,\n      private linkItems: NodeListOf<HTMLElement> | undefined,\n      private previousButton: HTMLElement | null | undefined,\n      private nextButton: HTMLElement | null | undefined,\n      private extendedChangeReport: boolean\n    ) {\n      setTimeout(() => {\n        this.init();\n      }, 200);\n    }\n\n    public previous(): void {\n      if (!this._currentItem) {\n        return this.setCurrentItem(this.getItemByIdx(0).link, true, false, true);\n      }\n      const targetIndex: number = Math.max(0, this._currentItem.idx - 1);\n      const previousItem: IScrollerItem = this.getItemByIdx(targetIndex);\n      this.setCurrentItem(previousItem.link, true, false, true);\n    }\n\n    public next(): void {\n      if (!this._currentItem) {\n        return this.setCurrentItem(this.getItemByIdx(0).link, true, false, true);\n      }\n      const targetIndex: number = Math.min(\n        this._scrollerItems.length - 1,\n        this._currentItem.idx + 1\n      );\n      const nextItem: IScrollerItem = this.getItemByIdx(targetIndex);\n      this.setCurrentItem(nextItem.link, true, false, true);\n    }\n\n    public setCurrentItemFromLink(linkItem: HTMLElement | undefined, triggerJumpToAnchor: boolean = true): void {\n      if(linkItem) {\n        const reqTarget = $(linkItem).data('tabRequestTarget');\n        let item = this._scrollerItems.find(si => si.link.classList.contains(reqTarget));\n        if(!item) {\n          item = this._scrollerItems.find(si => si.link.getAttribute('href') === linkItem?.getAttribute('href'));\n        }\n        if (item) {\n          this.setCurrentItem(item.link);\n          // Links flagged with 'ehel-tab-item--avoid-scrolling' (the PID tab\n          // navigation items) only switch the tab and must not scroll the page.\n          // The \"view more\" / drawer links that open a tab from elsewhere are not\n          // flagged, so they scroll the tab navigation into view (the drawer\n          // itself is opened by the drawer controller afterwards).\n          const offset = $(item.target).offset();\n          if (offset && !linkItem.classList.contains('ehel-tab-item--avoid-scrolling')) {\n            $('html, body').animate({\n                scrollTop: offset.top - 150\n            }, 300);\n          }\n        }\n      }\n    }\n\n    public setCurrentItemFromId(tabId: string | undefined, triggerJumpToAnchor: boolean = true): void {\n      if(tabId) {\n        const item = this.getItemByTabId(tabId);\n        if (item) {\n          this.setCurrentItem(item.link);\n          const offset = $(item.target).offset();\n          if (offset) {\n            $('html, body').animate({\n                scrollTop: offset.top - 150\n            }, 300);\n          }\n        }\n      }\n    }\n\n    public setCurrentItem(\n      item: HTMLElement | undefined,\n      triggerJumpToAnchor: boolean = true,\n      interactive: boolean = false,\n      updateHash: boolean = false\n    ): void {\n      let _deselected = this._currentItem;\n      if (this._currentItem) {\n        this._currentItem.link.classList.remove(\n          EhTabViewModel.ACTIVE_CLASSNAME\n        );\n        this._currentItem?.target.classList.remove(\n          EhTabViewModel.ACTIVE_CLASSNAME\n        );\n        this._currentItem.link.blur();\n      }\n      this._currentItem = this.getItemByEl(item);\n      this._currentItem?.link.classList.add(EhTabViewModel.ACTIVE_CLASSNAME);\n      this._currentItem?.target.classList.add(EhTabViewModel.ACTIVE_CLASSNAME);\n      interactive && this.onTabSelectionChange(_deselected?.tabId, this._currentItem?.tabId);\n      this.alignItemToViewport(this._currentItem);\n\n      // Reflect the active tab in the URL hash on user-initiated changes. replaceState (not\n      // location.hash =) keeps the path/query, changes only the fragment, and avoids firing\n      // hashchange → initTabByHash again or piling up browser-history entries.\n      const hash = (this._currentItem?.link as HTMLAnchorElement | undefined)?.hash;\n      if (updateHash && hash && hash !== document.location.hash) {\n        window.history.replaceState(window.history.state, document.title, hash);\n      }\n    }\n\n    public getCurrentItemId() {\n      return this._currentItem?.tabId;\n    }\n\n    public scrollToItem(item: HTMLElement | undefined): void {\n      const scrollerItem = this.getItemByEl(item);\n      const offset = scrollerItem && $(scrollerItem.target).offset();\n      if (offset) {\n        $('html, body').animate({\n            scrollTop: offset.top - 150\n        }, 300);\n      }\n    }\n\n    addExternalTabName(extTabId: string):void {\n      // registering the same external tab twice (several overlays inside one tab\n      // container) would only duplicate entries in the sibling list\n      if(extTabId && this._externalTabs.indexOf(extTabId) === -1) {\n        this._externalTabs = this._externalTabs.concat(extTabId);\n      }\n    }\n\n    public refresh(): void {\n      if (!this.isDisabled) {\n        this.invalidate();\n      }\n    }\n\n    fireTabChangedExtern(extTabId:string|null) {\n      if(extTabId) {\n        this.onTabSelectionChange(this._currentItem?.tabId, extTabId);\n      } else {\n        this.onTabSelectionChange(undefined, this._currentItem?.tabId);\n      }\n    }\n\n    private init(): void {\n      this.navigationHeight = this.scroller.clientHeight;\n      const initialSelection: HTMLElement | null = this.scroller?.querySelector(\n        `.${EhTabViewModel.ACTIVE_CLASSNAME}`\n      ) as HTMLElement;\n      this.invalidateItems();\n      // do not set interactive as by async init the initial page view is already tracked and the initial tab is tracked by Skin\n      this.setCurrentItem(initialSelection ?? this.getItemByIdx(0).link, false, false);\n\n      if (this._scrollerItems.length < EhTabViewModel.MIN_AMOUNT_SCROLL_ITEMS) {\n        this.isDisabled = true;\n        // this.scroller.classList.add(EhAnchorNavigationViewModel.HIDE_CLASSNAME);\n        this._scrollerItems = [];\n        return;\n      }\n\n      window.addEventListener(\"resize\", eh.debounce(this.invalidate, 40));\n      if (initialSelection) {\n        this.setCurrentItem(initialSelection);\n      }\n      this.invalidateControls();\n      this.scroller.addEventListener(\n        \"scroll\",\n        eh.debounce(this.onNavigationScrollChange, 40),\n        { passive: true }\n      );\n      const initTabByHash = () => {\n        let matched = false;\n        this.items?.forEach((item) => {\n          const href = (item as any).href;\n          if (href === document.location.hash || href === document.location.href) {\n            this.setCurrentItem(item);\n            matched = true;\n          }\n        });\n        if (!matched) {\n          // A hash naming an element inside a tab opens that tab. Process maps name theirs as\n          // '#pm-svg-<id>'; their controller ships in another package, hence the optional call.\n          const hash = document.location.hash;\n          const id = eh.EhProcessMapController?.mapIdFromHash(hash) ?? hash.slice(1);\n          const target = id ? document.getElementById(id) : null;\n          const item = target ? this._scrollerItems.find((si) => si.target.contains(target)) : undefined;\n          if (item) {\n            this.setCurrentItem(item.link);\n          }\n        }\n      };\n\n      // A \"t.tabId\" URL parameter (e.g. ?t.tabId=product-instock) opens the tab\n      // whose href is '#<tabId>' directly. When present it takes precedence over\n      // the URL anchor, which is then not evaluated.\n      const tabIdFromParam = this.getTabIdFromParam();\n      if (tabIdFromParam) {\n        const item = this.getItemByTabId(tabIdFromParam)\n          ?? this._scrollerItems.find((si) => si.link.getAttribute('href') === '#' + tabIdFromParam);\n        if (item) {\n          this.setCurrentItem(item.link);\n        }\n      } else {\n        initTabByHash();\n      }\n\n      // Re-select the tab when the hash changes in-place (same window/tab). Without this,\n      // only a full page load with a hash opens the right tab; navigating to a #tab hash on\n      // an already-loaded page fires hashchange but would otherwise be ignored.\n      window.addEventListener(\"hashchange\", () => {\n        initTabByHash();\n      });\n\n    }\n\n    private onNavigationScrollChange = (): void => {\n      this.targetScrollPosLeft = this.scroller.scrollLeft;\n      this.invalidateControls();\n    };\n\n    private alignItemToViewport(item: IScrollerItem | undefined): void {\n      if (!item) {\n        return;\n      }\n      const leftOffset: number = item.idx > 0 ? this.navigationHeight : 0;\n      const rightOffset: number =\n        item.idx < this._scrollerItems.length - 1 ? this.navigationHeight : 0;\n\n      const scrollerPos: number = this.scroller.scrollLeft;\n      let clippingLeft: number =\n        item.link.offsetLeft - leftOffset - scrollerPos;\n      let clippingRight: number =\n        item.link.offsetLeft +\n        item.link.clientWidth -\n        this.scroller.clientWidth +\n        rightOffset -\n        scrollerPos;\n\n      if (clippingLeft < 0) {\n        this.targetScrollPosLeft = scrollerPos + Math.min(0, clippingLeft);\n      }\n      if (clippingRight > 0) {\n        this.targetScrollPosLeft = scrollerPos + Math.max(0, clippingRight);\n      }\n\n      if (this.scroller.scrollLeft !== this.targetScrollPosLeft) {\n        $(this.scroller).animate(\n          {\n            scrollLeft: this.targetScrollPosLeft,\n          },\n          EhTabViewModel.TRANSITION_DURATION,\n          EhTabViewModel.TRANSITION_EASING_LINEAR\n        );\n      }\n    }\n\n    private animateToAnchor(item: IScrollerItem | undefined): void {\n      const el: Element | null = document.scrollingElement;\n      if (!el) {\n        return;\n      }\n      $(el).animate(\n        {\n          scrollTop: item?.thresholdBegin,\n        },\n        EhTabViewModel.TRANSITION_DURATION,\n        EhTabViewModel.TRANSITION_EASING_SWING\n      );\n    }\n\n    private getItemByTabId(\n      id: string | undefined\n    ): IScrollerItem | undefined {\n      return this._scrollerItems.find((si) => si.tabId === id);\n    }\n\n    private getTabIdFromParam(): string {\n      const params = URLHelper.buildQueryParamMap(URLHelper.parse(window.location.href).search);\n      const value = params[EhTabViewModel.TAB_ID_PARAM];\n      if (!value) {\n        return '';\n      }\n      return value instanceof Array ? value[0] : value;\n    }\n\n    private getItemByEl(\n      el: HTMLElement | undefined\n    ): IScrollerItem | undefined {\n      return this._scrollerItems.find((si) => si.link === el);\n    }\n\n    private getItemByIdx(idx: number): IScrollerItem {\n      if (idx < 0 || idx > this._scrollerItems.length - 1) {\n        throw new Error(`Out of bounds. Failed to invalidate controls`);\n      }\n      return this._scrollerItems[idx];\n    }\n\n    private getItemByOffset(offset: number): IScrollerItem | undefined {\n      return this._scrollerItems.find((i) => {\n        return i.thresholdBegin <= offset && i.thresholdEnd > offset;\n      });\n    }\n\n    private invalidate = (): void => {\n      this.invalidateControls();\n      this.invalidateItems();\n    };\n\n    private invalidateItems = (): void => {\n      this._scrollerItems = [];\n      let idx: number = 0;\n      this.items?.forEach((value: HTMLElement): void => {\n        const targetKey: string | null = value.getAttribute(\"href\") || \"\";\n        let target: HTMLElement | null = document.getElementById(\n          targetKey.replace(/[#!]/g, \"\")\n        );\n        if (target === undefined || target === null) {\n          target = document.querySelector(\"[data-tab-id=\" + targetKey.replace(/[#!]/g, \"\") + \"]\");\n        }\n        const isDisabled: boolean = value.classList.contains(\n          EhTabViewModel.DISABLED_CLASSNAME\n        );\n        if (!target || isDisabled) {\n          return;\n        }\n        const topPos: number =\n          eh.offsetTopToBody(target) - this.navigationHeight;\n        this._scrollerItems.push({\n          tabId: value.dataset.csTrckTabId ?? '',\n          idx: idx++,\n          link: value,\n          target: target,\n          thresholdBegin: topPos,\n          thresholdEnd: topPos + target.getBoundingClientRect().height,\n        });\n      });\n    };\n\n    private invalidateControls = (): void => {\n      const hideClass: string = EhTabViewModel.HIDE_CLASSNAME;\n\n      // no active overflow (allow 1px of sub-pixel rounding, e.g. Safari zoom)\n      if (this.scroller.scrollWidth - this.scroller.clientWidth <= 1) {\n        this.previousButton?.classList.add(hideClass);\n        this.nextButton?.classList.add(hideClass);\n        return;\n      }\n\n      // handle previous button ctrl (same 1px tolerance as the next button below)\n      if (this.targetScrollPosLeft > 1) {\n        this.previousButton?.classList.remove(hideClass);\n      } else {\n        this.previousButton?.classList.add(hideClass);\n      }\n\n      // handle next button ctrl\n      const scrollerDelta: number =\n        this.scroller.scrollWidth - this.scroller.clientWidth - 1;\n      if (this.targetScrollPosLeft < scrollerDelta) {\n        this.nextButton?.classList.remove(hideClass);\n      } else {\n        this.nextButton?.classList.add(hideClass);\n      }\n    };\n\n    /**\n     * Report a tab preselected on page load -- by '?t.tabId=<id>' or by the URL anchor -- as the\n     * page state. On the redesigned product page 'PS TabsGroup PID Skin.ftl' always reports the\n     * first tab (it gates on 'active', which falls back to index 0, where the UPID skin gates on\n     * 'realActive'), so a deeplinked tab was counted as tab 1.\n     *\n     * Called synchronously from the controller's init, which runs before eh.Tracking is\n     * initialised: the call is queued in Tracking.earlyOnsiteNavigations and applied to the data\n     * layer before the initial page view is sent, so that single view carries the right tab.\n     * Deliberately no TAB_ACTIVATE -- the page load already owns a view, and a second one would\n     * double-count it.\n     *\n     * Works off the navigation items rather than '_scrollerItems' because the view model's own\n     * init, which builds those, is deferred by 200 ms -- too late for the initial page view.\n     */\n    public reportInitialTab(): void {\n      if (!this.extendedChangeReport || !this.items || this.items.length < EhTabViewModel.MIN_AMOUNT_SCROLL_ITEMS) {\n        return;\n      }\n      const tabIdFromParam = this.getTabIdFromParam();\n      const tabIds: string[] = [];\n      let initialTabId = '';\n      this.items.forEach((item: HTMLElement): void => {\n        const tabId = item.dataset.csTrckTabId ?? '';\n        tabIds.push(tabId);\n        const isInitial = tabIdFromParam\n          ? (tabId === tabIdFromParam || item.getAttribute('href') === '#' + tabIdFromParam)\n          : ((item as any).href === document.location.hash || (item as any).href === document.location.href);\n        if (isInitial && tabId) {\n          initialTabId = tabId;\n        }\n      });\n      if (!initialTabId) {\n        this.items.forEach((item: HTMLElement): void => {\n          if (!initialTabId\n              && item.classList.contains('marker-trck-tab-level')\n              && item.classList.contains('is-active')) {\n            initialTabId = item.dataset.csTrckTabId ?? '';\n          }\n        });\n      }\n      if (initialTabId) {\n        eh.Tracking.handleOnsiteNavigation(initialTabId, tabIds);\n      }\n    }\n\n    private onTabSelectionChange: (oldTabId: string | undefined, tabId: string | undefined) => void = (oldTabId: string | undefined, tabId: string | undefined): void => {\n      //$(':root').trigger(TAB_EVENTS.TAB_CHANGE, tabId);\n      const tab = this.getItemByTabId(tabId);\n    \n      // const historyParamName = $(this.el).data('csTabParam');\n      // if (historyParamName) {\n      //     const url = window.location.href;\n      //     const qpm = URLHelper.buildQueryParamMap(URLHelper.parse(url).search);\n      //     if (!(historyParamName in qpm) || qpm[historyParamName].indexOf(tabId) !== 0) { // history param does not start with tab id\n      //         qpm[historyParamName] = tabId;\n      //         window.history.replaceState(null, document.title, URLHelper.buildUrl(window.location.href, URLHelper.buildQueryString(qpm)));\n      //     }\n      // }\n\n      if(this.extendedChangeReport) {\n        let siblingHeadings = this._scrollerItems.map((el) => {return el.tabId});\n        siblingHeadings = [ ...siblingHeadings, ...this._externalTabs];\n        if (tab) {\n          // activate: .ehel-tab-navigation add .marker-cs-tracking-onsite-subpage\n          // avoid double track: a.marker-no-page-track\n          // page load tab track: cp an skin\n          const newHeading: string|undefined = tab.tabId;\n          if (newHeading) {\n            window.setTimeout(()=>{\n              // While the configuration view is open it -- not a tab -- is the page state, and\n              // eh.FullContentOverlayController reports it. Reporting the tab bar on top would\n              // push the tab below 'product-configure' and send a second, wrong view.\n              if (eh.FullContentOverlayController.isConfigurationOpen()) {\n                return;\n              }\n              eh.Tracking.handleOnsiteNavigation(newHeading, siblingHeadings);\n              $(':root').trigger(VPAGE_EVENTS.TAB_ACTIVATE, tab);\n            });\n          }\n        }\n        else if(tabId && (this._externalTabs.indexOf(tabId) > -1)) {\n          window.setTimeout(()=>{\n            // While the configuration view is open it -- not a tab -- is the page state, and\n            // eh.FullContentOverlayController reports it. Reporting the tab bar on top would\n            // push the tab below 'product-configure' and send a second, wrong view.\n            eh.Tracking.handleOnsiteNavigation(tabId, siblingHeadings);\n            $(':root').trigger(VPAGE_EVENTS.VTAB_ACTIVATE, tabId);\n          });\n        }\n      }\n    };\n\n  }\n}\n","namespace eh {\n  export class TooltipController {\n    public static TOOLTIP_DATA_ATTR: string = 'data-tooltip-text';\n    public static TOOLTIP_TARGET_DATA_ATTR: string = 'data-tooltip-target';\n    public static TOOLTIP_CLOSE_TARGET_DATA_ATTR: string = 'data-tooltip-close-target';\n    public static TOOLTIP_MODE_DATA_ATTR: string = 'data-tooltip-mode';\n    // Opt-in: when present on a tooltip target, the click handler is not registered, so the\n    // element's native action (e.g. a link's navigation) is not preventDefaulted. Hover behavior\n    // (mouseover mode) is unaffected. Default behavior (attribute absent) keeps click enabled.\n    public static TOOLTIP_DISABLE_CLICK_DATA_ATTR: string = 'data-tooltip-disable-click';\n    public static EHEL_TOOLTIP_HTML_CLASS: string = '.ehel-tooltip-html';\n\n    static init($base: JQuery<HTMLElement>): void {\n      if($base.length > 0) {\n        new TooltipController($base[0]);\n      };\n    }\n\n    private tooltips: NodeListOf<HTMLElement> | null | undefined;\n    private tooltipsTarget: NodeListOf<HTMLElement> | null | undefined;\n    private closeTooltipsTarget: NodeListOf<HTMLElement> | null | undefined;\n    private tooltipsHtml: NodeListOf<HTMLElement> | null | undefined;\n    private vm: TooltipViewModel | null | undefined = null;\n\n    constructor(private readonly base: HTMLElement | null) {\n      this.tooltips = this.base?.querySelectorAll(`[${TooltipController.TOOLTIP_DATA_ATTR}]`);\n      this.tooltipsTarget = this.base?.querySelectorAll(`[${TooltipController.TOOLTIP_TARGET_DATA_ATTR}]`);\n      this.closeTooltipsTarget = this.base?.querySelectorAll(`[${TooltipController.TOOLTIP_CLOSE_TARGET_DATA_ATTR}]`);\n      this.tooltipsHtml = this.base?.querySelectorAll(TooltipController.EHEL_TOOLTIP_HTML_CLASS);\n\n      if (!this.tooltips && !this.tooltipsTarget) {\n        return;\n      }\n      this.vm = new TooltipViewModel();\n      this.init();\n    }\n\n    private init(): void {\n      this.registerControls();\n    }\n\n    private registerControls(): void {\n      this.tooltips?.forEach(tooltip => {\n        tooltip.addEventListener('mouseenter', this.onMouseEnter);\n        tooltip.addEventListener('mouseleave', this.onMouseLeave);\n        tooltip.addEventListener('mousemove', this.onMouseMove);\n      });\n      this.tooltipsTarget?.forEach(tooltip => {\n        if (!tooltip.hasAttribute(TooltipController.TOOLTIP_DISABLE_CLICK_DATA_ATTR)) {\n          tooltip.addEventListener('click', this.onMouseClick);\n        }\n        if (tooltip.dataset[TooltipViewModel.TOOLTIP_TARGET_MODE] === 'mouseover') {\n          tooltip.addEventListener('mouseenter', this.onMouseClick);\n          tooltip.addEventListener('mouseleave', this.onMouseCloseLeave);\n        }\n      });\n      this.closeTooltipsTarget?.forEach(tooltip => {\n        tooltip.addEventListener('click', this.onMouseCloseClick);\n      });\n      this.tooltipsHtml?.forEach(tooltip => {\n        tooltip.addEventListener('blur', this.onBlur);\n      });\n    }\n\n    private onMouseEnter = (event: MouseEvent): void => {\n      this.vm?.onMouseEnter(event);\n    }\n\n    private onMouseLeave = (event: MouseEvent): void => {\n      this.vm?.onMouseLeave(event);\n    }\n\n    private onMouseCloseLeave = (event: MouseEvent): void => {\n      this.vm?.onMouseCloseLeave(event);\n    }\n\n    private onMouseMove = (event: MouseEvent): void => {\n      this.vm?.onMouseMove(event);\n    }\n\n    private onMouseClick = (event: MouseEvent): void => {\n\n      if ((event.currentTarget as HTMLElement).dataset[TooltipViewModel.TOOLTIP_TARGET_MODE] !== 'mouseover') {\n        event.preventDefault();\n      }\n      \n      //event.stopPropagation();\n      this.vm?.onMouseClick(event);\n      \n    }\n\n    private onMouseCloseClick = (event: MouseEvent): void => {\n      event.preventDefault();\n      this.vm?.onMouseCloseClick(event);\n    }\n\n    private onBlur = (event: FocusEvent): void => {\n      this.vm?.onBlur(event);\n    }\n  }\n\n  class TooltipViewModel {\n    public static TOOLTIP_TARGET_ID: string = 'tooltipTarget';\n    public static TOOLTIP_CLOSE_TARGET_ID: string = 'tooltipCloseTarget';\n    public static TOOLTIP_TARGET_MODE: string = 'tooltipMode';\n    public static HIDDEN_CLASSNAME: string = 'ehtw-hidden';\n    // COM-3970: a tooltip bubble can be referenced via data-tooltip-element (not only id),\n    // which avoids duplicate-id issues when the same bubble markup repeats.\n    public static TOOLTIP_ELEMENT_DATA_ATTR: string = 'data-tooltip-element';\n\n    constructor() {\n    }\n\n    public onMouseEnter (event: MouseEvent) {\n      const target = event.currentTarget as HTMLElement;\n      target.classList.add('before:!ehtw-visible');\n      target.classList.add('after:!ehtw-visible');\n      target.style.setProperty('--tooltip-top', `${event.clientY - 90}px`);\n      target.style.setProperty('--tooltip-left', `${event.clientX - 10}px`);\n    }\n\n    public onMouseMove (event: MouseEvent) {\n      const target = event.currentTarget as HTMLElement;\n      target.style.setProperty('--tooltip-top', `${event.clientY  - 90}px`);\n      target.style.setProperty('--tooltip-left', `${event.clientX - 10}px`);\n    }\n\n    public onMouseLeave (event: MouseEvent) {\n      const target = event.currentTarget as HTMLElement;\n      target.classList.remove('before:!ehtw-visible');\n      target.classList.remove('after:!ehtw-visible');\n    }\n\n    public onMouseClick (event: MouseEvent) {\n      const target = event.currentTarget as HTMLElement;\n      const ttId = target.dataset[TooltipViewModel.TOOLTIP_TARGET_ID];\n      if (ttId) {\n        const tt = this.resolveBubble(target, ttId);\n        // positionAbsolute: place the bubble via JS relative to its scrollable wrapper\n        // (prevents clipping inside overflow containers); otherwise just reveal it.\n        // Supports all 4 directions the renderTooltipBubble macro can emit.\n        if (tt && tt.hasAttribute('data-position-absolute') && tt.dataset['positionAbsolute'] !== 'false') {\n          const wrapper = (target.closest('.ehel-tooltip--wrapper') ?? tt.closest('.ehel-tooltip--wrapper')) as HTMLElement;\n          const wrapperRect = (wrapper ?? document.body).getBoundingClientRect();\n          const triggerRect = target.getBoundingClientRect();\n\n          // Reveal first so the bubble box can be measured.\n          tt.classList.remove(TooltipViewModel.HIDDEN_CLASSNAME);\n\n          const box = tt.firstElementChild as HTMLElement | null;\n          const bubbleWidth = box?.clientWidth ?? 0;\n          const bubbleHeight = box?.clientHeight ?? 0;\n          const scrollTop = wrapper ? wrapper.scrollTop : 0;\n          const scrollLeft = wrapper ? wrapper.scrollLeft : 0;\n          const triggerX = triggerRect.left - wrapperRect.left + scrollLeft;\n          const triggerY = triggerRect.top - wrapperRect.top + scrollTop;\n          const gap = 10;\n\n          // Direction = the side the bubble sits on relative to the trigger. Prefer an\n          // explicit data-position-absolute value; else infer from the variant's Tailwind\n          // anchor class (bottom-full=above, top-full=below, right-full=left, left-full=right).\n          // The variant's translate is kept (X-centered for top/bottom, Y-centered for\n          // left/right); the CSS bottom/right anchors are neutralised so the inline\n          // top/left fully control placement.\n          const posVal = tt.dataset['positionAbsolute'];\n          const cl = tt.classList;\n          const side: 'top' | 'bottom' | 'left' | 'right' =\n              (posVal === 'top' || posVal === 'bottom' || posVal === 'left' || posVal === 'right') ? posVal\n              : cl.contains('ehtw-top-full') ? 'bottom'\n              : cl.contains('ehtw-right-full') ? 'left'\n              : cl.contains('ehtw-left-full') ? 'right'\n              : 'top';\n\n          let top: number;\n          let left: number;\n          if (side === 'bottom') {          // bubble below the trigger\n            top = triggerY + triggerRect.height + gap;\n            left = triggerX + triggerRect.width / 2;\n          } else if (side === 'left') {     // bubble to the left of the trigger\n            top = triggerY + triggerRect.height / 2;\n            left = triggerX - bubbleWidth - gap;\n          } else if (side === 'right') {    // bubble to the right of the trigger\n            top = triggerY + triggerRect.height / 2;\n            left = triggerX + triggerRect.width + gap;\n          } else {                          // 'top' — bubble above the trigger (default)\n            top = triggerY - bubbleHeight - gap;\n            left = triggerX + triggerRect.width / 2;\n          }\n\n          tt.style.right = 'auto';\n          tt.style.bottom = 'auto';\n          tt.style.top = `${top}px`;\n          tt.style.left = `${left}px`;\n        } else {\n          tt?.classList.remove(TooltipViewModel.HIDDEN_CLASSNAME);\n        }\n        tt?.focus();\n      }\n    }\n\n    public onMouseCloseClick(event: MouseEvent) {\n      const target = event.currentTarget as HTMLElement;\n      this.close(target.dataset[TooltipViewModel.TOOLTIP_CLOSE_TARGET_ID], target);\n    }\n\n    public onMouseCloseLeave(event: MouseEvent) {\n      const target = event.currentTarget as HTMLElement;\n      this.close(target.dataset[TooltipViewModel.TOOLTIP_TARGET_ID], target);\n    }\n\n    // Resolve a tooltip bubble for a trigger. Scope to the trigger's own tooltip\n    // wrapper FIRST: repeated components (e.g. spare-part cards duplicated across\n    // slider layouts) share the same id, so a global lookup would return the first\n    // (wrong) bubble. Fall back to global id / [data-tooltip-element] for tooltips\n    // whose bubble is not inside a shared wrapper (e.g. renderTooltipBubble).\n    private resolveBubble(from: HTMLElement | null | undefined, ttId: string): HTMLElement | null {\n      const sel = `[id=\"${ttId}\"], [${TooltipViewModel.TOOLTIP_ELEMENT_DATA_ATTR}=\"${ttId}\"]`;\n      const scope = from?.closest('.ehel-flex-tag-container, .ehel-tooltip--wrapper');\n      const scoped = scope ? (scope.querySelector(sel) as HTMLElement | null) : null;\n      if (scoped) {\n        return scoped;\n      }\n      return (document.getElementById(ttId)\n        ?? document.querySelector(`[${TooltipViewModel.TOOLTIP_ELEMENT_DATA_ATTR}=\"${ttId}\"]`)) as HTMLElement | null;\n    }\n\n    public onBlur(event: FocusEvent) {\n      const target = event.currentTarget as HTMLElement;\n      target?.classList.add(TooltipViewModel.HIDDEN_CLASSNAME);\n    }\n\n    public close(ttId?: string, from?: HTMLElement) {\n      if (ttId) {\n        const tt = this.resolveBubble(from, ttId);\n        tt?.classList.add(TooltipViewModel.HIDDEN_CLASSNAME);\n      }\n    }\n  }\n}","namespace eh {\n\n    /* e.g.:\n      <div class=\"eh-popover-button eh-layout--pos-rel\">\n        <a href=\"#\" class=\"eh-popover-button--button eh-link eh-icon-button--static-xs horizontal eh-icon-button eh-button--02\">\n          <i class=\"eh-icon icon-eh-share\"></i>\n          <span class=\"eh-label\">Share</span>\n        </a>\n        <div class=\"eh-popover-button--popover eh--hide\">\n          <ul class=\"eh-link--list eh-block-theme--02-shadow vertical\">\n            <li class=\"eh-link--list-item eh-p-h\">\n              <a href=\".\" class=\"eh-link eh-link--02 eh-ws-no-wrap\">Share A</a>\n            </li>\n            <li class=\"eh-link--list-item eh-p-h\">\n              <a href=\".\" class=\"eh-link eh-link--02 eh-ws-no-wrap\">Share B</a>\n            </li>\n          </ul>\n        </div>\n      </div>\n    */\n\n    export class PopoverButton {\n\n        static POPOVER_BUTTON_SELECTOR: string = '.eh-popover-button';\n\n        static init($base: JQuery<HTMLElement>): void {\n            $(PopoverButton.POPOVER_BUTTON_SELECTOR, $base).each((idx: number, popOverButton: HTMLElement): void => {\n                new PopoverButtonCtrl(popOverButton);\n            });\n        }\n    }\n\n    class PopoverButtonCtrl {\n\n        static POPOVER_BUTTON_BUTTON_SELECTOR: string = '.eh-popover-button--button';\n        static POPOVER_BUTTON_POPOVER_SELECTOR: string = '.eh-popover-button--popover';\n\n        private _popover: VisibleItem;\n        private _button: HTMLElement;\n\n        constructor(popoverButton: HTMLElement) {\n            const popoverElement: HTMLElement | null = popoverButton.querySelector(PopoverButtonCtrl.POPOVER_BUTTON_POPOVER_SELECTOR);\n            const buttonElement: HTMLElement | null = popoverButton.querySelector(PopoverButtonCtrl.POPOVER_BUTTON_BUTTON_SELECTOR);\n            if (popoverElement && buttonElement) {\n                this._popover = new VisibleItem(popoverElement);\n                this._button = buttonElement;\n                this.init();\n            } else {\n                throw new Error('PopoverButtonCtrl is missing required elements');\n            }\n        }\n\n        private init(): void {\n            this._button.addEventListener('click', this.onButtonClick);\n        }\n\n        private registerDocumentClick(): void {\n            document.addEventListener('click', this.onDocumentClick);\n        }\n\n        private unregisterDocumentClick(): void {\n            document.removeEventListener('click', this.onDocumentClick);\n        }\n\n        private onButtonClick = (e: Event): void => {\n            e.preventDefault();\n            this._popover.show();\n            setTimeout(() => this.registerDocumentClick(), 0); // register after current event was handled\n        };\n\n        private onDocumentClick = (): void => {\n            this._popover.hide();\n            this.unregisterDocumentClick();\n        };\n\n    }\n\n}\n","namespace eh {\n\n    /* e.g.:\n      <button data-popover-target=\"popover\">…</button>\n      <div id=\"popover\" class=\"ehel-popover\">\n        <button data-popover-close-target=\"popover\">✕</button>\n        …\n      </div>\n      Open state is the class `ehel-popover--open` on the popover element.\n    */\n\n    export class PopoverController {\n\n        static POPOVER_TARGET_ATTR: string = 'data-popover-target';\n        static POPOVER_CLOSE_TARGET_ATTR: string = 'data-popover-close-target';\n        static POPOVER_CONTAINER_CLASS: string = 'ehel-popover';\n        static POPOVER_OPEN_CLASS: string = 'ehel-popover--open';\n\n        private static documentListenerBound: boolean = false;\n\n        static init($base: JQuery<HTMLElement>): void {\n            $base.each((_idx: number, base: HTMLElement): void => {\n                const triggers = base.querySelectorAll<HTMLElement>(`[${PopoverController.POPOVER_TARGET_ATTR}]`);\n                triggers.forEach(t => t.addEventListener('click', PopoverController.onTriggerClick));\n\n                const closers = base.querySelectorAll<HTMLElement>(`[${PopoverController.POPOVER_CLOSE_TARGET_ATTR}]`);\n                closers.forEach(c => c.addEventListener('click', PopoverController.onCloseClick));\n            });\n\n            if (!PopoverController.documentListenerBound) {\n                document.addEventListener('click', PopoverController.onDocumentClick);\n                PopoverController.documentListenerBound = true;\n            }\n        }\n\n        private static onTriggerClick = (event: MouseEvent): void => {\n            const trigger = event.currentTarget as HTMLElement;\n            const id = trigger.getAttribute(PopoverController.POPOVER_TARGET_ATTR);\n            if (!id) {\n                return;\n            }\n            const popover = document.getElementById(id);\n            if (!popover) {\n                return;\n            }\n            event.preventDefault();\n            const isOpen = popover.classList.contains(PopoverController.POPOVER_OPEN_CLASS);\n            if (isOpen) {\n                popover.classList.remove(PopoverController.POPOVER_OPEN_CLASS);\n            } else {\n                popover.classList.add(PopoverController.POPOVER_OPEN_CLASS);\n                popover.focus();\n            }\n        };\n\n        private static onCloseClick = (event: MouseEvent): void => {\n            event.preventDefault();\n            const closer = event.currentTarget as HTMLElement;\n            const id = closer.getAttribute(PopoverController.POPOVER_CLOSE_TARGET_ATTR);\n            if (!id) {\n                return;\n            }\n            const popover = document.getElementById(id);\n            popover?.classList.remove(PopoverController.POPOVER_OPEN_CLASS);\n        };\n\n        private static onDocumentClick = (event: MouseEvent): void => {\n            const target = event.target as Node;\n            const openPopovers = document.querySelectorAll<HTMLElement>(`.${PopoverController.POPOVER_OPEN_CLASS}`);\n            if (openPopovers.length === 0) {\n                return;\n            }\n            const triggers = document.querySelectorAll<HTMLElement>(`[${PopoverController.POPOVER_TARGET_ATTR}]`);\n            let inside = false;\n            openPopovers.forEach(p => { if (p.contains(target)) inside = true; });\n            triggers.forEach(t => { if (t.contains(target)) inside = true; });\n            if (!inside) {\n                openPopovers.forEach(p => p.classList.remove(PopoverController.POPOVER_OPEN_CLASS));\n            }\n        };\n\n    }\n\n}\n","namespace eh {\n\n  export class PreventRubberbandScroller {\n\n    public readonly _scrollContainerSelector: string[] = ['.eh-no-rubberband-scroll-trigger'];\n    public scroller: JQuery<HTMLElement>;\n    public static instance: PreventRubberbandScroller;\n\n    static init($base: JQuery<HTMLElement>): void {\n\n      if (!PreventRubberbandScroller.instance) {\n        PreventRubberbandScroller.instance = new PreventRubberbandScroller();\n      }\n\n      const instance: PreventRubberbandScroller = PreventRubberbandScroller.instance;\n      if (instance.scroller && instance.scroller.length) {\n        instance.scroller.off();\n      }\n      instance.scroller = $(instance._scrollContainerSelector.join(','));\n\n      if (!instance.scroller || !instance.scroller.length) {\n        return;\n      }\n\n      instance.scroller.each(\n        (idx: number, el: HTMLElement): any => new NoRubberbandScroller(el)\n      );\n\n    }\n\n  }\n\n  class NoRubberbandScroller {\n\n    private _clientY: number = -1;\n\n    constructor(private _el: HTMLElement) {\n      this.register(_el);\n    }\n\n    register(el: HTMLElement): void {\n      const hel: HTMLElement = el;\n      const eventParams: any = eh.Modernizr?.passiveeventlisteners ? { passive: true } : {};\n      hel.addEventListener('touchstart', this.onTouchStart, eventParams);\n      hel.addEventListener('touchmove', this.onTouchMove, eventParams);\n    }\n\n    public onTouchStart: any = (e: any): void => {\n      if (e.targetTouches.length === 1) {\n        this._clientY = e.targetTouches[0].clientY;\n      }\n    };\n\n    public onTouchMove: any = (e: any): void => {\n      if (e.targetTouches.length === 1) {\n        this.disableRubberBand(e);\n      }\n    };\n\n    private disableRubberBand(e: any): void {\n      const clientY: number = e.targetTouches[0].clientY - this._clientY,\n            __el: HTMLElement = this._el;\n\n      if (__el.scrollHeight === __el.clientHeight) {\n        e.stopImmediatePropagation();\n        e.preventDefault();\n      }\n\n      if (__el.scrollTop === 0 && clientY > 0) {\n        e.stopImmediatePropagation();\n        e.preventDefault();\n      }\n\n      if (this.isOverlayTotallyScrolled() && clientY < 0) {\n        e.stopImmediatePropagation();\n        e.preventDefault();\n      }\n    }\n\n    private isOverlayTotallyScrolled(): boolean {\n      const __el: HTMLElement = this._el;\n      return __el.scrollHeight - __el.scrollTop <= __el.clientHeight;\n    }\n\n  }\n\n}","namespace eh {\n  \n  /**\n   * Fetches prices of products from webservice and displays them via widgets placed into the DOM\n   *\n   */\n  export class ProductPricing {\n    \n    public static readonly EventIdProductPriceUpdate = 'ehProductPricing:productPriceUpdate';\n    public static readonly DATA_KEY = 'ehProductPricing';\n    public static readonly SELECTOR_LAZY_MARKER = '.marker-product-pricing-lazy';\n    public static readonly SELECTOR_LAZY_TRIGGER_LOAD = '.trigger-product-pricing-load';\n    public static readonly CLASS_HIDDEN = 'eh--hide';\n    \n    static readonly logger = log.getLogger('eh.ProductPricing');\n\n    static init($base: JQuery<HTMLElement>, isSnippetRequest = false): void {\n      if (isSnippetRequest) {\n        return;\n      }\n      const $productPricingRoot = $('body', $base);\n      if ($productPricingRoot.length === 0) {\n        return;\n      }\n\n      const config: ProductPricingConfiguration = $productPricingRoot.data('productPricingConfig');\n      if (!config || Object.keys(config).length === 0) {\n        return;\n      }\n\n      const pricing = new ProductPricing(config);\n      $productPricingRoot.data(ProductPricing.DATA_KEY, pricing);\n\n      $base.on(cs.Snippet.EventIdPostReplace, ($event: cs.SnippetEventPostReplace): void => {\n        pricing.fetchPrices(pricing.findPricePlaceholders($event.replacedTarget).filter(p => p.getType() === PlaceholderType.Price));\n        pricing.fetchPricesPreConfigured(pricing.findPricePlaceholders($event.replacedTarget).filter(p => p.getType() === PlaceholderType.PricePreConfigured));\n\n        const $lazyContainer = $(ProductPricing.SELECTOR_LAZY_MARKER, $event.replacedTarget);\n        $(ProductPricing.SELECTOR_LAZY_TRIGGER_LOAD, $event.replacedTarget)\n          .one('click', _$event => {\n          pricing.fetchPrices(pricing.findPricePlaceholders($lazyContainer).filter(p => p.getType() === PlaceholderType.Price), true);\n        });\n      })\n\n      /*\n        QuickSelect\n        - displays from-prices and scale at beginning\n        - displays configured-price and scale when ordercode is completed\n        - displays from-prices and scale again if config is changed\n       */\n      $(eh.QuickSelect.SELECTOR, $base).each((_index, el) => {\n        const $quickSelectRoot = $(el);\n        const qs = $quickSelectRoot.data(eh.QuickSelect.DATA_KEY) as eh.QuickSelect;\n        if (!qs) {\n          // can't do anything if quickselect is missing\n          return;\n        }\n\n        $quickSelectRoot.on(eh.QS_EVENTS.ORDER_CODE_COMPLETE, (_$event: JQuery.TriggeredEvent) => {\n          const selectedOptions: MaterialOptions = {o: qs.getSelectedOptions()};\n          pricing.fetchPricesConfigured(pricing.findPricePlaceholders($quickSelectRoot).filter(p => p.getType() === PlaceholderType.Price), true,\n            selectedOptions, qs.getSelectedChildProduct()?.materialNumber);\n          pricing.fetchPricesForOptions(pricing.findPricePlaceholders($quickSelectRoot).filter(p => p.getType() === PlaceholderType.Option), true);\n\n          $quickSelectRoot.one(eh.QS_EVENTS.ORDER_CODE_LEGEND_CHANGE, (_$event: JQuery.TriggeredEvent, data: {legend: IProductSegment[]}) => {\n            // prevent execution of fetchPrices when fetchPricesConfigured is in charge\n            if (data.legend.some((segment: IProductSegment): boolean => segment.isLastLayer)) {\n              return;\n            }\n            // restore un-configured price once on next quickselect change\n            pricing.fetchPrices(pricing.findPricePlaceholders($quickSelectRoot).filter(p => p.getType() === PlaceholderType.Price), true,\n              qs.getSelectedChildProduct()?.materialNumber);\n          });\n        }).on(eh.QS_EVENTS.ORDER_CODE_LEGEND_CHANGE, (_$event: JQuery.TriggeredEvent, data: {legend: IProductSegment[]}) => {\n          if (data.legend.length === 1) { // very first quickselect step\n            // refresh price after family product was selected\n            pricing.fetchPrices(pricing.findPricePlaceholders($quickSelectRoot).filter(p => p.getType() === PlaceholderType.Price), true,\n              qs.getSelectedChildProduct()?.materialNumber);\n          }\n        }).on(eh.QS_EVENTS.ORDER_CODE_CHANGE, (_$event: JQuery.TriggeredEvent) => {\n          pricing.fetchPricesForOptions(pricing.findPricePlaceholders($quickSelectRoot).filter(p => p.getType() === PlaceholderType.Option), true);\n        }).on(eh.QS_EVENTS.INIT, (_$event: JQuery.TriggeredEvent) => {\n          pricing.fetchPricesForOptions(pricing.findPricePlaceholders($quickSelectRoot).filter(p => p.getType() === PlaceholderType.Option), true,\n            qs.getSelectedChildProduct()?.materialNumber);\n        });\n      });\n  \n      pricing.fetchPrices(pricing.findPricePlaceholders($base).filter(p => p.getType() === PlaceholderType.Price));\n      pricing.fetchPricesPreConfigured(pricing.findPricePlaceholders($base).filter(p => p.getType() === PlaceholderType.PricePreConfigured));\n    }\n\n    static fetchPriceFor(matrNo: string, priceVisibilityName:string, callback: (info:SimplePriceInfo) => void): void {\n      const priceVisibility: PriceVisibility | undefined = PriceVisibility[priceVisibilityName as keyof typeof PriceVisibility]\n      if(!priceVisibility || !matrNo) {\n        return undefined;\n      }\n      const $productPricingRoot = $('body');\n      if ($productPricingRoot.length === 0) {\n        return;\n      }\n      let pricing = $productPricingRoot.data(ProductPricing.DATA_KEY) as ProductPricing;\n      pricing?.fetchSimplePriceInfo(matrNo, priceVisibility, callback);\n    }\n\n    protected service: PricingService;\n\n    constructor(private config: ProductPricingConfiguration) {\n      this.service = new PricingService(config, eh.NebpProxy.getInstance().getToken.bind(eh.NebpProxy.getInstance()));\n    }\n\n    public findPricePlaceholders($container: JQuery<HTMLElement>): PricePlaceholder[] {\n      const placeholders: PricePlaceholder[] = [];\n      $(PricePlaceholder.SELECTOR, $container).each((_index, el) => {\n        const $el = $(el);\n        const placeholder = $el.data(PricePlaceholder.DATA_KEY) ?? PricePlaceholder.create($el, this.service.getConfig());\n        if (placeholder) {\n          placeholders.push(placeholder);\n        }\n      });\n      return placeholders;\n    }\n\n    /* Used to fetch price of contentAsset if product */\n    fetchSimplePriceInfo(matnr : string, priceVisibility: PriceVisibility, callBack: (info: SimplePriceInfo) => void): void {\n      this.service.getPrice(matnr, priceVisibility).then(\n        (serviceResponse: PriceServiceResponse) => {\n          let res = serviceResponse.rsp?.res;\n          const priceInfo: PriceServiceResponse_Material | PriceServiceResponse_Options | PriceServiceResponse_Failure | undefined = \n            Array.isArray(res) ? res.filter(el => el.matnr == matnr)[0] : undefined;\n          if (ProductPricing.isMaterialResult(priceInfo)) {\n            let result: SimplePriceInfo = {\n              materialNo: priceInfo.matnr,\n              prefix : this.config.fromPricePrefix,\n              price : parseFloat(priceInfo.price),\n              scale: priceInfo.scale,\n              currency : priceInfo?.currency\n            };\n            callBack(result);\n          }    \n        })\n        .catch(reason => {\n          // no console.log\n        });\n    }\n    \n    /*\n    Takes material numbers of given placeholders and shows (unconfigured) from-prices fetched from service\n    Considers placeholders only once or if refresh is requested.\n    Material number might be overridden if a specific family product is selected.\n     */\n    public fetchPrices(placeholders: PricePlaceholder[], refresh: boolean = false, materialNumberOverwrite?: string) {\n      placeholders\n        .filter(placeholder => refresh || placeholder.getState() === PricePlaceholderState.INITIAL)\n        .forEach(placeholder => {\n          this.service.getPrice(materialNumberOverwrite ?? placeholder.getMaterialNumber(),\n            placeholder.getPriceVisibility()).then(\n            (serviceResponse: PriceServiceResponse) => {\n              placeholder.showPrice(serviceResponse, false, materialNumberOverwrite);\n            })\n            .catch(reason => {\n              placeholder.showError(reason);\n          });\n          placeholder.startLoading();\n        });\n    }\n\n    /*\n    Takes material numbers of given placeholders and shows configured-prices for given options fetched from service\n     */\n    public fetchPricesConfigured(placeholders: PricePlaceholder[], refresh: boolean = false, options: MaterialOptions, materialNumberOverwrite?: string) {\n      placeholders\n          .filter(placeholder => refresh || placeholder.getState() === PricePlaceholderState.INITIAL)\n        .forEach(placeholder => {\n          this.service.getPriceConfigured(materialNumberOverwrite ?? placeholder.getMaterialNumber(),\n            placeholder.getPriceVisibility(), options).then(\n            (serviceResponse: PriceServiceResponse) => {\n              placeholder.showPrice(serviceResponse, true, materialNumberOverwrite);\n            })\n            .catch(reason => {\n              placeholder.showError(reason);\n            });\n          placeholder.startLoading();\n        });\n    }\n  \n    public fetchPricesPreConfigured(placeholders: PricePlaceholder[], refresh: boolean = false) {\n      placeholders\n          .filter(placeholder => refresh || placeholder.getState() === PricePlaceholderState.INITIAL)\n          .forEach(placeholder => {\n            this.service.getPriceConfigured(placeholder.getMaterialNumber(),\n                placeholder.getPriceVisibility(), placeholder.getPreConfiguredOptions()).then(\n                (serviceResponse: PriceServiceResponse) => {\n                  placeholder.showPrice(serviceResponse, true);\n                })\n                .catch(reason => {\n                  placeholder.showError(reason);\n                });\n            placeholder.startLoading();\n          });\n    }\n\n    public fetchPricesForOptions(placeholders: PricePlaceholder[], refresh: boolean = false, materialNumberOverwrite?: string) {\n      placeholders\n          .filter(placeholder => refresh || placeholder.getState() === PricePlaceholderState.INITIAL)\n          .forEach(placeholder => {\n            this.service.getPriceForOptions(materialNumberOverwrite ?? placeholder.getMaterialNumber(),\n                placeholder.getPriceVisibility()).then(\n                (serviceResponse: PriceServiceResponse) => {\n                  placeholder.showPrice(serviceResponse, false, materialNumberOverwrite);\n                })\n                .catch(reason => {\n                  placeholder.showError(reason);\n                });\n            placeholder.startLoading();\n          });\n    }\n\n    public static isOptionStandard(option: PriceServiceResponse_OptionPrice | undefined): option is PriceServiceResponse_OptionPrice_Standard {\n      return option !== undefined\n        && (option as PriceServiceResponse_OptionPrice_Standard).v !== undefined\n        && (option as PriceServiceResponse_OptionPrice_Standard).v !== 'null'\n        && (option as PriceServiceResponse_OptionPrice_Dependend).l === undefined\n        && (option as PriceServiceResponse_OptionPrice_Dependend).u === undefined;\n    }\n\n    public static isOptionDependend(option: PriceServiceResponse_OptionPrice | undefined): option is PriceServiceResponse_OptionPrice_Dependend {\n      return option !== undefined\n        && (option as PriceServiceResponse_OptionPrice_Standard).v !== undefined\n        && (option as PriceServiceResponse_OptionPrice_Standard).v !== 'null'\n        && (option as PriceServiceResponse_OptionPrice_Dependend).u !== undefined;\n    }\n\n    public static isOptionNoPrice(option: PriceServiceResponse_OptionPrice_NoPrice | undefined): option is PriceServiceResponse_OptionPrice_NoPrice {\n      return option !== undefined\n        && ((option as PriceServiceResponse_OptionPrice_NoPrice).v === 'null'\n        || (option as PriceServiceResponse_OptionPrice_NoPrice).v === undefined);\n    }\n\n    public static isMaterialResult(option: PriceServiceResponse_Material | PriceServiceResponse_Options | PriceServiceResponse_Failure | undefined): option is PriceServiceResponse_Material {\n      return option !== undefined\n        && (option as PriceServiceResponse_Material).price !== undefined;\n    }\n\n    public static isOptionsResult(result: PriceServiceResponse_Material | PriceServiceResponse_Options | PriceServiceResponse_Failure | undefined): result is PriceServiceResponse_Options {\n      return result !== undefined\n        && Array.isArray((result as PriceServiceResponse_Options).options);\n    }\n\n  }\n  \n  export interface SimplePriceInfo {\n    readonly materialNo: string;\n    readonly prefix: string | undefined;\n    readonly price: number;\n    readonly scale?: PriceServiceResponse_Scale[],\n    readonly currency: string | undefined;\n  }\n\n  enum PlaceholderType {\n    Price,\n    Option,\n    PricePreConfigured,\n    PriceMirror\n  }\n\n  class PricePlaceholder {\n\n    public static readonly DATA_KEY = 'ehPricePlaceholder';\n    public static readonly SELECTOR = '.marker-price-placeholder';\n\n    private state: PricePlaceholderState;\n\n    private constructor(private readonly $el: JQuery<HTMLElement>,\n                        private readonly type: PlaceholderType,\n                        private readonly materialNumber: string,\n                        private readonly widget: PriceWidget,\n                        private readonly config: ProductPricingConfiguration,\n                        private readonly priceVisibility: PriceVisibility,\n                        lazy: boolean) {\n      this.state = lazy ? PricePlaceholderState.INITIAL_LAZY : PricePlaceholderState.INITIAL;\n    }\n\n    public static create($el: JQuery<HTMLElement>, config: ProductPricingConfiguration): PricePlaceholder | undefined {\n      const priceVisibility: PriceVisibility | undefined = PriceVisibility[$el.selfOrClosest('*[data-price-visibility]')\n        .data('priceVisibility') as keyof typeof PriceVisibility];\n      if ([PriceVisibility.ANONYMOUS, PriceVisibility.LOGGED_IN].indexOf(priceVisibility) === -1) {\n        return;\n      }\n      const materialNumber: string | undefined = $el.selfOrClosest('*[data-cs-product-material-number]')\n        .data('csProductMaterialNumber');\n      if (!materialNumber) {\n        return;\n      }\n      let widget: PriceWidget | undefined;\n      let $widgetEl;\n      const isPreConfigured = $el.data('pricePreConfigured') === true;\n      let placeholderType = isPreConfigured ? PlaceholderType.PricePreConfigured : PlaceholderType.Price;\n      $widgetEl = $el.selfOrFind('.eh-price-amount-control').emptyToOptional();\n      if (!widget && $widgetEl) {\n        widget = new PriceAmountControl($widgetEl, materialNumber, config);\n      }\n      $widgetEl = $el.selfOrFind('.eh-price-scales-widget').emptyToOptional();\n      if (!widget && $widgetEl) {\n        widget = new PriceScaleDisplayWidget($widgetEl);\n      }\n      $widgetEl = $el.selfOrFind('.eh-price-widget').emptyToOptional();\n      if (!widget && $widgetEl) {\n        if ($widgetEl.selfOrFind(PriceAmountMirrorWidget.SELECTOR_MIRROR).emptyToOptional()) {\n          widget = new PriceAmountMirrorWidget($widgetEl, materialNumber, !isPreConfigured);\n          placeholderType = PlaceholderType.PriceMirror;\n        } else {\n          widget = new PriceDisplayWidget($widgetEl);\n        }\n      }\n      $widgetEl = $el.selfOrFind('.eh-price-option-widget').emptyToOptional();\n      if (!widget && $widgetEl) {\n        widget = new PriceOptionDisplayWidget($widgetEl);\n        placeholderType = PlaceholderType.Option;\n      }\n      if (!widget) {\n        return;\n      }\n      const isInsideLazyContainer = $el.selfOrClosest(ProductPricing.SELECTOR_LAZY_MARKER).length > 0;\n      const placeholder = new PricePlaceholder($el, placeholderType, String(materialNumber), widget, config, priceVisibility, isInsideLazyContainer);\n      $el.data(PricePlaceholder.DATA_KEY, placeholder);\n      return placeholder;\n    }\n\n    public getMaterialNumber(): string {\n      return this.materialNumber;\n    }\n\n    public getOption(): string | undefined {\n      return this.$el.data('option');\n    }\n    \n    public getPreConfiguredOptions(): MaterialOptions {\n      if(this.$el.find('.marker-product-pricing-options').length) {\n        return  { o: this.$el.find('.marker-product-pricing-options').data('product-pricing-options') };\n      }\n      return {\n        o: $.map($('.marker-product-pricing-option', this.$el), (el) => '' + $(el).data('productPricingOption'))\n      };\n    }\n    \n    public getPriceVisibility(): PriceVisibility {\n      return this.priceVisibility;\n    }\n\n    public getState(): PricePlaceholderState {\n      return this.state;\n    }\n\n    public getType(): PlaceholderType {\n      if (this.type === PlaceholderType.PriceMirror) {\n        if ((this.widget as PriceAmountMirrorWidget).isMimicPriceDisplayWidget()) {\n          return PlaceholderType.Price;\n        }\n      }\n      return this.type;\n    }\n\n    public startLoading() {\n      if ([PricePlaceholderState.INITIAL,\n        PricePlaceholderState.UNAVAILABLE,\n        PricePlaceholderState.INITIAL_LAZY].indexOf(this.state) === -1) {\n        return;\n      }\n      this.widget.setLoading();\n      this.state = PricePlaceholderState.LOADING;\n    }\n\n    public showNoPrice() {\n      this.widget.setNoPrice();\n      this.state = PricePlaceholderState.NO_PRICE;\n    }\n\n    public showError(reason:any = undefined) {\n      this.widget.setDebugInfo('error', reason?.toString());\n      this.widget.setUnavailable();\n      this.state = PricePlaceholderState.UNAVAILABLE;\n    }\n\n    private filterResultByMaterialNumber(res: Array<PriceServiceResponse_Material | PriceServiceResponse_Options | PriceServiceResponse_Failure> | undefined, materialNumber: string) {\n      return Array.isArray(res) ? res.filter(result => result.matnr === materialNumber)[0] : undefined;\n    }\n\n    private getUnitLabel(unit: string) {\n      const unitKey = unit === 'zl' ? 'INCH' : unit.toUpperCase();\n      return this.config.unitLabels[unitKey] ?? unit;\n    }\n\n    public showPrice(serviceResponse: PriceServiceResponse, isConfigured = false, materialNumberOverwrite?: string) {\n      const priceInfo: PriceServiceResponse_Material | PriceServiceResponse_Options | PriceServiceResponse_Failure | undefined =\n          this.filterResultByMaterialNumber(serviceResponse.rsp?.res, materialNumberOverwrite ?? this.getMaterialNumber());\n\n      if (ProductPricing.isOptionsResult(priceInfo)) {\n        const optionValue = this.getOption();\n\n        const optionInfo: PriceServiceResponse_OptionPrice | undefined = priceInfo.options.filter(option => option.o === optionValue)[0];\n        if (this.widget instanceof PriceOptionDisplayWidget) {\n          if (ProductPricing.isOptionDependend(optionInfo)) {\n            const price = parseFloat(optionInfo.v);\n            const unitLabel = this.getUnitLabel(optionInfo.u);\n            this.widget.setPrice(\n                new Intl.NumberFormat(this.config.priceFormatLocale,{ style: 'currency', currency: optionInfo.c }).format(price)\n                + ' / '\n                + new Intl.NumberFormat(this.config.priceFormatLocale).format(optionInfo.l)\n                + ' '\n                + unitLabel);\n            this.state = PricePlaceholderState.SHOWING_PRICE;\n          }\n          else if (ProductPricing.isOptionStandard(optionInfo)) {\n            const price = parseFloat(optionInfo.v);\n            this.widget.setPrice(new Intl.NumberFormat(this.config.priceFormatLocale,\n              { style: 'currency', currency: optionInfo.c }).format(price)\n            );\n            this.state = PricePlaceholderState.SHOWING_PRICE;\n          }\n          else if (ProductPricing.isOptionNoPrice(optionInfo)) {\n            const price = 0.0;\n            this.widget.setPrice(new Intl.NumberFormat(this.config.priceFormatLocale,\n              {minimumFractionDigits: 2, maximumFractionDigits: 2}).format(price)\n            );\n            this.state = PricePlaceholderState.NO_PRICE;\n          }\n        }\n      }\n      else if (ProductPricing.isMaterialResult(priceInfo)) {\n        if (this.widget instanceof PriceDisplayWidget) {\n          const price = parseFloat(priceInfo?.price);\n          this.widget.setPrice(isConfigured ? '' : this.config.fromPricePrefix,\n            new Intl.NumberFormat(this.config.priceFormatLocale,\n              { style: 'currency', currency: priceInfo?.currency }).format(price)\n          );\n          this.state = PricePlaceholderState.SHOWING_PRICE;\n        }\n        else if (this.widget instanceof PriceScaleDisplayWidget) {\n          if (priceInfo?.scale) {\n            const priceScaleCropped: PriceServiceResponse_Scale[] = priceInfo.scale;\n            // .filter((scale, index) => {\n            //   return index < this.config.priceScaleMaxLevel;\n            // });\n            const priceScaleFormatted = priceScaleCropped.map((scale, index) => {\n              const price = parseFloat(scale.p.v);\n              const currency = scale.p.c;\n              const nextScale: PriceServiceResponse_Scale | undefined = priceScaleCropped?.[index + 1];\n              const nextQty = parseInt(nextScale?.fromqty ?? '', 10);\n              return {\n                'range': `${scale.fromqty}${isNaN(nextQty) ? '+' : ' - ' + (nextQty - 1)} ${this.config.piecesLabel}`,\n                'price': new Intl.NumberFormat(this.config.priceFormatLocale,\n                    { style: 'currency', currency: currency }).format(price)\n              };\n            });\n            this.widget.setPriceScales(priceScaleFormatted);\n          } else {\n            this.widget.setPriceScales(null);\n          }\n          this.state = PricePlaceholderState.SHOWING_PRICE;\n        }\n        else if (this.widget instanceof PriceAmountControl) {\n          this.widget.setPrice(priceInfo, isConfigured); // should quickselect be notified?\n          \n          if (priceInfo?.scale) {\n            const $qsElem = this.$el.selfOrClosest(QuickSelect.SELECTOR);\n            const qs = $qsElem.data(QuickSelect.DATA_KEY) as QuickSelect;\n            const priceScaleLegend = qs ? qs.priceScaleLegend : new QSPriceScaleLegend($(QSPriceScaleLegend.CONTAINER_CLASS_NAME, $qsElem));\n          \n            const priceScaleCropped: PriceServiceResponse_Scale[] = priceInfo.scale\n            .filter((scale, index) => {\n              return index < this.config.priceScaleMaxLevel;\n            });\n            const priceScaleFormatted = priceScaleCropped.map((scale, index) => {\n              const price = parseFloat(scale.p.v);\n              const currency = scale.p.c;\n              const nextScale: PriceServiceResponse_Scale | undefined = priceScaleCropped?.[index + 1];\n              const nextQty = parseInt(nextScale?.fromqty ?? '', 10);\n              return {\n                'range': `${scale.fromqty}${isNaN(nextQty) ? '+' : ' - ' + (nextQty - 1)} ${this.config.piecesLabel}`,\n                'price': new Intl.NumberFormat(this.config.priceFormatLocale,\n                    { style: 'currency', currency: currency }).format(price)\n              };\n            });\n            priceScaleLegend.update(priceScaleFormatted);\n          }\n          this.state = PricePlaceholderState.SHOWING_PRICE;\n        }\n      }\n      else if (priceInfo?.code === '401') {\n        this.widget.setUnavailable();\n        this.widget.setDebugInfo(priceInfo?.code, priceInfo?.msg);\n        this.state = PricePlaceholderState.UNAVAILABLE;\n      }\n      else if (priceInfo?.code === '403') {\n        eh.NebpProxy.getInstance().getRegistrationState()\n          .then(registrationState => {\n            switch (registrationState) {\n              case RegistrationState.IN_PROGRESS:\n                this.widget.setRegistrationInProgress();\n                this.state = PricePlaceholderState.REGISTRATION_IN_PROGRESS;\n                break;\n              case RegistrationState.INFORMATION_MISSING:\n                this.widget.setRegistrationInformationMissing();\n                this.state = PricePlaceholderState.REGISTRATION_INFORMATION_MISSING;\n                break;\n              case RegistrationState.FINISHED:\n                this.widget.setRequest();\n                this.state = PricePlaceholderState.ON_REQUEST;\n                break;\n              case eh.RegistrationState.UNKNOWN:\n                this.widget.setLogin();\n                this.state = PricePlaceholderState.NEEDS_LOGIN;\n                break;\n            }\n          })\n          .catch(err => console.error('priceInfo.code 403 -> getRegistrationState', err))\n        ;\n      }\n      else if (priceInfo?.code === '404') {\n        this.widget.setNoPrice();\n        this.widget.setDebugInfo(priceInfo?.code, priceInfo?.msg);\n        this.state = PricePlaceholderState.NO_PRICE;\n      }\n      else {\n        this.widget.setUnavailable();\n        this.widget.setDebugInfo(priceInfo?.code ?? '', priceInfo?.msg ?? '');\n        this.state = PricePlaceholderState.UNAVAILABLE;\n      }\n    }\n  }\n\n\n  enum PricePlaceholderState {\n    INITIAL,\n    UNAVAILABLE,\n    LOADING,\n    NEEDS_LOGIN,\n    ON_REQUEST,\n    SHOWING_PRICE,\n    NO_PRICE,\n    INITIAL_LAZY,\n    REGISTRATION_IN_PROGRESS,\n    REGISTRATION_INFORMATION_MISSING\n  }\n\n\n  enum PriceVisibility {\n    //NOBODY = 'NOBODY',\n    ANONYMOUS = 'ANONYMOUS',\n    LOGGED_IN = 'LOGGED_IN'\n  }\n\n\n  interface PriceWidget {\n    setDebugInfo(code: string, message: string | undefined): void;\n    setLoading(): void;\n    setLogin(): void;\n    setNoPrice(): void;\n    setRequest(): void;\n    setRegistrationInProgress(): void;\n    setRegistrationInformationMissing(): void;\n    setUnavailable(): void;\n  }\n\n\n  class PriceAmountControl implements PriceWidget {\n\n    private $amount: JQuery<HTMLElement>;\n    private price: PriceDisplayWidget;\n\n    private statePrice: boolean;\n    private priceInfo: PriceServiceResponse_Material;\n    private isConfiguredPrice: boolean;\n\n    constructor(private readonly $el: JQuery<HTMLElement>,\n                private readonly materialNumber: string,\n                private readonly config: ProductPricingConfiguration) {\n      const $numericStepper = this.$amount = $('.eh-numeric-stepper', $el);\n      this.$amount = $('.eh-numeric-stepper--input', $numericStepper);\n      $numericStepper.on('change', (_$event: JQuery.TriggeredEvent) => {\n        const info = this.calculatePrice();\n        if (info) {\n          this.triggerEvent(PricePlaceholderState.SHOWING_PRICE, info);\n        }\n      });\n      const $widgetEl = $('.eh-price-widget', $el);\n      this.price = new PriceDisplayWidget($widgetEl);\n    }\n\n    setDebugInfo(code: string, message: string | undefined): void {\n      this.$el.attr('data-pricing-service-code', code);\n      if (message) {\n        this.$el.attr('data-pricing-service-message', message);\n      }\n    }\n\n    setLoading(): void {\n      this.statePrice = false;\n      this.triggerEvent(PricePlaceholderState.LOADING);\n      this.price.setLoading();\n    }\n\n    setLogin(): void {\n      this.statePrice = false;\n      this.triggerEvent(PricePlaceholderState.NEEDS_LOGIN);\n      this.price.setLogin();\n    }\n\n    setNoPrice(): void {\n      this.statePrice = false;\n      this.triggerEvent(PricePlaceholderState.NO_PRICE);\n      this.price.setNoPrice();\n    }\n\n    setPrice(priceInfo: PriceServiceResponse_Material, isConfigured = false): void {\n      this.priceInfo = priceInfo;\n      this.isConfiguredPrice = isConfigured;\n      this.statePrice = true;\n      const info = this.calculatePrice();\n      if(info) {\n        this.triggerEvent(PricePlaceholderState.SHOWING_PRICE, info);\n      }\n    }\n  \n    setRequest(): void {\n      this.statePrice = false;\n      this.triggerEvent(PricePlaceholderState.ON_REQUEST);\n      this.price.setRequest();\n    }\n  \n    setRegistrationInProgress(): void {\n      this.statePrice = false;\n      this.triggerEvent(PricePlaceholderState.REGISTRATION_IN_PROGRESS);\n      this.price.setRegistrationInProgress();\n    }\n\n    setRegistrationInformationMissing(): void {\n      this.statePrice = false;\n      this.triggerEvent(PricePlaceholderState.REGISTRATION_INFORMATION_MISSING);\n      this.price.setRegistrationInformationMissing();\n    }\n\n    setUnavailable(): void {\n      this.statePrice = false;\n      this.triggerEvent(PricePlaceholderState.UNAVAILABLE);\n      this.price.setUnavailable();\n    }\n\n    protected calculatePrice():PriceAmountInfo | null {\n      if (!this.statePrice) {\n        return null;\n      }\n      const amountVal = this.$amount.val();\n      const currentAmount = typeof amountVal === 'string' ? parseInt(amountVal, 10) : 0;\n      if (currentAmount === 0 || isNaN(currentAmount)) {\n        this.setUnavailable();\n        return null;\n      }\n      // COM-3960: every scale the price service delivered counts here. priceScaleMaxLevel only\n      // limits how many scales are *listed*; capping the calculation as well billed the customer\n      // the third scale's unit price even when the amount had reached a cheaper later one.\n      const currentScale = this.priceInfo.scale?.filter(\n        scale => parseInt(scale.fromqty, 10) <= currentAmount)\n        .sort((a, b) =>\n          parseInt(b.fromqty, 10) - parseInt(a.fromqty, 10))[0];\n      const unitPrice = parseFloat(currentScale ? currentScale.p.v : this.priceInfo.price);\n      if (isNaN(unitPrice)) {\n        this.setUnavailable();\n        return null;\n      }\n      const total = Math.round(currentAmount * unitPrice * 100) / 100;\n      const currency = currentScale ? currentScale.p.c : this.priceInfo.currency;\n      const formatted = new Intl.NumberFormat(this.config.priceFormatLocale,\n          { style: 'currency', currency: currency }).format(total);\n      this.price.setPrice(this.isConfiguredPrice ? '' : this.config.fromPricePrefix, formatted);\n      return {\n        variant: this.priceInfo.variant,\n        amount : currentAmount,\n        unitPrice : unitPrice,\n        totalPrice : total,\n        currency : currency,\n        locale : this.config.priceFormatLocale,\n        prefix : this.isConfiguredPrice ? '' : this.config.fromPricePrefix,\n        formatted: formatted\n      };\n    }\n    \n    \n    private triggerEvent(state: PricePlaceholderState, info?:PriceAmountInfo|null) {\n      const event = jQuery.Event(ProductPricing.EventIdProductPriceUpdate) as ProductPriceUpdateEvent;\n      event.state = state;\n      event.materialNumber = this.materialNumber;\n      event.configComplete = this.isConfiguredPrice;\n      if (info) {\n        event.variant = info.variant;\n        event.amount = info.amount;\n        event.pricePrefix = info.prefix;\n        event.locale = info.locale;\n        event.unitPrice = info.unitPrice;\n        event.totalPrice = info.totalPrice;\n        event.currency = info.currency;\n        event.priceFormatted = info.formatted;\n      }\n      $(':root').trigger(event);\n    }\n\n  }\n\n  interface PriceAmountInfo {\n    variant: string;\n    amount: number;\n    unitPrice: number;\n    totalPrice: number;\n    currency: string;\n    locale: string,\n    prefix: string;\n    formatted: string;\n  }\n\n  class PriceDisplayWidget implements PriceWidget {\n\n    private elements: {\n      loadingView: JQuery<HTMLElement>,\n      unavailableView: JQuery<HTMLElement>,\n      loginView: JQuery<HTMLElement>,\n      noPriceView: JQuery<HTMLElement>,\n      priceView: JQuery<HTMLElement>,\n      requestView: JQuery<HTMLElement>,\n      registrationInProgressView: JQuery<HTMLElement>,\n      registrationInformationMissingView: JQuery<HTMLElement>\n    };\n\n    constructor(protected readonly $el: JQuery<HTMLElement>) {\n      this.elements = {\n        loadingView: $('.eh-price-widget--loading-message', $el),\n        unavailableView: $('.eh-price-widget--unavailable-message', $el),\n        loginView: $('.eh-price-widget--login-message', $el),\n        noPriceView: $('.eh-price-widget--no-price', $el),\n        priceView: $('.eh-price-widget--price', $el),\n        requestView: $('.eh-price-widget--request-message', $el),\n        registrationInProgressView: $('.eh-price-widget--registration-in-progress-message', $el),\n        registrationInformationMissingView: $('.eh-price-widget--registration-information-missing-message', $el)\n      };\n    }\n\n    setDebugInfo(code: string, message: string | undefined): void {\n      this.$el.attr('data-pricing-service-code', code);\n      if (message) {\n        this.$el.attr('data-pricing-service-message', message);\n      }\n    }\n\n    public setLoading() {\n      this.hideAll();\n      this.elements.loadingView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setUnavailable() {\n      this.hideAll();\n      this.elements.unavailableView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setLogin() {\n      this.hideAll();\n      this.elements.loginView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setNoPrice() {\n      this.hideAll();\n      this.elements.noPriceView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setPrice(prefix: string, priceFormatted: string) {\n      this.hideAll();\n      $('.eh-price-widget--price-prefix', this.elements.priceView).text(prefix);\n      $('.eh-price-widget--price-formatted', this.elements.priceView).text(priceFormatted);\n      this.elements.priceView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n  \n    public setRequest() {\n      this.hideAll();\n      this.elements.requestView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n  \n    public setRegistrationInProgress() {\n      this.hideAll();\n      this.elements.registrationInProgressView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n  \n    public setRegistrationInformationMissing() {\n      this.hideAll();\n      this.elements.registrationInformationMissingView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    private hideAll() {\n      Object.keys(this.elements).forEach(key => {\n        //@ts-ignore\n        this.elements[key].toggleClass(ProductPricing.CLASS_HIDDEN, true);\n      });\n    }\n\n  }\n\n  class PriceScaleDisplayWidget implements PriceWidget {\n\n    private elements: {\n      loadingView: JQuery<HTMLElement>,\n      unavailableView: JQuery<HTMLElement>,\n      loginView: JQuery<HTMLElement>,\n      noPriceView: JQuery<HTMLElement>,\n      priceView: JQuery<HTMLElement>,\n      requestView: JQuery<HTMLElement>,\n      registrationInProgressView: JQuery<HTMLElement>,\n      registrationInformationMissingView: JQuery<HTMLElement>,\n      priceScaleContainer: JQuery<HTMLElement>,\n      priceScaleEntryTemplate: JQuery<HTMLElement>\n    };\n\n    constructor(protected readonly $el: JQuery<HTMLElement>) {\n      this.elements = {\n        loadingView: $('.eh-price-widget--loading-message', $el),\n        unavailableView: $('.eh-price-widget--unavailable-message', $el),\n        loginView: $('.eh-price-widget--login-message', $el),\n        noPriceView: $('.eh-price-widget--no-price', $el),\n        priceView: $('.eh-price-widget--price', $el),\n        requestView: $('.eh-price-widget--request-message', $el),\n        registrationInProgressView: $('.eh-price-widget--registration-in-progress-message', $el),\n        registrationInformationMissingView: $('.eh-price-widget--registration-information-missing-message', $el),\n        priceScaleContainer: $('.ehts-price-scale-container', $el),\n        priceScaleEntryTemplate: $('.ehts-price-scale-entry', $el)\n      };\n    }\n\n    setDebugInfo(code: string, message: string | undefined): void {\n      this.$el.attr('data-pricing-service-code', code);\n      if (message) {\n        this.$el.attr('data-pricing-service-message', message);\n      }\n    }\n\n    public setLoading() {\n      this.hideAll();\n      this.elements.loadingView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setUnavailable() {\n      this.hideAll();\n      this.elements.unavailableView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setLogin() {\n      this.hideAll();\n      this.elements.loginView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setNoPrice() {\n      this.hideAll();\n      this.elements.noPriceView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    public setPriceScales(dataProvider: PriceScaleInfo[] | null) {\n      this.hideAll();\n      if(dataProvider != null) {\n        this.cleanScaleEntries();\n        dataProvider?.forEach(d => this.insertScaleEntry(d));\n        this.elements.priceView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n      }\n    }\n  \n    public setRequest() {\n      this.hideAll();\n      this.elements.requestView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n  \n    public setRegistrationInProgress() {\n      this.hideAll();\n      this.elements.registrationInProgressView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n  \n    public setRegistrationInformationMissing() {\n      this.hideAll();\n      this.elements.registrationInformationMissingView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n\n    private hideAll() {\n      Object.keys(this.elements).forEach(key => {\n        //@ts-ignore\n        this.elements[key].toggleClass(ProductPricing.CLASS_HIDDEN, true);\n      });\n    }\n    private cleanScaleEntries() {\n      // Remove previously inserted scale rows from the DOM (not just their jQuery\n      // data) so a re-query does not append duplicates and double the values. The\n      // hidden template (.ehts-price-scale-entry) and heading are kept untouched.\n      $('.eh-price-scale-entry', this.elements.priceScaleContainer).remove();\n    }\n    private insertScaleEntry(data: PriceScaleInfo) {\n      // One template per scale container: since COM-4076 the scales are rendered twice (the plain\n      // list below L and the tooltip from L upwards). Cloning the whole template set at once would\n      // append every clone to every container, so fill each template's container on its own.\n      this.elements.priceScaleEntryTemplate.each((_index, template) => {\n        const $template = $(template);\n        const entry = $template.clone();\n        entry.toggleClass('ehts-price-scale-entry eh--hide', false).toggleClass('eh-price-scale-entry', true);\n        entry.selfOrFind('.ehts-price-scale-scale').toggleClass('ehts-price-scale-scale', false).text(data.range);\n        entry.selfOrFind('.ehts-price-scale-price').toggleClass('ehts-price-scale-price', false).text(data.price);\n        $template.parent().append(entry);\n      });\n    }\n  }\n\n  /** Listen for #ProductPriceUpdateEvent and adjust display */\n  class PriceAmountMirrorWidget extends PriceDisplayWidget {\n    public static readonly SELECTOR_MIRROR = \".marker-price-mirror\";\n\n    constructor($el: JQuery<HTMLElement>, private readonly materialNumber:string, private mimicPriceDisplayWidget:boolean) {\n      super($el);\n      $(':root').on(ProductPricing.EventIdProductPriceUpdate, (e) => {\n        this.priceUpdate(e as ProductPriceUpdateEvent);\n      });\n    }\n    \n    public isMimicPriceDisplayWidget() {\n      return this.mimicPriceDisplayWidget;\n    }\n    \n    private priceUpdate(e: ProductPriceUpdateEvent) :void {\n      ProductPricing.logger.debug('priceUpdate', e, this);\n      \n      if (e.materialNumber !== this.materialNumber) {\n        return;\n      }\n      \n      if (e.configComplete) {\n        this.mimicPriceDisplayWidget = false;\n      }\n      \n      if (this.isMimicPriceDisplayWidget()) {\n        // behave as standard pricing widget, unless quickselect was completed or preconfigured\n        return;\n      }\n      \n      switch (e.state) {\n        case PricePlaceholderState.LOADING:\n          this.setLoading();\n          break;\n        case PricePlaceholderState.INITIAL:\n          this.setNoPrice();\n          break;\n        case PricePlaceholderState.UNAVAILABLE:\n          this.setUnavailable();\n          break;\n        case PricePlaceholderState.NEEDS_LOGIN:\n          this.setLogin();\n          break;\n        case PricePlaceholderState.NO_PRICE:\n          this.setNoPrice();\n          break;\n        case PricePlaceholderState.ON_REQUEST:\n          this.setRequest();\n          break;\n        case PricePlaceholderState.REGISTRATION_IN_PROGRESS:\n          this.setRegistrationInProgress();\n          break;\n        case PricePlaceholderState.REGISTRATION_INFORMATION_MISSING:\n          this.setRegistrationInformationMissing();\n          break;\n        case PricePlaceholderState.SHOWING_PRICE:\n          super.setPrice(e.pricePrefix!, e.priceFormatted!);\n          break;\n      }\n    }\n    \n  }\n\n\n  class PriceOptionDisplayWidget implements PriceWidget {\n\n    private elements: {\n      priceView: JQuery<HTMLElement>\n    };\n\n    constructor(private readonly $el: JQuery<HTMLElement>) {\n      this.elements = {\n        priceView: $el.selfOrFind('.eh-price-option-widget--price')\n      };\n    }\n\n    setDebugInfo(code: string, message: string | undefined): void {\n    }\n\n    setLoading(): void {\n    }\n\n    setLogin(): void {\n      this.hideAll();\n    }\n\n    setNoPrice(): void {\n      this.hideAll();\n    }\n\n    setUnavailable(): void {\n      this.hideAll();\n    }\n\n    public setPrice(priceFormatted: string) {\n      this.hideAll();\n      this.elements.priceView.selfOrFind('.eh-price-option-widget--price').text(priceFormatted);\n      this.elements.priceView.toggleClass(ProductPricing.CLASS_HIDDEN, false);\n    }\n  \n    setRequest(): void {\n      this.hideAll();\n    }\n\n    setRegistrationInProgress(): void {\n      this.hideAll();\n    }\n\n    setRegistrationInformationMissing(): void {\n      this.hideAll();\n    }\n\n    private hideAll() {\n      Object.keys(this.elements).forEach(key => {\n        //@ts-ignore\n        this.elements[key].toggleClass(ProductPricing.CLASS_HIDDEN, true);\n      });\n    }\n\n  }\n\n\n  class PricingService {\n\n    private dummyTokenProvider = new Promise<JWToken>((resolve) => resolve(null))\n    private serviceResponseCache: {[key: string]: Promise<PriceServiceResponse>} = Object.create(null);\n\n    constructor(private readonly config: ProductPricingConfiguration, private nebpTokenProvider: () => Promise<JWToken>) {\n    }\n\n    public getConfig(): ProductPricingConfiguration {\n      return this.config;\n    }\n\n    protected buildRequest(materialNumber: string | string[],\n                           token: JWToken, materialOptions?: MaterialOptions,\n                           optionPrices?: boolean\n                          ): JQuery.AjaxSettings<PriceServiceResponse> {\n      const settings: JQuery.AjaxSettings<PriceServiceResponse> = {\n        'dataType': 'json',\n        'timeout': 30_000\n      };\n      const url = this.config.serviceUrl +\n          (token ?\n              (materialOptions ? this.config.endpointPath.getCustNetPrice : (optionPrices ?\n                  this.config.endpointPath.getCustOptionsPrice : this.config.endpointPath.getCustPrice)) :\n              (materialOptions ? this.config.endpointPath.getAnonNetPrice : (optionPrices ?\n                  this.config.endpointPath.getAnonOptionsPrice : this.config.endpointPath.getAnonPrice)));\n      const qp: {[key: string]: string} = {'matnr': Array.isArray(materialNumber) ? materialNumber.join(',') : materialNumber };\n      if (optionPrices) {\n        qp.includeMinprice = 'false';\n      }\n      if (token) {\n        settings.headers = {'jw_token': token};\n      }\n      else {\n        qp.salesorg = this.config.salesOrganization;\n      }\n      if (this.config.siteUrl) {\n        qp.siteURL = this.config.siteUrl;\n      }\n      if (materialOptions) {\n        settings.contentType = 'application/json';\n        settings.data = JSON.stringify(materialOptions);\n        settings.method = 'POST';\n        settings.processData = false;\n      }\n      else {\n        settings.method = 'GET';\n      }\n      settings.url = eh.URLHelper.buildUrl(url, eh.URLHelper.buildQueryString(qp));\n      return settings;\n    }\n\n    public getPrice(materialNumber: string | string[], priceVisibility: PriceVisibility): Promise<PriceServiceResponse> {\n      return (this.config.awaitNebpToken ? this.nebpTokenProvider() : this.dummyTokenProvider)\n        .then(token => {\n          if (priceVisibility === PriceVisibility.LOGGED_IN && !token) {\n            // shortcut if login is required but no token available\n            return Promise.resolve({'artificial': true, 'rsp': {'res': [{'code': '403', 'matnr': materialNumber}]}});\n          }\n          const request = this.buildRequest(materialNumber, token);\n          return $.ajax(request);\n        }, (reason) => {\n          ProductPricing.logger.warn('Failed to get nebp token', reason);\n          return Promise.reject('failed to get nebp token');\n        });\n    }\n\n    public getPriceConfigured(materialNumber: string, priceVisibility: PriceVisibility, materialOptions: MaterialOptions): Promise<PriceServiceResponse> {\n      return (this.config.awaitNebpToken ? this.nebpTokenProvider() : this.dummyTokenProvider)\n        .then(token => {\n          if (priceVisibility === PriceVisibility.LOGGED_IN && !token) {\n            // shortcut if login is required but no token available\n            return Promise.resolve({'artificial': true, 'rsp': {'res': [{'code': '403', 'matnr': materialNumber}]}});\n          }\n          const request = this.buildRequest(materialNumber, token, materialOptions);\n          return $.ajax(request);\n        }, (reason) => {\n          ProductPricing.logger.warn('Failed to get nebp token', reason);\n          return Promise.reject('failed to get nebp token');\n        });\n    }\n\n    public getPriceForOptions(materialNumber: string, priceVisibility: PriceVisibility): Promise<PriceServiceResponse> {\n      if (materialNumber in this.serviceResponseCache) {\n        return this.serviceResponseCache[materialNumber];\n      }\n\n      this.serviceResponseCache[materialNumber] = (this.config.awaitNebpToken ? this.nebpTokenProvider() : this.dummyTokenProvider)\n        .then(token => {\n          if (priceVisibility === PriceVisibility.LOGGED_IN && !token) {\n            // shortcut if login is required but no token available\n            return Promise.resolve({'artificial': true, 'rsp': {'res': [{'code': '403', 'matnr': materialNumber}]}} as PriceServiceResponse);\n          }\n          const request = this.buildRequest(materialNumber, token, undefined, true);\n          return $.ajax(request);\n        }, (reason) => {\n          ProductPricing.logger.warn('Failed to get nebp token', reason);\n          return Promise.reject('failed to get nebp token');\n        });\n\n      return this.serviceResponseCache[materialNumber];\n    }\n\n  }\n\n\n  type ProductPricingConfiguration = {\n    'awaitNebpToken': boolean,\n    'endpointPath': {\n      'getAnonNetPrice': string,\n      'getAnonOptionsPrice': string,\n      'getAnonPrice': string,\n      'getCustNetPrice': string,\n      'getCustOptionsPrice': string,\n      'getCustPrice': string\n\n    },\n    'fromPricePrefix': string,\n    'priceScaleMaxLevel': number,\n    'piecesLabel': string,\n    'priceFormatLocale': string,\n    'salesOrganization': string,\n    'serviceUrl': string,\n    'siteUrl': string | undefined,\n    'unitLabels': {\n      [key: string]: string\n    }\n  };\n\n\n  type MaterialOptions = {\n    o: string[]\n  };\n\n  export type PriceScaleInfo = {\n    range: string,\n    price: string\n  };\n\n  type PriceServiceResponse = {\n    \"msgs\"?: PriceServiceResponse_Message[]\n    \"rsp\"?: {\n      \"res\": Array<PriceServiceResponse_Material | PriceServiceResponse_Options | PriceServiceResponse_Failure> | undefined\n    },\n    \"artificial\"?: boolean\n  };\n\n  type PriceServiceResponse_Base = {\n    \"matnr\": string\n  };\n\n  type PriceServiceResponse_Success = PriceServiceResponse_Base & {\n    \"cdate\": string\n  };\n\n  type PriceServiceResponse_Material = PriceServiceResponse_Success & {\n    \"currency\": string,\n    \"price\": string,\n    \"scale\"?: PriceServiceResponse_Scale[],\n    \"variant\": string\n  };\n\n  type PriceServiceResponse_Options = PriceServiceResponse_Success & {\n    \"options\": PriceServiceResponse_OptionPrice[];\n  };\n\n  type PriceServiceResponse_Failure = PriceServiceResponse_Base & {\n    \"code\": '401' | '403' | '404',\n    \"msg\"?: string\n  };\n\n  type PriceServiceResponse_Scale = {\n    \"fromqty\": string,\n    \"p\": PriceServiceResponse_Price\n  };\n\n  type PriceServiceResponse_Price = {\n    \"c\": string,\n    \"v\": string\n  };\n\n  type PriceServiceResponse_Message = {\n    \"desc\": string,\n    \"product\": string,\n    \"txt\": string,\n    \"type\": string\n  };\n\n  type PriceServiceResponse_OptionPrice_Base = {\n    \"o\": string\n  }\n\n  type PriceServiceResponse_OptionPrice_NoPrice = PriceServiceResponse_OptionPrice_Base & {\n    \"v\": 'null' | undefined\n  }\n\n  type PriceServiceResponse_OptionPrice_Standard = PriceServiceResponse_OptionPrice_Base & {\n    \"v\": string,\n    \"c\": string\n  }\n\n  type PriceServiceResponse_OptionPrice_Dependend = PriceServiceResponse_OptionPrice_Standard & {\n    \"l\": number,\n    \"u\": string\n  }\n\n  type PriceServiceResponse_OptionPrice = PriceServiceResponse_OptionPrice_Standard\n    | PriceServiceResponse_OptionPrice_Dependend | PriceServiceResponse_OptionPrice_NoPrice; \n\n  export interface ProductPriceUpdateEvent extends JQuery.TriggeredEvent<HTMLElement> {\n    state: PricePlaceholderState,\n    materialNumber: string, // fix material number of product\n    variant: string; // configuration variant price is valid for; Represents quickselect state? Only if configComplete!\n    configComplete?: boolean, // variant is completely configured\n    amount?: number, // how many?\n    pricePrefix?:string, // before configComplete mybe 'from'\n    priceFormatted?:string, //\n    unitPrice?: number, // price per unit (at selected amount)\n    totalPrice?: number, // total price for amount of products\n    currency?: string, // prices currency \n    locale?:string, // formatting locale\n  }\n  \n}\n\n","namespace eh {\n\n  /**\n   * Main controller for the QuickSelect component.\n   * Manages the configuration state machine, service requests, and coordinates between the view and data models.\n   */\n  export class QuickSelect {\n    \n    public static readonly SELECTOR = '.eh-quickselect';\n    public static readonly DATA_KEY = 'ehQuickSelect';\n    \n    private static readonly CLASS_DISABLED = 'disabled';\n    private static readonly CLASS_HIDDEN = 'eh--hide';\n    private static readonly CLASS_TOGGLE_IS_OPEN = 'is-open';\n  \n    public static readonly FEATURE_CODING_CHILD_PRODUCT_SELECTION = '000';\n\n    /**\n     * Initializes all QuickSelect components within the given base element.\n     * Sets up event listeners, UI components (numeric steppers, legends), and tracking.\n     * \n     * @param $base The root element to search for QuickSelect components.\n     * @param isSnippetRequest Flag indicating if the request is for a snippet (if true, initialization is skipped).\n     */\n    static init($base: JQuery<HTMLElement>, isSnippetRequest = false): void {\n      if (isSnippetRequest) {\n        return;\n      }\n\n      $(QuickSelect.SELECTOR, $base).each((_index, el) => {\n        const $quickSelectRoot = $(el);\n        if($quickSelectRoot.hasClass(QuickSelectRv.CLASS_QSRV)) {\n          return;\n        }\n        \n        const orderCodeLabels: QSOrderCodeLabel[] = [];// -> informs labels on order-code changes\n        $(QSOrderCodeLabel.CONTAINER_CLASS_NAME, $base).each((_idx: number, el: HTMLElement): void => {\n          orderCodeLabels.push(new QSOrderCodeLabel($(el)));\n        });\n        const $quickSelectHeader = $('.marker-quickselect-header', $quickSelectRoot);\n        $quickSelectRoot.one(QS_EVENTS.INIT, (_$event: JQuery.TriggeredEvent, orderCode: OrderCodeVO) => {\n          orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.update(orderCode));\n          $quickSelectHeader.toggleClass(QuickSelect.CLASS_HIDDEN, false);\n        });\n        \n        const $addToCartButtons = $('.marker-add-to-cart', $quickSelectRoot).add('.marker-add-to-cart.marker-quickselect-mirror');\n        const amountSettingsConfig: EhNumericStepperOptions = {\n          min: 1,\n          max: 99,\n          onChange: (event: JQuery.TriggeredEvent | null, value: string) => {\n            $addToCartButtons.attr('data-nebp-add2cart-amount', value);\n          }\n        };\n        $('.eh-numeric-stepper', $quickSelectRoot)\n            .ehNumericStepper(amountSettingsConfig)\n            .ehNumericStepper('toggleDisabled', $addToCartButtons.hasClass(QuickSelect.CLASS_DISABLED));\n  \n        const $orderCodeLegendBackButton = $('.eh-quickselector--product-result-details-back-button', $quickSelectRoot);\n        const $orderCodeLegendToggleButton = $('.eh-quickselector--toggle-button .eh-link', $quickSelectRoot);\n        const $orderCodeLegendToggleRow = $('.eh-quickselector--toggle-row', $quickSelectRoot);\n        const $orderCodeResults: JQuery<HTMLElement> = $('.eh-quickselector--product-result-details-data', $quickSelectRoot);\n        $orderCodeLegendToggleButton.add($orderCodeLegendToggleRow).add($orderCodeLegendBackButton)\n          .on( 'click', ($event) => {\n            $event.preventDefault();\n            $orderCodeLegendToggleButton.toggleClass(QuickSelect.CLASS_TOGGLE_IS_OPEN);\n            $orderCodeResults.toggleClass(QuickSelect.CLASS_TOGGLE_IS_OPEN);\n            const isOpen: boolean = $orderCodeResults.hasClass(QuickSelect.CLASS_TOGGLE_IS_OPEN);\n            eh.ScrollPage.setScrollEnabled(!isOpen);\n            $(':root').trigger(STICKY_EVENTS.DOM_MUTATION);\n          });\n        \n        const $configureButtonsGlobal = $('.marker-configure-action', $quickSelectRoot).add('.marker-configure-action.marker-quickselect-mirror');\n        const $configureLinkGlobal = $('.marker-configure-link-global', $quickSelectRoot);\n        const $extOrderCodeReceiver = $('.marker-quickselect-ordercode-mirror');\n        QSViewModel.copyAttributes($configureButtonsGlobal, $configureLinkGlobal,\n            ['class', 'href', 'data-cs-tracking-goals', 'data-cs-tracking-ps-name',\n              'data-cs-tracking-subtype', 'data-cs-tracking-title']);\n        QSViewModel.notifyReplaced($configureLinkGlobal.parent());\n        \n        const predefinedOrderCode = $quickSelectRoot.data('quickSelectPredefinedOrderCode');\n        if (predefinedOrderCode) {\n          window.setTimeout(() => {\n            eh.Tracking.injectTrackingEvent({\n              'event_configuration_step': 'fully configured',\n              'event_linkname': 'product is fully configured',\n              'event_order_code': predefinedOrderCode,\n              'event_subtype': 'quick_select_fully_configured_generated'\n            }, $quickSelectRoot, 'content_link');\n          }, 0);\n  \n          $quickSelectRoot.data('quickSelectTrackingInfo', {\n            'fullyConfigured': true,\n            'orderCode': predefinedOrderCode\n          });\n        }\n        \n        const config: QuickSelectConfiguration = $quickSelectRoot.data('quickSelectConfig');\n        if (!config || Object.keys(config).length === 0) {\n          QuickSelect.markAsDisabled($quickSelectRoot);\n          return;\n        }\n        \n        const qs = new QuickSelect($quickSelectRoot, config);\n        $quickSelectRoot.data(QuickSelect.DATA_KEY, qs);\n        \n        const $additionalOptionsRow = $('.marker-additional-options', $quickSelectRoot);\n\n        $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_CHANGE, (_$event: JQuery.TriggeredEvent, orderCodeVO: OrderCodeVO) => {\n          orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.update(orderCodeVO));\n          qs.updateTrackingInfo();\n          \n          if (orderCodeVO.pattern) {\n            const orderCodeExternalized = QuickSelect.prepareOrderCodeForExternals(orderCodeVO.pattern);\n            $('.eh-quickselector--selection-option-description-details a', $quickSelectRoot)\n              .add($configureButtonsGlobal).add($configureLinkGlobal).add($addToCartButtons).add($extOrderCodeReceiver)\n              .attr('data-nebp-product-ordercode', orderCodeExternalized)\n              .attr('data-nebp-product-root', orderCodeVO.orderCode.productRoot)\n              .attr('data-nebp-product-matnr', qs.getSelectedChildProduct()?.materialNumber ?? qs.config.productMaterialNumber)\n            ;\n          }\n          $additionalOptionsRow.toggleClass(QuickSelect.CLASS_HIDDEN, true);\n          $addToCartButtons.attr('data-nebp-activate-config-complete-check', 'false');\n        });\n\n        $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_HIGHLIGHT, (_$event: JQuery.TriggeredEvent, idx: number) =>\n          orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.highlightSegment(idx)));\n\n        const $orderCodeLegendButtonGroup = $('.eh-quickselector--product-result-details-slot-2', $quickSelectRoot);\n        const closeOrderCodeLegend: (e: JQuery.TriggeredEvent, s: {segment: ScrollerSegment}) => void = (e: JQuery.TriggeredEvent, s: {segment: ScrollerSegment}): void => {\n\n          // viewConfigurationFlag is a workaround to fullfill special site structure requirements.\n          // the current scenario matches only when moving through upper-elements-threshold.\n          // the task is: prevent closing when scrolling down the site beneath the OrderCodeLegend-View.\n          const viewConfigurationFlag: boolean = s.segment.idx === -1;\n\n          if (viewConfigurationFlag && $orderCodeResults.hasClass(QuickSelect.CLASS_TOGGLE_IS_OPEN)) {\n            $orderCodeLegendToggleButton.toggleClass(QuickSelect.CLASS_TOGGLE_IS_OPEN);\n            $orderCodeResults.toggleClass(QuickSelect.CLASS_TOGGLE_IS_OPEN);\n            eh.ScrollPage.setScrollEnabled(true);\n            $(':root').trigger(STICKY_EVENTS.DOM_MUTATION);\n          }\n        };\n\n        const browser = window.browserDetect();\n        const isMobileSafari = browser.name === 'safari' && browser.mobile;\n        // view resize events trigger initialization of stickies.\n        // when the stickies initialize we discard the order-code-legend\n        // because of its view dependant layout ordering and parent-child-relationship.\n        // but if the user is surfing on his iphone its not needed to\n        // throw the legend away because of the iphones small screen size\n        // and the layout structure.\n        // @TODO: refactor the layout - split the parts to prevent layout glitches in stickies\n        if (!isMobileSafari) {\n          $(':root').on(STICKY_EVENTS.STICKY_CHANGE, closeOrderCodeLegend);\n        }\n\n        $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_LEGEND_CHANGE, (_$event: JQuery.TriggeredEvent,\n                                                                 data: {legend: IProductSegment[]}) => {\n          qs.orderCodeLegend.update(data.legend);\n          if (data.legend.length === 0) {\n            $orderCodeLegendButtonGroup.toggleClass(QuickSelect.CLASS_HIDDEN, true);\n            $orderCodeLegendBackButton.toggleClass(QuickSelect.CLASS_HIDDEN, true);\n            $orderCodeLegendToggleButton.toggleClass(QuickSelect.CLASS_TOGGLE_IS_OPEN, false);\n            $orderCodeResults.toggleClass(QuickSelect.CLASS_TOGGLE_IS_OPEN, false);\n          }\n          else {\n            $orderCodeLegendButtonGroup.toggleClass(QuickSelect.CLASS_HIDDEN, false);\n            $orderCodeLegendBackButton.toggleClass(QuickSelect.CLASS_HIDDEN, false);\n          }\n        });\n        \n        $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_COMPLETE, () => {\n          orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.highlightSegment(-1));\n          qs.updateTrackingInfo();\n          \n          const orderCode = qs.getCurrentStep()?.orderCode;\n          if (orderCode?.pattern) {\n            const orderCodeExternalized = QuickSelect.prepareOrderCodeForExternals(orderCode.pattern);\n            $('.eh-quickselector--selection-option-description-details a', $quickSelectRoot)\n                .add($configureButtonsGlobal).add($configureLinkGlobal).add($addToCartButtons)\n                .attr('data-nebp-product-ordercode', orderCodeExternalized)\n                .attr('data-nebp-product-root', orderCode.productRoot)\n                .attr('data-nebp-product-matnr', qs.getSelectedChildProduct()?.materialNumber ?? qs.config.productMaterialNumber)\n            ;\n          }\n          $additionalOptionsRow.toggleClass(QuickSelect.CLASS_HIDDEN, false);\n          $addToCartButtons.attr('data-nebp-activate-config-complete-check', 'true');\n        });\n\n      });\n\n    }\n    \n    /**\n     * Marks the given element as disabled by adding a specific CSS class.\n     * @param $elem The jQuery element to disable.\n     */\n    static markAsDisabled($elem: JQuery<HTMLElement>): void {\n      $elem.toggleClass('eh-quickselect-disabled', true);\n    }\n\n    /**\n     * Checks if the given element is marked as disabled.\n     * @param $elem The jQuery element to check.\n     * @returns True if disabled, false otherwise.\n     */\n    static isDisabled($elem: JQuery<HTMLElement>): boolean {\n      return $elem.hasClass('eh-quickselect-disabled');\n    }\n    \n    public view: QSViewModel;\n    \n    private initialized = false;\n    private readonly quickSelectService: QuickSelectService;\n    private state: State;\n    private readonly steps: Step[] = [];\n  \n    public readonly orderCodeLegend: QSOrderCodeLegend;\n    public readonly priceScaleLegend: QSPriceScaleLegend;\n    \n    constructor(public readonly $elem: JQuery<HTMLElement>,\n                public readonly config: QuickSelectConfiguration) {\n      this.quickSelectService = new QuickSelectService(config.serviceUrl)\n          .withStaticHeader('X-Api-Key', config.apiKey)\n          .withStaticQueryParam('vkorg', config.salesOrganization)\n          .withStaticQueryParam('language', config.language)\n      ;\n      this.view = new QSViewModel(this, this.$elem);\n      this.orderCodeLegend = new QSOrderCodeLegend($(QSOrderCodeLegend.CONTAINER_CLASS_NAME, this.$elem));\n      this.priceScaleLegend = new QSPriceScaleLegend($(QSPriceScaleLegend.CONTAINER_CLASS_NAME, this.$elem));\n      \n      if (config.childProducts.length > 0) {\n        const orderCodeCheck = new OrderCodeCheckState(this, this.$elem, this.quickSelectService,\n            config.productRoot, config.childProducts);\n        this.changeState(orderCodeCheck);\n        orderCodeCheck.observeLoading(orderCodeCheck.check());\n      }\n      else {\n        this.changeState(new InitialState(this, this.$elem, this.quickSelectService, config.productRoot, config.childProducts));\n      }\n      \n      this.updateTrackingInfo();\n    }\n\n    /**\n     * Changes the current state of the configuration state machine.\n     * @param newState The new state to transition to.\n     */\n    public changeState(newState: State): void {\n      this.state = newState;\n    }\n    \n    /**\n     * Returns the current configuration step.\n     * @returns The latest step or undefined if no steps have been taken.\n     */\n    public getCurrentStep(): Step | undefined {\n      return this.steps[this.steps.length - 1];\n    }\n    \n    /**\n     * Gets the 1-based index of a step identified by its feature coding.\n     * @param featureCoding The feature coding to look for.\n     * @returns The 1-based index, or 0 if not found.\n     */\n    public getStepIndex1(featureCoding?: string): number {\n      let idx = -1;\n      this.steps.some((v, i) => {\n        if (v.featureCoding === featureCoding) {\n          idx = i;\n          return true;\n        }\n        return false;\n      });\n      return idx + 1;\n    }\n    \n    /**\n     * Stores a new configuration step in the history.\n     * @param step The step to store.\n     */\n    public storeStep(step: Step): void {\n      let idx = -1;\n      this.steps.some((v, i) => {\n        if (v.featureCoding === step.featureCoding) {\n          idx = i;\n          return true;\n        }\n        return false;\n      });\n      this.steps.push(step);\n    }\n  \n    /**\n     * Rollback the already made steps up to the one with the given featureCoding, \n     * then \"finish\" that again with the given option value.\n     * Used for re-configuring a previously completed step.\n     * \n     * @param featureCoding The feature coding of the step to rewind to.\n     * @param coding The new value for the feature.\n     */\n    public rewindSteps(featureCoding: string, coding: string) {\n      let idx = -1;\n      this.steps.some((v, i) => {\n        if (v.featureCoding === featureCoding) {\n          idx = i;\n          return true;\n        }\n        return false;\n      });\n      if (idx === -1 || idx >= this.steps.length) {\n        return;\n      }\n      this.steps.splice(idx + 1);\n      this.getCurrentStep()?.finish(coding);\n    }\n    \n    public getSelectedChildProduct(): ChildProduct | undefined {\n      return this.steps?.[0]?.childProduct;\n    }\n    \n    public setDisabled(): void {\n      QuickSelect.markAsDisabled(this.$elem);\n    }\n\n    public isDisabled(): boolean {\n      return QuickSelect.isDisabled(this.$elem);\n    }\n    \n    public setInitialized(): void {\n      this.initialized = true;\n    }\n  \n    public isInitialized(): boolean {\n      return this.initialized;\n    }\n    \n    updateTrackingInfo() {\n      const info = this.createTrackingInfo();\n      if (info.orderCode) {\n        this.$elem.data('quickSelectTrackingInfo', info);\n      }\n    }\n    \n    createTrackingInfo(): QuickSelectTrackingInfo {\n      const step = this.getCurrentStep();\n      const ocs = step?.orderCodeString;\n      return {\n        orderCode: ocs ? QuickSelect.prepareOrderCodeForExternals(ocs) : undefined,\n        fullyConfigured: step?.orderCode?.getOpenPositions() === 0,\n        currentStepIndex: this.getStepIndex1(step?.featureCoding),\n        currentStepFeature: step?.featureCoding\n      };\n    }\n    \n    public getSelectedOptions(): string[] {\n      const selectedOptions = this.steps.map((step) => {\n        return step.serializeOptions();\n      }).reduce((accumulated, val) => accumulated.concat(val), []);\n      selectedOptions.sort();\n      return selectedOptions;\n    }\n    \n    public static prepareOrderCodeForExternals(orderCodeString: string): string {\n      const pos = orderCodeString.indexOf('-');\n      return orderCodeString.substring(0, pos + 1) +  orderCodeString.substring(pos + 1)\n          .replace(/-/g, '');\n    }\n    \n    public static injectURLParam(url: string, paramName: string, paramValue: string): string {\n      const params = eh.URLHelper.buildQueryParamMap(eh.URLHelper.getQueryString(url));\n      params[paramName] = paramValue;\n      return eh.URLHelper.buildUrl(url, eh.URLHelper.buildQueryString(params));\n    }\n    \n    public static serialize(productRoot: string, featureCoding: string, optionCoding: string) {\n      return [productRoot, QuickSelect.ensureCodingWidth(featureCoding), optionCoding].join('_');\n    }\n    \n    public static ensureCodingWidth(coding: string) {\n      // feature coding is always 3 characters long, left padded with zeroes\n      return ('000' + coding).slice(-3);\n    }\n    \n  }\n\n/**\n * Abstract base class for all states in the QuickSelect state machine.\n * States handle transitions and business logic for each configuration step.\n */\nexport abstract class State {\n\n  protected _orderCode: OrderCode;\n\n  /**\n   * Gets the current order code associated with this state.\n   */\n  public get orderCode(): OrderCode {\n    return this._orderCode;\n  }\n\n  static ID_ITERATOR: number = 1;\n  public id: number;\n\n  protected constructor(protected stateManager: eh.QuickSelect) {\n    this.id = ++State.ID_ITERATOR;\n  }\n\n}\n  \n/**\n * Base class for states that perform asynchronous loading (e.g., fetching next configuration options).\n */\nexport class LoaderState extends State {\n\n  protected _templateData: IProductSegment;\n\n  private _isLoading: boolean = false;\n  private _loadingListener: () => void;\n  private _latestRequest: JQuery.jqXHR;\n\n  constructor(protected stateManager: eh.QuickSelect) {\n    super(stateManager);\n  }\n\n  /**\n   * Watches a jQuery AJAX request and manages loading state.\n   * Updates the view model's current loader and notifies listeners on completion.\n   * \n   * @param request The request to observe.\n   */\n  public observeLoading(request: JQuery.jqXHR): void {\n    this._isLoading = true;\n    this._latestRequest = request;\n    this.stateManager.view.currentLoader = this;\n\n    const finallyHelper = (): void => {\n      if (this.isCurrentLoader(request)()) {\n        this._isLoading = false;\n        if (this._loadingListener) {\n          this._loadingListener();\n        }\n      }\n    };\n    request\n      .then(finallyHelper)\n      .catch(finallyHelper);\n  }\n\n  public get templateData(): IProductSegment {\n    return this._templateData;\n  }\n\n  public get isLoading(): boolean {\n    return this._isLoading;\n  }\n\n  /**\n   * Registers a listener to be notified when loading is complete.\n   * @param l The callback function.\n   */\n  registerLoadingListener(l: () => void): void {\n    this._loadingListener = l;\n  }\n\n  /**\n   * Helper to wrap a response handler with a guard condition.\n   * Ensures the handler only runs if the state is still relevant.\n   */\n  protected onResponse = (\n    fn: any,\n    guard: (...args: any[]) => boolean = (): boolean => { return true }\n  ) => {\n    return (...args: any[]): any => {\n      if (guard()) {\n        fn.apply(null, args);\n      }\n    }\n  };\n\n  /**\n   * Returns a function that checks if this state is still the active loader for a specific request.\n   * Prevents race conditions from outdated requests.\n   */\n  public isCurrentLoader = (request: JQuery.jqXHR): () => boolean => {\n    return (): boolean => {\n      const sameLoader: boolean = this.stateManager.view.currentLoader === this;\n      const isLatestRequest: boolean = request === this._latestRequest;\n      return sameLoader && isLatestRequest\n    };\n  };\n\n  /**\n   * Triggers a selection that is observed for loading status.\n   */\n  public observedSelect = (options: IProductSegment): void => {\n    const opt: string = options.root || options.coding || '';\n    this.observeLoading(this.select(opt));\n  };\n\n  /**\n   * Performs the selection request. Should be overridden by subclasses.\n   * @param option The selected option coding.\n   */\n  public select(option: string): JQuery.jqXHR {\n    throw new Error('invalid call to abstract member');\n  }\n\n}\n\nclass InitialState extends LoaderState {\n\n  constructor(protected stateManager: eh.QuickSelect, protected $elem: JQuery<HTMLElement>,\n              private service: QuickSelectService, productRoot: string, private childProducts: ChildProduct[]) {\n    super(stateManager);\n  \n    this._orderCode = OrderCode.createFromRoot(productRoot, this.childProducts.length > 0);\n    const isLastLayer = this._orderCode.getOpenPositions() === 1;\n    this._templateData = {\n      coding: undefined,\n      root: productRoot,\n      index: 0,\n      label: this.stateManager.config.labelProductPreselection,\n      feature: 'UNUSED',\n      featureCoding: QuickSelect.FEATURE_CODING_CHILD_PRODUCT_SELECTION,\n      orderCode: this._orderCode,\n      isLastLayer: isLastLayer,\n      options: (childProducts.map(c => {\n        return {\n          coding: c.coding,\n          root: c.root,\n          label: c.label,\n          feature: 'UNUSED',\n          featureCoding: 'UNUSED',\n          index: 0,\n          materialNumber: c.materialNumber,\n          options: undefined,\n          isLastLayer: isLastLayer\n        };\n      }) as IProductSegment[])\n    };\n\n    if (this.childProducts.length > 0) {\n      this.stateManager.storeStep(new Step(this._orderCode, this.id, null));\n      this.stateManager.view.setSelection(this, 0);\n    }\n    else {\n      const EMPTY_OPTIONS: IProductSegment  = {\n        coding: '',\n        feature: '',\n        featureCoding: '',\n        index: 0,\n        isLastLayer: false,\n        label: '',\n        root: ''\n      };\n      this.observedSelect(EMPTY_OPTIONS);\n    }\n  }\n\n  public select(option: string): JQuery.jqXHR {\n    if (option) {\n      const currentStep = this.stateManager.getCurrentStep();\n      if (currentStep) {\n        currentStep.selectChildProduct(this.childProducts.filter(p => p.root === option)[0]);\n        currentStep.finish(option);\n      }\n    }\n    const request: JQuery.jqXHR = this.service.call({'ordercode': this._orderCode.fillPosition(option)});\n    const successHandler = (result: QuickSelectResponse, _textStatus: string, response: JQuery.jqXHR) => {\n      if (response.status === 204) {\n        this.stateManager.changeState(new NoopState(this.stateManager));\n        this.stateManager.setDisabled();\n      }\n      else if (result['recommendation'] && result['recommendation'].length === 1) {\n        this.stateManager.changeState(new RecommendationState(this.stateManager, this.$elem, this.service, result));\n      } else if (result['product-feature']) {\n        this.stateManager.changeState(new SelectionState(this.stateManager, this.$elem, this.service, result, 1));\n      } else {\n        this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n        this.stateManager.setDisabled();\n      }\n    };\n    const failHandler = (_response: JQuery.jqXHR) => {\n      //console.log('webservice failed', _response);\n      if (this.childProducts.length > 0) {\n        this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n      }\n      else {\n        // hide error if it happens on the very first request\n        this.stateManager.setDisabled();\n      }\n    };\n    request.then(\n      this.onResponse(successHandler, this.isCurrentLoader(request)),\n      this.onResponse(failHandler, this.isCurrentLoader(request))\n    );\n    return request;\n  }\n}\n\nclass OrderCodeCheckState extends LoaderState {\n\n  constructor(protected stateManager: eh.QuickSelect, protected $elem: JQuery<HTMLElement>,\n              private service: QuickSelectService, private productRoot: string, private childProducts: ChildProduct[]) {\n    super(stateManager);\n  }\n  \n  public check(): JQuery.jqXHR {\n    const request: JQuery.jqXHR = this.service.callOrderCodeCheck(\n        {'ordercodecheck': this.childProducts.map(c => c.root).join(',')});\n    const successHandler = (result: QuickSelectResponse_AvailableOrderCodes, _textStatus: string, response: JQuery.jqXHR) => {\n      //console.log('webservice returned result', result);\n      if (response.status === 200) {\n        this.stateManager.changeState(new InitialState(this.stateManager, this.$elem, this.service, this.productRoot,\n            this.childProducts.filter(c => result['available-order-codes'].indexOf(c.root ?? '') !== -1)));\n      } else {\n        this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n      }\n    };\n    const failHandler = (_response: JQuery.jqXHR) => {\n      //console.log('webservice failed', _response);\n      // hide error, it's the very first request\n      this.stateManager.setDisabled();\n    };\n    request.then(\n        this.onResponse(successHandler, this.isCurrentLoader(request)),\n        this.onResponse(failHandler, this.isCurrentLoader(request))\n    );\n    return request;\n  }\n  \n}\n\nclass SelectionState extends LoaderState {\n\n  private length: number;\n  private kept: number;\n  \n  constructor(protected stateManager: eh.QuickSelect, protected $elem: JQuery<HTMLElement>,\n              private service: QuickSelectService, protected result: QuickSelectResponse, public index: number) {\n    super(stateManager);\n\n    if (!result['product-feature']) {\n      throw new Error('product-feature');\n    }\n    const productFeature: QuickSelectResponse_ProductFeature = result['product-feature'];\n    this._orderCode = OrderCode.createPartly(productFeature['order-code'], stateManager.config.productRoot);\n    this.length = result.length;\n    this.kept = result.kept;\n    const step = new Step(this._orderCode, this.id, this.result);\n    this.stateManager.storeStep(step);\n    \n    const isLastLayer = this._orderCode.getOpenPositions() === 1;\n    this._templateData = {\n      ...productFeature,\n      index: this.index,\n      feature: 'UNUSED',\n      featureCoding: QuickSelect.ensureCodingWidth(productFeature.coding),\n      orderCode: this._orderCode,\n      isLastLayer: isLastLayer,\n      options: productFeature.options\n          .filter(option => !option.exit)\n          .map((option, index) => {\n        return {\n          coding: option.coding,\n          label: option.label,\n          feature: 'UNUSED',\n          featureCoding: 'UNUSED',\n          isLastLayer: isLastLayer,\n          index: index,\n          option: QuickSelect.serialize(this._orderCode.productRoot, productFeature.coding, option.coding)\n        };\n      })\n    };\n    this.stateManager.view.setSelection(this, this.index);\n\n  }\n  \n  public select(option: string): JQuery.jqXHR {\n    this.stateManager.getCurrentStep()?.finish(option);\n    const orderCode = OrderCode.createFromOrderCode(this._orderCode, option);\n    const orderCodeString = orderCode.pattern;\n    if (orderCode.getOpenPositions() === 1) { // this is the last step, we (should) already have the\n      // appropriate recommendation\n      const selectedRecommendation = this.result.recommendation?.filter(r => r['order-code'].pattern === orderCodeString);\n      if (selectedRecommendation?.length === 1) {\n        const artificialResult = $.extend(true, {}, this.result);\n        artificialResult.recommendation = [selectedRecommendation[0]];\n        this.stateManager.changeState(new RecommendationState(this.stateManager, this.$elem, this.service, artificialResult));\n        return ($.Deferred().resolve() as unknown) as JQuery.jqXHR;\n      }\n    }\n    const request = this.service.call({'ordercode': orderCodeString,\n      'length': this.length.toString(), 'kept': this.kept.toString()});\n    this.observeLoading(request);\n    const successHandler = (result: QuickSelectResponse, _textStatus: string, response: JQuery.jqXHR) => {\n      if (response.status === 204) {\n        this.stateManager.changeState(new NoopState(this.stateManager));\n      }\n      else if (result['recommendation'] && result['recommendation'].length === 1) {\n        this.stateManager.changeState(new RecommendationState(this.stateManager, this.$elem, this.service, result));\n      }\n      else if (result['product-feature']) {\n        this.stateManager.changeState(new SelectionState(this.stateManager, this.$elem, this.service, result, this.index + 1));\n      }\n      else {\n        this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n      }\n    };\n    const failHandler: (response: JQuery.jqXHR) => void = (_response: JQuery.jqXHR) => {\n      //console.log('webservice failed', _response);\n      this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n    };\n\n    request.then(\n      this.onResponse(successHandler, this.isCurrentLoader(request)),\n      this.onResponse(failHandler, this.isCurrentLoader(request))\n    );\n\n    return request;\n  }\n  \n}\n\nclass RecommendationState extends State {\n  \n  constructor(protected stateManager: eh.QuickSelect, protected $elem: JQuery<HTMLElement>,\n              _service: QuickSelectService, protected result: QuickSelectResponse) {\n    super(stateManager);\n    if (!result['recommendation']) {\n      throw new Error('recommendation');\n    }\n    const recommendation = result['recommendation'][0];\n    const productData: QuickSelectResponse_ProductFeature[] = recommendation['product-features'];\n    this._orderCode = OrderCode.create(recommendation['order-code'], stateManager.config.productRoot);\n    let inc: number = (this.stateManager.getCurrentStep() as Step).id;\n    const step = new Step(this._orderCode, this.id, this.result);\n    this.stateManager.storeStep(step);\n    \n    const normalizedTemplateData: IProductSegment[] = productData.map(productFeature => {\n      const orderCode = OrderCode.createPartly(productFeature['order-code'], this.stateManager.config.productRoot);\n      return {\n        index: ++inc,\n        feature: productFeature.label,\n        featureCoding: QuickSelect.ensureCodingWidth(productFeature.coding),\n        label: productFeature.options[0].label,\n        coding: productFeature.options[0].coding,\n        orderCode: orderCode,\n        isLastLayer: orderCode.getOpenPositions() === 1,\n        root: '',\n        options: [],\n        option: QuickSelect.serialize(orderCode.productRoot, productFeature.coding, productFeature.options[0].coding)\n      };\n    });\n    stateManager.view.setRecommendations(this, normalizedTemplateData);\n  }\n  \n}\n\nclass ErrorState extends State {\n  \n  constructor(protected stateManager: eh.QuickSelect, private $elem: JQuery<HTMLElement>, msg: string) {\n    super(stateManager);\n    this.stateManager.view.setError(this, {message: msg});\n  }\n  \n}\n\nclass NoopState extends State {\n  \n  constructor(protected stateManager: eh.QuickSelect) {\n    super(stateManager);\n  }\n  \n}\n  \n  /**\n   * Represents a single configuration step.\n   * Stores information about the selected feature, options, and the resulting order code.\n   * \n   * Common flow:\n   * 1) Step is loaded with feature coding and available options from service result.\n   * 2) Step is finished by selecting an option.\n   */\nexport class Step {\n  \n  private selectedOption: string | undefined;\n  public readonly featureCoding: string;\n  private _childProduct?: ChildProduct;\n  \n  /**\n   * @param _orderCode The order code before this step.\n   * @param id Unique step ID.\n   * @param serviceResult The API response for this step.\n   */\n  constructor(\n    private readonly _orderCode: OrderCode,\n    public readonly id: number,\n    private readonly serviceResult: QuickSelectResponse | null\n  ) {\n    this.featureCoding = serviceResult?.['product-feature']?.coding ?? QuickSelect.FEATURE_CODING_CHILD_PRODUCT_SELECTION;\n  }\n  \n  /**\n   * Gets the base order code for this step.\n   */\n  public get orderCode(): OrderCode {\n    return this._orderCode;\n  }\n  \n  /**\n   * Gets the order code string, including the selected option if available.\n   */\n  public get orderCodeString(): string {\n    return this.selectedOption ? this._orderCode.fillPosition(this.selectedOption) : this._orderCode.pattern;\n  }\n  \n  /**\n   * Associates a child product with this step.\n   */\n  public selectChildProduct(childProduct: ChildProduct | undefined) {\n    this._childProduct = childProduct;\n  }\n  \n  /**\n   * Gets the associated child product.\n   */\n  public get childProduct(): ChildProduct | undefined {\n    return this._childProduct;\n  }\n  \n  /**\n   * Marks this step as finished with the given option coding.\n   */\n  public finish(selectedOption: string): void {\n    this.selectedOption = selectedOption;\n  }\n  \n  /**\n   * Serializes the selection into feature=option format.\n   */\n  public serializeOptions(): string[] {\n    if (this.serviceResult?.recommendation?.length === 1) {\n      // exactly one recommendation means final step and might contain multiple options\n      return this.serviceResult.recommendation[0]['product-features'].filter(pf => pf.options?.[0].coding)\n        .map(pf => QuickSelect.serialize(this._orderCode.productRoot, pf.coding, pf.options?.[0].coding));\n    }\n    return this.featureCoding === QuickSelect.FEATURE_CODING_CHILD_PRODUCT_SELECTION || !this.selectedOption ? []\n        : [QuickSelect.serialize(this._orderCode.productRoot, this.featureCoding, this.selectedOption)];\n  }\n}\n\n\n/**\n * Manages the product's order code pattern.\n * Pattern example: PRODUCTROOT-*-*-*-*\n * Options represented by *, separated by -\n * Position is one-based, family product info on pos 0 before first separator.\n */\nexport class OrderCode {\n  \n  private static SEPARATOR = '-';\n  private readonly _productRoot: string;\n  private _productRootIncludingChild: string | undefined;\n  private _segmentValue: string | undefined;\n  \n  private constructor(\n    private readonly sourcePattern: string,\n    private readonly _currentSegmentIndex: number | undefined = undefined\n  ) {\n    const separatorIndex = this.sourcePattern.indexOf(OrderCode.SEPARATOR);\n    this._productRoot = separatorIndex === -1 ? this.sourcePattern : this.sourcePattern.substring(0, separatorIndex);\n  }\n  \n  /**\n   * Creates an initial OrderCode from a product root.\n   */\n  public static createFromRoot(productRoot: string, productHasChildren: boolean): OrderCode {\n    return new OrderCode(productRoot, productHasChildren ? 0 : undefined);\n  }\n  \n  /**\n   * Creates an OrderCode from a full pattern.\n   */\n  public static create(o: QuickSelectResponse_OrderCode, productRoot: string): OrderCode {\n    return new OrderCode(o.pattern);\n  }\n  \n  /**\n   * Creates an OrderCode for a specific position in the pattern.\n   */\n  public static createPartly(o: QuickSelectResponse_OrderCodePartly, productRoot: string): OrderCode {\n    return new OrderCode(o.pattern, o.position);\n  }\n  \n  /**\n   * Creates a new OrderCode by filling a position in an existing one.\n   */\n  public static createFromOrderCode(o: OrderCode, value: string) {\n   return new OrderCode(o.fillPosition(value));\n  }\n  \n  /**\n   * Gets the full pattern string.\n   */\n  get pattern(): string {\n    return this._segmentValue ? this.fillPosition(this._segmentValue) : this.sourcePattern;\n  }\n  \n  /**\n   * Gets the index of the segment currently being configured.\n   */\n  get currentSegmentIndex(): number | undefined {\n    return this._currentSegmentIndex;\n  }\n  \n  /**\n   * Gets the product root.\n   */\n  get productRoot(): string {\n    return this._productRootIncludingChild ?? this._productRoot;\n  }\n  \n  /**\n   * Gets the suffix added to the product root.\n   */\n  get productRootChildSuffix(): string | undefined {\n    return this._productRootIncludingChild ? this._productRootIncludingChild.substring(this._productRoot.length) : undefined;\n  }\n  \n  /**\n   * Checks if this represents a family product.\n   */\n  public isFamilyProduct() {\n    return this.sourcePattern.indexOf(OrderCode.SEPARATOR) === -1;\n  }\n  \n  /**\n   * Returns a new pattern string with the current position filled.\n   */\n  public fillPosition(value: string): string {\n    if (this._currentSegmentIndex === undefined) {\n      return this.sourcePattern;\n    }\n    if (this._currentSegmentIndex === 0) {\n      this._productRootIncludingChild = value;\n      return value;\n    }\n    this._segmentValue = value;\n    const parts = this.sourcePattern.split(OrderCode.SEPARATOR);\n    parts[this._currentSegmentIndex] = this._segmentValue;\n    return parts.join(OrderCode.SEPARATOR);\n  }\n  \n  /**\n   * Gets the number of unconfigured positions.\n   */\n  public getOpenPositions(): number {\n    return this.sourcePattern.indexOf(OrderCode.SEPARATOR) === -1 ? -1 : this.sourcePattern.match(/\\*/g)?.length ?? 0;\n  }\n  \n}\n\n/**\n * Service client for interacting with the QuickSelect backend API.\n */\nclass QuickSelectService {\n  \n  private staticHeaders: {[headerName: string]: string} = {};\n  private staticQueryParams: eh.QueryParams = {};\n  \n  constructor(private baseUrl: string) {\n  }\n  \n  /**\n   * Adds a static header.\n   */\n  public withStaticHeader(name: string, value: string): QuickSelectService {\n    this.staticHeaders[name] = value;\n    return this;\n  }\n  \n  /**\n   * Adds a static query parameter.\n   */\n  public withStaticQueryParam(name: string, value: string): QuickSelectService {\n    this.staticQueryParams[name] = value;\n    return this;\n  }\n  \n  /**\n   * Performs a configuration call.\n   */\n  public call(params: eh.QueryParams): JQuery.jqXHR {\n    $.extend(params, this.staticQueryParams);\n    let url = eh.URLHelper.buildUrl(this.baseUrl, eh.URLHelper.buildQueryString(params));\n    //console.log('QuickSelectService.call()', params, url);\n    const settings: JQuery.AjaxSettings = {\n      'url': url,\n      'dataType': 'json'\n    };\n    if (this.staticHeaders) {\n      settings.headers = this.staticHeaders;\n    }\n    return $.ajax(settings);\n  }\n  \n  /**\n   * Performs an order code check call.\n   */\n  public callOrderCodeCheck(params: eh.QueryParams): JQuery.jqXHR {\n    $.extend(params, this.staticQueryParams);\n    let url = eh.URLHelper.buildUrl(this.baseUrl + '/ordercodecheck', eh.URLHelper.buildQueryString(params));\n    //console.log('QuickSelectService.callOrderCodeCheck()', params, url);\n    const settings: JQuery.AjaxSettings = {\n      'url': url,\n      'dataType': 'json'\n    };\n    if (this.staticHeaders) {\n      settings.headers = this.staticHeaders;\n    }\n    return $.ajax(settings);\n  }\n  \n}\n\n/**\n * Configuration options for the QuickSelect component, typically passed via data attributes.\n */\ntype QuickSelectConfiguration = {\n  'apiKey': string,\n  'childProducts': ChildProduct[],\n  //'configuratorUrl': string,\n  'globalErrorMessage': string,\n  'labelProductPreselection': string,\n  'language': string,\n  'productMaterialNumber': string,\n  'productRoot': string,\n  'salesOrganization': string,\n  'serviceUrl': string\n};\n\n/**\n * Main response object from the QuickSelect configuration service.\n */\ntype QuickSelectResponse = {\n  'language': string,\n  'kept': number,\n  'length': number,\n  'vkorg': string,\n  'order-code': QuickSelectResponse_OrderCode,\n  'product-feature'?: QuickSelectResponse_ProductFeature,\n  'recommendation'?: QuickSelectResponse_Recommendation[]\n};\n\n/**\n * Response from the order code check service.\n */\ntype QuickSelectResponse_AvailableOrderCodes = {\n  'vkorg': string,\n  'available-order-codes': string[]\n};\n\n/**\n * Represents an order code pattern in the response.\n */\ntype QuickSelectResponse_OrderCode = {\n  'pattern': string,\n};\n\n/**\n * Represents a partial order code pattern at a specific position.\n */\ntype QuickSelectResponse_OrderCodePartly = QuickSelectResponse_OrderCode & {\n  'position': number\n};\n\n/**\n * Represents a product feature with its options.\n */\ntype QuickSelectResponse_ProductFeature = {\n  'coding': string,\n  'label': string,\n  'options': QuickSelectResponse_Option[],\n  'order-code': QuickSelectResponse_OrderCodePartly\n};\n\n/**\n * Represents a recommendation consisting of multiple product features.\n */\ntype QuickSelectResponse_Recommendation = {\n  'product-features': QuickSelectResponse_ProductFeature[],\n  'order-code': QuickSelectResponse_OrderCode\n};\n\n/**\n * Represents a selectable option for a product feature.\n */\ntype QuickSelectResponse_Option = {\n  'coding': string,\n  'label': string,\n  'exit'?: boolean\n};\n\n/**\n * Structure for tracking information sent to analytics.\n */\ntype QuickSelectTrackingInfo = {\n  orderCode: string | undefined,\n  fullyConfigured: boolean,\n  currentStepIndex: number,\n  currentStepFeature: string | undefined\n}\n\n/**\n * Represents a child product in a family product.\n */\ninterface ChildProduct {\n  coding: string;\n  label: string;\n  materialNumber: string;\n  root: string;\n}\n\n/**\n * Interface for product segment data used in templates and layers.\n */\nexport interface IProductSegment {\n  coding: string | undefined;\n  feature: string;\n  featureCoding: string;\n  index: number;\n  isLastLayer: boolean;\n  label: string;\n  options?: IProductSegment[] | undefined;\n  orderCode?: OrderCode,\n  root?: string | undefined;\n  option?: string | undefined;\n}\n\n}\n","namespace eh {\n    /**\n     * Main controller for the QuickSelect component.\n     * Manages the configuration state machine, service requests, and coordinates between the view and data models.\n     */\n    export class QuickSelectRv {\n        public static readonly SELECTOR = '.eh-quickselect';\n        public static readonly CLASS_QSRV = 'eh-qsrv';// RV impl, 202605\n        public static readonly DATA_KEY = 'ehQuickSelect';\n\n        private static readonly CLASS_DISABLED = 'disabled';\n        private static readonly CLASS_HIDDEN = 'eh--hide';\n        // Receivers of the current order code. The QuickSelect is the only producer; everything\n        // that shows or copies the code is marked and gets the value pushed to it, instead of\n        // deriving it from the DOM a second time (COM-4122). Both markers are looked up\n        // document-wide on purpose: the configuration-details drawer lives outside the\n        // QuickSelect root.\n        public static readonly MARKER_ORDERCODE_TEXT = 'marker-quickselect-ordercode-text';\n        public static readonly MARKER_ORDERCODE_COPY = 'marker-quickselect-ordercode-copy';\n        // Receiver for the tracking layer: carries data-cs-tracking-order-code, the site-wide\n        // attribute analyzeEvent reads for ck8. Needed by the product-action buttons that sit\n        // OUTSIDE the QuickSelect subtree and are therefore not reached by quickSelectTrackingInfo.\n        public static readonly MARKER_ORDERCODE_TRACK = 'marker-quickselect-ordercode-track';\n        // Optional per receiver: the character a not-yet-configured position contributes.\n        public static readonly ATTR_ORDERCODE_PLACEHOLDER = 'data-qsrv-ordercode-placeholder';\n\n        /**\n         * Push the current order code to every marked receiver. The value is produced per\n         * receiver, because each kind names its own character for a not-yet-configured position:\n         * text mirror and clipboard get '_' so a pasted code works in the search, tracking gets\n         * '*' like the segmented display. Any receiver may override its default per element.\n         */\n        public static writeOrderCode(produce: (placeholder: string) => string): void {\n            const valueFor = ($el: JQuery<HTMLElement>,\n                              fallback: string = QSRvOrderCodeLabel.PLAIN_PLACEHOLDER_DEFAULT): string =>\n                produce($el.attr(QuickSelectRv.ATTR_ORDERCODE_PLACEHOLDER) ?? fallback);\n            $('.' + QuickSelectRv.MARKER_ORDERCODE_TEXT).each((_i, el) => {\n                const $el = $(el), value = valueFor($el);\n                $el.text(value).toggleClass(QuickSelectRv.CLASS_HIDDEN, value.length === 0);\n            });\n            $('.' + QuickSelectRv.MARKER_ORDERCODE_COPY).each((_i, el) => {\n                const $el = $(el);\n                $el.attr(CopyController.ATTR_EXTERNAL_VALUE, valueFor($el));\n            });\n            $('.' + QuickSelectRv.MARKER_ORDERCODE_TRACK).each((_i, el) => {\n                // ck8/cp8 uses the asterisk of the segmented display, not the underscore of the\n                // clipboard: the other three producers of the value pass the configurator pattern\n                // through unchanged, and that marks an open position with '*'. One format for all\n                // of them was the point of the QA finding.\n                const $el = $(el), value = valueFor($el, QSRvOrderCodeLabel.LABEL_SEGMENT_PLACEHOLDER);\n                // Attribute AND jQuery data: analyzeEvent reads this with .data(), which caches on\n                // first access - setting the attribute alone leaves the first value in place for\n                // the rest of the page's life.\n                $el.attr('data-cs-tracking-order-code', value).data('csTrackingOrderCode', value);\n            });\n        }\n\n        public static readonly FEATURE_CODING_CHILD_PRODUCT_SELECTION = '000';\n\n        /**\n         * Initializes all QuickSelect components within the given base element.\n         * Sets up event listeners, UI components (numeric steppers, legends), and tracking.\n         *\n         * @param $base The root element to search for QuickSelect components.\n         * @param isSnippetRequest Flag indicating if the request is for a snippet (if true, initialization is skipped).\n         */\n        static init($base: JQuery<HTMLElement>, isSnippetRequest = false): void {\n            if (isSnippetRequest) {\n                return;\n            }\n            $(QuickSelectRv.SELECTOR + '.' + QuickSelectRv.CLASS_QSRV, $base).each((_index, el) => {\n                const $quickSelectRoot = $(el);\n\n                const orderCodeLabels: QSRvOrderCodeLabel[] = [];// -> order-code-segment-containers; informs labels on order-code changes\n                $(QSRvOrderCodeLabel.CONTAINER_CLASS_NAME, $base).each((_idx: number, el: HTMLElement): void => {\n                    orderCodeLabels.push(new QSRvOrderCodeLabel($(el)));\n                });\n                const $quickSelectHeader = $('.marker-quickselect-header', $quickSelectRoot);// headline\n                $quickSelectRoot.one(QS_EVENTS.INIT, (_$event: JQuery.TriggeredEvent, orderCode: OrderCodeRvVO) => {\n                    orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.update(orderCode));\n                    $quickSelectHeader.toggleClass(QuickSelectRv.CLASS_HIDDEN, false);\n                });\n\n                const $addToCartButtons = $('.marker-add-to-cart', $quickSelectRoot).add('.marker-add-to-cart.marker-quickselect-mirror');\n                const amountSettingsConfig: EhNumericStepperOptions = {\n                    min: 1,\n                    max: 99,\n                    onChange: (event: JQuery.TriggeredEvent | null, value: string) => {\n                        $addToCartButtons.attr('data-nebp-add2cart-amount', value);\n                    }\n                };\n                $('.eh-numeric-stepper', $quickSelectRoot)\n                    .ehNumericStepper(amountSettingsConfig)\n                    .ehNumericStepper('toggleDisabled', $addToCartButtons.hasClass(QuickSelectRv.CLASS_DISABLED));\n\n                const $resetButton = $('.marker-qsrv-reset', $quickSelectRoot);\n                const $viewDetailsButton = $('.marker-qsrv-view-details', $quickSelectRoot);\n                const $orderBoxActions = $resetButton.add($viewDetailsButton);\n                $quickSelectRoot.on('change', '.ehel-quick-selection--input', () => {\n                    if ($quickSelectRoot.data('quickSelectAutoCompleting')) {\n                        return; // options are being prescribed, not chosen by the user\n                    }\n                    $resetButton.toggleClass('is-disabled', false);\n                    $viewDetailsButton.toggleClass('is-disabled', false);\n                });\n\n                // While the service auto-completes the remaining features, the order-box\n                // actions and the segmented order-code display are locked; afterwards the\n                // state each element had before the sequence is restored.\n                $quickSelectRoot.on(QS_RV_EVENTS.AUTO_COMPLETION_CHANGE, (_$event: JQuery.TriggeredEvent, isAutoCompleting: boolean) => {\n                    $quickSelectRoot.data('quickSelectAutoCompleting', isAutoCompleting);\n                    $orderBoxActions.each((_idx: number, el: HTMLElement) => {\n                        const $button = $(el);\n                        if (isAutoCompleting) {\n                            if ($button.data('disabledBeforeAutoCompletion') === undefined) {\n                                $button.data('disabledBeforeAutoCompletion', $button.hasClass('is-disabled'));\n                            }\n                            $button.toggleClass('is-disabled', true);\n                        } else if ($button.data('disabledBeforeAutoCompletion') !== undefined) {\n                            // only restore what this lock actually changed\n                            $button.toggleClass('is-disabled', !!$button.data('disabledBeforeAutoCompletion'));\n                            $button.removeData('disabledBeforeAutoCompletion');\n                        }\n                    });\n                    orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.setDisabled(isAutoCompleting));\n                });\n                $resetButton.on('click', (e: JQuery.ClickEvent) => {\n                    e.preventDefault();\n                    if ($resetButton.hasClass('is-disabled')) {\n                        // An inactive reset does nothing, so it must not be reported either\n                        // (tagplan package 3, row 51: send the event only when reset is active).\n                        // eh.Tracking listens delegated on document and its guard only knows\n                        // 'disabled' and 'inactive'; this button carries just the styling half\n                        // 'is-disabled', so keeping the click from bubbling is what leaves it\n                        // out of the stream.\n                        e.stopPropagation();\n                        return;\n                    }\n                    const resetUrl: string = $resetButton.data('resetUrl') || '';\n                    if (resetUrl) {\n                        window.location.href = resetUrl;\n                    } else {\n                        $quickSelectRoot.data(QuickSelectRv.DATA_KEY)?.resetToInitialState();\n                    }\n                });\n\n                const $configureButtonsGlobal = $('.marker-configure-action', $quickSelectRoot).add('.marker-configure-action.marker-quickselect-mirror');\n                const $configureLinkGlobal = $('.marker-configure-link-global', $quickSelectRoot);\n                const $extOrderCodeReceiver = $('.marker-quickselect-ordercode-mirror');\n                // Any element flagged as a quickselect mirror must reflect the current order\n                // code, independent of whether it is also a configure/add-to-cart action\n                // (those combined selectors are reused for other behavior and must not be widened).\n                const $orderCodeMirrors = $('.marker-quickselect-mirror');\n                // COM-4122 asked the configuration-details drawer to print the order code of the\n                // current configuration, partial states included, and to read exactly what Copy\n                // puts on the clipboard. That was solved by having both sides run the same\n                // collector over the .ehel-copy--source spans; now the QuickSelect produces the\n                // value once and pushes it to every marked receiver (writeOrderCode above), so the\n                // agreement is structural instead of two readers happening to walk the same DOM.\n                // The receivers need their own marker class: .marker-quickselect-ordercode-mirror\n                // above also sits on the legacy \"save to list\" links, whose text must not be\n                // overwritten.\n                // The producer of the current order code. Kept in the closure because\n                // ORDER_CODE_COMPLETE carries no value of its own and only re-distributes what\n                // the last change produced.\n                let orderCodeProducer: ((placeholder: string) => string) | null = null;\n                const distributeOrderCode = (produce: ((placeholder: string) => string) | null): void => {\n                    if (produce) {\n                        orderCodeProducer = produce;\n                    }\n                    if (orderCodeProducer) {\n                        QuickSelectRv.writeOrderCode(orderCodeProducer);\n                    }\n                };\n                QSRvViewModel.copyAttributes($configureButtonsGlobal, $configureLinkGlobal,\n                    ['class', 'href', 'data-cs-tracking-goals', 'data-cs-tracking-ps-name',\n                        'data-cs-tracking-subtype', 'data-cs-tracking-title']);\n                QSRvViewModel.notifyReplaced($configureLinkGlobal.parent());\n\n                const predefinedOrderCode = $quickSelectRoot.data('quickSelectPredefinedOrderCode');\n                if (predefinedOrderCode) {\n                    $quickSelectRoot.selfOrFind(\".marker-qsrv-order-code-handling\").toggleClass(QuickSelectRv.CLASS_HIDDEN, false);\n                    $quickSelectRoot.selfOrFind(\".marker-qsrv-alternative\").toggleClass(QuickSelectRv.CLASS_HIDDEN, true);\n                    window.setTimeout(() => {\n                        eh.Tracking.injectTrackingEvent({\n                            'event_configuration_step': 'fully configured',\n                            'event_linkname': 'product is fully configured',\n                            'event_order_code': predefinedOrderCode,\n                            'event_subtype': 'quick_select_fully_configured_generated'\n                        }, $quickSelectRoot, 'content_link');\n                    }, 0);\n\n                    $quickSelectRoot.data('quickSelectTrackingInfo', {\n                        'fullyConfigured': true,\n                        'orderCode': predefinedOrderCode\n                    });\n\n                    // Render the predefined order code as a structured, segmented display:\n                    // split at the first '-', then segment the rear by matching the\n                    // configuration items' option codes (data-product-pricing-option =\n                    // \"S<root>_<group>_<option>\") against the actual order code.\n                    const itemOptionCodes: string[] = $('[data-product-pricing-option]', $quickSelectRoot).toArray()\n                        .map(el => ((el.getAttribute('data-product-pricing-option') || '').split('_').pop()) || '')\n                        .filter(code => code.length > 0);\n                    // The structured display must show the actual ORDER CODE from the device-viewer\n                    // XML (matchedOrderCode). searchedOrderCode / quickSelectPredefinedOrderCode can be\n                    // an orderIdent, so it must NOT be used here — fall back to it only if no matched\n                    // order code is present.\n                    const matchedOrderCode = $quickSelectRoot.data('quickSelectMatchedOrderCode');\n                    const structuredOrderCode = (matchedOrderCode != null && ('' + matchedOrderCode).length > 0)\n                        ? ('' + matchedOrderCode)\n                        : ('' + predefinedOrderCode);\n                    orderCodeLabels.forEach(label => label.updateFromOrderCode(structuredOrderCode, itemOptionCodes));\n                    // fully configured: no unset position, so the placeholder never applies\n                    distributeOrderCode(() => structuredOrderCode);\n\n                    // A predefined order code (from the externalXml / 'searchedOrderCode' URL\n                    // parameter) is resolved at load time, so the interactive\n                    // ORDER_CODE_CHANGE/COMPLETE events never fire — reflect it on the external\n                    // mirror/action links here so they carry the current order code too.\n                    const predefinedExternalized = QuickSelectRv.prepareOrderCodeForExternals(structuredOrderCode);\n                    $configureButtonsGlobal.add($configureLinkGlobal).add($addToCartButtons).add($extOrderCodeReceiver).add($orderCodeMirrors)\n                        .attr('data-nebp-product-ordercode', predefinedExternalized);\n                }\n\n                const config: QuickSelectConfiguration = $quickSelectRoot.data('quickSelectConfig');\n                if (!config || Object.keys(config).length === 0) {\n                    QuickSelect.markAsDisabled($quickSelectRoot);\n                    return;\n                }\n\n                const qs = new QuickSelectRv($quickSelectRoot, config);\n                $quickSelectRoot.data(QuickSelectRv.DATA_KEY, qs);\n\n                const $additionalOptionsRow = $('.marker-additional-options', $quickSelectRoot);\n\n                $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_CHANGE, (_$event: JQuery.TriggeredEvent, orderCodeVO: OrderCodeRvVO) => {\n                    orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.update(orderCodeVO));\n                    const parts = QSRvOrderCodeLabel.decompose(orderCodeVO);\n                    distributeOrderCode(placeholder => QSRvOrderCodeLabel.toPlainValue(parts, placeholder));\n                    qs.updateTrackingInfo();\n\n                    if (orderCodeVO.pattern) {\n                        const orderCodeExternalized = QuickSelectRv.prepareOrderCodeForExternals(orderCodeVO.pattern);\n                        $('.eh-quickselector--selection-option-description-details a', $quickSelectRoot)\n                            .add($configureButtonsGlobal).add($configureLinkGlobal).add($addToCartButtons).add($extOrderCodeReceiver).add($orderCodeMirrors)\n                            .attr('data-nebp-product-ordercode', orderCodeExternalized)\n                            .attr('data-nebp-product-root', orderCodeVO.orderCode.productRoot)\n                            .attr('data-nebp-product-matnr', qs.getSelectedChildProduct()?.materialNumber ?? qs.config.productMaterialNumber)\n                        ;\n                    }\n                    $additionalOptionsRow.toggleClass(QuickSelectRv.CLASS_HIDDEN, true);\n                    $addToCartButtons.attr('data-nebp-activate-config-complete-check', 'false');\n                });\n\n                $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_HIGHLIGHT, (_$event: JQuery.TriggeredEvent, idx: number) =>\n                    orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.highlightSegment(idx)));\n\n                $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_LEGEND_CHANGE, (_$event: JQuery.TriggeredEvent,\n                                                                         data: { legend: IProductSegmentRv[] }) => {\n                    qs.orderCodeLegend.update(data.legend);\n                });\n\n                $quickSelectRoot.on(QS_EVENTS.ORDER_CODE_COMPLETE, () => {\n                    orderCodeLabels.forEach(orderCodeLabel => orderCodeLabel.highlightSegment(-1));\n                    distributeOrderCode(null);\n                    qs.updateTrackingInfo();\n\n                    const orderCode = qs.getCurrentStep()?.orderCode;\n                    if (orderCode?.pattern) {\n                        const orderCodeExternalized = QuickSelectRv.prepareOrderCodeForExternals(orderCode.pattern);\n                        $('.eh-quickselector--selection-option-description-details a', $quickSelectRoot)\n                            .add($configureButtonsGlobal).add($configureLinkGlobal).add($addToCartButtons).add($orderCodeMirrors)\n                            .attr('data-nebp-product-ordercode', orderCodeExternalized)\n                            .attr('data-nebp-product-root', orderCode.productRoot)\n                            .attr('data-nebp-product-matnr', qs.getSelectedChildProduct()?.materialNumber ?? qs.config.productMaterialNumber)\n                        ;\n                    }\n                    $additionalOptionsRow.toggleClass(QuickSelectRv.CLASS_HIDDEN, false);\n                    $addToCartButtons.attr('data-nebp-activate-config-complete-check', 'true');\n                });\n\n            });\n\n        }\n\n        /**\n         * Marks the given element as disabled by adding a specific CSS class.\n         * @param $elem The jQuery element to disable.\n         */\n        static markAsDisabled($elem: JQuery<HTMLElement>): void {\n            $elem.toggleClass('eh-quickselect-disabled', true);\n        }\n\n        /**\n         * Checks if the given element is marked as disabled.\n         * @param $elem The jQuery element to check.\n         * @returns True if disabled, false otherwise.\n         */\n        static isDisabled($elem: JQuery<HTMLElement>): boolean {\n            return $elem.hasClass('eh-quickselect-disabled');\n        }\n\n        public view: QSRvViewModel;\n\n        private initialized = false;\n        private readonly quickSelectService: QuickSelectService;\n        private readonly steps: StepRv[] = [];\n\n        public readonly orderCodeLegend: QSRvOrderCodeLegend;\n        public readonly priceScaleLegend: QSRvPriceScaleLegend;\n\n        constructor(public readonly $elem: JQuery<HTMLElement>,\n                    public readonly config: QuickSelectConfiguration) {\n            this.quickSelectService = new QuickSelectService(config.serviceUrl)\n                .withStaticHeader('X-Api-Key', config.apiKey)\n                .withStaticQueryParam('vkorg', config.salesOrganization)\n                .withStaticQueryParam('language', config.language)\n            ;\n            this.view = new QSRvViewModel(this, this.$elem);\n            this.orderCodeLegend = new QSRvOrderCodeLegend($(QSRvOrderCodeLegend.EL_DETAIL_ROW_SELECTOR, this.$elem));\n            this.priceScaleLegend = new QSRvPriceScaleLegend($(QSPriceScaleLegend.CONTAINER_CLASS_NAME, this.$elem));\n\n            if (config.childProducts?.length > 0) {\n                const orderCodeCheck = new OrderCodeCheckState(this, this.$elem, this.quickSelectService,\n                    config.productRoot, config.childProducts);\n                this.changeState(orderCodeCheck);\n                orderCodeCheck.observeLoading(orderCodeCheck.check());\n            } else {\n                this.changeState(new InitialState(this, this.$elem, this.quickSelectService, config.productRoot, config.childProducts));\n            }\n            this.updateTrackingInfo();\n        }\n\n        /**\n         * Changes the current state of the configuration state machine.\n         * @param newState The new state to transition to.\n         */\n        public changeState(_newState: StateRv): void {\n            // State transitions are driven by the state's own constructor (evaluated as\n            // the argument here); the manager no longer needs to retain the current state.\n        }\n\n        public resetToInitialState(): void {\n            this.steps.length = 0;\n            this.view.sliceViewStack(0);\n            this.changeState(new InitialState(this, this.$elem, this.quickSelectService, this.config.productRoot, this.config.childProducts));\n            $('.marker-qsrv-reset, .marker-qsrv-view-details', this.$elem).toggleClass('is-disabled', true);\n        }\n\n        /**\n         * Returns the current configuration step.\n         * @returns The latest step or undefined if no steps have been taken.\n         */\n        public getCurrentStep(): StepRv | undefined {\n            return this.steps[this.steps.length - 1];\n        }\n\n        /**\n         * Gets the 1-based index of a step identified by its feature coding.\n         * @param featureCoding The feature coding to look for.\n         * @returns The 1-based index, or 0 if not found.\n         */\n        public getStepIndex1(featureCoding?: string): number {\n            let idx = -1;\n            this.steps.some((v, i) => {\n                if (v.featureCoding === featureCoding) {\n                    idx = i;\n                    return true;\n                }\n                return false;\n            });\n            return idx + 1;\n        }\n\n        /**\n         * Stores a new configuration step in the history.\n         * @param step The step to store.\n         */\n        public storeStep(step: StepRv): void {\n            this.steps.push(step);\n        }\n\n        /**\n         * Rollback the already made steps up to the one with the given featureCoding,\n         * then \"finish\" that again with the given option value.\n         * Used for re-configuring a previously completed step.\n         *\n         * @param featureCoding The feature coding of the step to rewind to.\n         * @param coding The new value for the feature.\n         */\n        public rewindSteps(featureCoding: string, coding: string) {\n            let idx = -1;\n            this.steps.some((v, i) => {\n                if (v.featureCoding === featureCoding) {\n                    idx = i;\n                    return true;\n                }\n                return false;\n            });\n            if (idx === -1 || idx >= this.steps.length) {\n                return;\n            }\n            this.steps.splice(idx + 1);\n            this.getCurrentStep()?.finish(coding);\n        }\n\n        public getSelectedChildProduct(): ChildProduct | undefined {\n            return this.steps?.[0]?.childProduct;\n        }\n\n        public setDisabled(): void {\n            QuickSelectRv.markAsDisabled(this.$elem);\n            $('.marker-qsrv-alternative', this.$elem).toggleClass(QuickSelectRv.CLASS_HIDDEN, false);\n            $('.marker-qsrv-order-code-handling', this.$elem).toggleClass(QuickSelectRv.CLASS_HIDDEN, true);\n            $('.eh-qsrv--product-label', this.$elem)\n                .addClass(QuickSelectRv.CLASS_HIDDEN)\n                .find(`.${CopyController.SOURCE_CLASSNAME}`)\n                .removeClass(CopyController.SOURCE_CLASSNAME);\n            $('.marker-product-root-display', this.$elem)\n                .text(this.config.productRoot)\n                .removeClass(QuickSelectRv.CLASS_HIDDEN)\n                .addClass(CopyController.SOURCE_CLASSNAME);\n            // In this state the code is just the product root - distributed like any other value\n            // so the receivers never have to guess which state the QuickSelect is in.\n            QuickSelectRv.writeOrderCode(() => this.config.productRoot);\n        }\n\n        public isDisabled(): boolean {\n            return QuickSelectRv.isDisabled(this.$elem);\n        }\n\n        public setInitialized(): void {\n            this.initialized = true;\n        }\n\n        public isInitialized(): boolean {\n            return this.initialized;\n        }\n\n        updateTrackingInfo() {\n            const info = this.createTrackingInfo();\n            if (info.orderCode) {\n                this.$elem.data('quickSelectTrackingInfo', info);\n                // Expose the current order code to the generic click tracking, which looks for the\n                // nearest ancestor carrying data-cs-tracking-order-code. The attribute is what the\n                // selector matches, the data entry is what Tracking actually reads -- set both.\n                this.$elem.attr('data-cs-tracking-order-code', info.orderCode)\n                    .data('csTrackingOrderCode', info.orderCode);\n            }\n        }\n\n        createTrackingInfo(): QuickSelectTrackingInfo {\n            const step = this.getCurrentStep();\n            const ocs = step?.orderCodeString;\n            return {\n                orderCode: ocs ? QuickSelectRv.prepareOrderCodeForExternals(ocs) : undefined,\n                fullyConfigured: step?.orderCode?.getOpenPositions() === 0,\n                currentStepIndex: this.getStepIndex1(step?.featureCoding),\n                currentStepFeature: step?.featureCoding\n            };\n        }\n\n        public getSelectedOptions(): string[] {\n            const selectedOptions = this.steps.map((step) => {\n                return step.serializeOptions();\n            }).reduce((accumulated, val) => accumulated.concat(val), []);\n            selectedOptions.sort();\n            return selectedOptions;\n        }\n\n        public static prepareOrderCodeForExternals(orderCodeString: string): string {\n            const pos = orderCodeString.indexOf('-');\n            return orderCodeString.substring(0, pos + 1) + orderCodeString.substring(pos + 1)\n                .replace(/-/g, '');\n        }\n\n        public static injectURLParam(url: string, paramName: string, paramValue: string): string {\n            const params = eh.URLHelper.buildQueryParamMap(eh.URLHelper.getQueryString(url));\n            params[paramName] = paramValue;\n            return eh.URLHelper.buildUrl(url, eh.URLHelper.buildQueryString(params));\n        }\n\n        public static serialize(productRoot: string, featureCoding: string, optionCoding: string) {\n            return [productRoot, QuickSelectRv.ensureCodingWidth(featureCoding), optionCoding].join('_');\n        }\n\n        public static ensureCodingWidth(coding: string) {\n            // feature coding is always 3 characters long, left padded with zeroes\n            return ('000' + coding).slice(-3);\n        }\n\n    }\n\n    /**\n     * Abstract base class for all states in the QuickSelect state machine.\n     * States handle transitions and business logic for each configuration step.\n     */\n    export abstract class StateRv {\n        static ID_ITERATOR: number = 1;\n        protected _orderCode: OrderCodeRv;\n        public id: number;\n\n        protected constructor(protected stateManager: eh.QuickSelectRv) {\n            this.id = ++StateRv.ID_ITERATOR;\n        }\n        /**\n         * Gets the current order code associated with this state.\n         */\n        public get orderCode(): OrderCodeRv {\n          return this._orderCode;\n        }\n    }\n\n    /**\n     * Base class for states that perform asynchronous loading (e.g., fetching next configuration options).\n     */\n    export class LoaderStateRv extends StateRv {\n        protected _templateData: IProductSegmentRv;\n        private _isLoading: boolean = false;\n        private _loadingListener: () => void;\n        private _latestRequest: JQuery.jqXHR;\n\n        constructor(protected stateManager: eh.QuickSelectRv) {\n            super(stateManager);\n        }\n\n        /**\n         * Watches a jQuery AJAX request and manages loading state.\n         * Updates the view model's current loader and notifies listeners on completion.\n         *\n         * @param request The request to observe.\n         */\n        public observeLoading(request: JQuery.jqXHR): void {\n            this._isLoading = true;\n            this._latestRequest = request;\n            this.stateManager.view.currentLoader = this;\n\n            const finallyHelper = (): void => {\n                if (this.isCurrentLoader(request)()) {\n                    this._isLoading = false;\n                    if (this._loadingListener) {\n                        this._loadingListener();\n                    }\n                }\n            };\n            request\n                .then(finallyHelper)\n                .catch(finallyHelper);\n        }\n\n        public get templateData(): IProductSegmentRv {\n            return this._templateData;\n        }\n\n        public get isLoading(): boolean {\n            return this._isLoading;\n        }\n\n        /**\n         * Registers a listener to be notified when loading is complete.\n         * @param l The callback function.\n         */\n        registerLoadingListener(l: () => void): void {\n            this._loadingListener = l;\n        }\n\n        /**\n         * Helper to wrap a response handler with a guard condition.\n         * Ensures the handler only runs if the state is still relevant.\n         */\n        protected onResponse = (\n            fn: any,\n            guard: (...args: any[]) => boolean = (): boolean => {\n                return true\n            }\n        ) => {\n            return (...args: any[]): any => {\n                if (guard()) {\n                    fn.apply(null, args);\n                }\n            }\n        };\n\n        /**\n         * Returns a function that checks if this state is still the active loader for a specific request.\n         * Prevents race conditions from outdated requests.\n         */\n        public isCurrentLoader = (request: JQuery.jqXHR): () => boolean => {\n            return (): boolean => {\n                const sameLoader: boolean = this.stateManager.view.currentLoader === this;\n                const isLatestRequest: boolean = request === this._latestRequest;\n                return sameLoader && isLatestRequest\n            };\n        };\n\n        /**\n         * Triggers a selection that is observed for loading status.\n         */\n        public observedSelect = (options: IProductSegmentRv): void => {\n            const opt: string = options.root || options.coding || '';\n            this.observeLoading(this.select(opt));\n        };\n\n        /**\n         * Performs the selection request. Should be overridden by subclasses.\n         * @param option The selected option coding.\n         */\n        public select(option: string): JQuery.jqXHR {\n            throw new Error('invalid call to abstract member');\n        }\n    }\n\n    class InitialState extends LoaderStateRv {\n        constructor(protected stateManager: eh.QuickSelectRv, protected $elem: JQuery<HTMLElement>,\n                    private service: QuickSelectService, productRoot: string, private childProducts: ChildProduct[]) {\n            super(stateManager);\n\n            this._orderCode = OrderCodeRv.createFromRoot(productRoot, this.childProducts.length > 0);\n            const isLastLayer = this._orderCode.getOpenPositions() === 1;\n            this._templateData = {\n                coding: undefined,\n                root: productRoot,\n                index: 0,\n                label: this.stateManager.config.labelProductPreselection,\n                feature: 'UNUSED',\n                featureCoding: QuickSelectRv.FEATURE_CODING_CHILD_PRODUCT_SELECTION,\n                orderCode: this._orderCode,\n                isLastLayer: isLastLayer,\n                options: (childProducts.map(c => {\n                    return {\n                        coding: c.coding,\n                        root: c.root,\n                        label: c.label,\n                        feature: 'UNUSED',\n                        featureCoding: 'UNUSED',\n                        index: 0,\n                        materialNumber: c.materialNumber,\n                        options: undefined,\n                        isLastLayer: isLastLayer\n                    };\n                }) as IProductSegmentRv[])\n            };\n\n            if (this.childProducts.length > 0) {\n                this.stateManager.storeStep(new StepRv(this._orderCode, this.id, null));\n                this.stateManager.view.setSelection(this, 0);\n            } else {\n                const EMPTY_OPTIONS: IProductSegmentRv = {\n                    coding: '',\n                    feature: '',\n                    featureCoding: '',\n                    index: 0,\n                    isLastLayer: false,\n                    label: '',\n                    root: ''\n                };\n                this.observedSelect(EMPTY_OPTIONS);\n            }\n        }\n\n        public select(option: string): JQuery.jqXHR {\n            if (option) {\n                const currentStep = this.stateManager.getCurrentStep();\n                if (currentStep) {\n                    currentStep.selectChildProduct(this.childProducts.filter(p => p.root === option)[0]);\n                    currentStep.finish(option);\n                }\n            }\n            const request: JQuery.jqXHR = this.service.call({'ordercode': this._orderCode.fillPosition(option)});\n            const successHandler = (result: QuickSelectResponse, _textStatus: string, response: JQuery.jqXHR) => {\n                if (response.status === 204) {\n                    this.stateManager.changeState(new NoopState(this.stateManager));\n                    this.stateManager.setDisabled();\n                } else if (result['recommendation'] && result['recommendation'].length === 1) {\n                    this.stateManager.changeState(new RecommendationState(this.stateManager, this.$elem, this.service, result));\n                } else if (result['product-feature']) {\n                    this.stateManager.changeState(new SelectionState(this.stateManager, this.$elem, this.service, result, 1));\n                } else {\n                    this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n                    this.stateManager.setDisabled();\n                }\n            };\n            const failHandler = (_response: JQuery.jqXHR) => {\n                if (this.childProducts.length > 0) {\n                    this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n                } else {\n                    // hide error if it happens on the very first request\n                    this.stateManager.setDisabled();\n                }\n            };\n            request.then(\n                this.onResponse(successHandler, this.isCurrentLoader(request)),\n                this.onResponse(failHandler, this.isCurrentLoader(request))\n            );\n            return request;\n        }\n    }\n\n    class OrderCodeCheckState extends LoaderStateRv {\n        constructor(protected stateManager: eh.QuickSelectRv, protected $elem: JQuery<HTMLElement>,\n                    private service: QuickSelectService, private productRoot: string, private childProducts: ChildProduct[]) {\n            super(stateManager);\n        }\n\n        public check(): JQuery.jqXHR {\n            const request: JQuery.jqXHR = this.service.callOrderCodeCheck(\n                {'ordercodecheck': this.childProducts.map(c => c.root).join(',')});\n            const successHandler = (result: QuickSelectResponse_AvailableOrderCodes, _textStatus: string, response: JQuery.jqXHR) => {\n                if (response.status === 200) {\n                    this.stateManager.changeState(new InitialState(this.stateManager, this.$elem, this.service, this.productRoot,\n                        this.childProducts.filter(c => result['available-order-codes'].indexOf(c.root ?? '') !== -1)));\n                } else {\n                    this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n                }\n            };\n            const failHandler = (_response: JQuery.jqXHR) => {\n                // hide error, it's the very first request\n                this.stateManager.setDisabled();\n            };\n            request.then(\n                this.onResponse(successHandler, this.isCurrentLoader(request)),\n                this.onResponse(failHandler, this.isCurrentLoader(request))\n            );\n            return request;\n        }\n    }\n\n    class SelectionState extends LoaderStateRv {\n        private length: number;\n        private kept: number;\n\n        constructor(protected stateManager: eh.QuickSelectRv, protected $elem: JQuery<HTMLElement>,\n                    private service: QuickSelectService, protected result: QuickSelectResponse, public index: number) {\n            super(stateManager);\n\n            if (!result['product-feature']) {\n                throw new Error('product-feature');\n            }\n            const productFeature: QuickSelectResponse_ProductFeature = result['product-feature'];\n            this._orderCode = OrderCodeRv.createPartly(productFeature['order-code'], stateManager.config.productRoot);\n            this.length = result.length;\n            this.kept = result.kept;\n            const step = new StepRv(this._orderCode, this.id, this.result);\n            this.stateManager.storeStep(step);\n\n            const isLastLayer = this._orderCode.getOpenPositions() === 1;\n            this._templateData = {\n                ...productFeature,\n                index: this.index,\n                feature: 'UNUSED',\n                featureCoding: QuickSelectRv.ensureCodingWidth(productFeature.coding),\n                orderCode: this._orderCode,\n                isLastLayer: isLastLayer,\n                options: productFeature.options\n                    .filter(option => !option.exit)\n                    .map((option, index) => {\n                        return {\n                            coding: option.coding,\n                            label: option.label,\n                            feature: 'UNUSED',\n                            featureCoding: 'UNUSED',\n                            isLastLayer: isLastLayer,\n                            index: index,\n                            option: QuickSelectRv.serialize(this._orderCode.productRoot, productFeature.coding, option.coding)\n                        };\n                    })\n            };\n            this.stateManager.view.setSelection(this, this.index);\n\n        }\n\n        public select(option: string): JQuery.jqXHR {\n            this.stateManager.getCurrentStep()?.finish(option);\n            const orderCode = OrderCodeRv.createFromOrderCode(this._orderCode, option);\n            const orderCodeString = orderCode.pattern;\n            if (orderCode.getOpenPositions() === 1) { // this is the last step, we (should) already have the\n                // appropriate recommendation\n                const selectedRecommendation = this.result.recommendation?.filter(r => r['order-code'].pattern === orderCodeString);\n                if (selectedRecommendation?.length === 1) {\n                    const artificialResult = $.extend(true, {}, this.result);\n                    artificialResult.recommendation = [selectedRecommendation[0]];\n                    this.stateManager.changeState(new RecommendationState(this.stateManager, this.$elem, this.service, artificialResult));\n                    return ($.Deferred().resolve() as unknown) as JQuery.jqXHR;\n                }\n            }\n            const request = this.service.call({\n                'ordercode': orderCodeString,\n                'length': this.length.toString(), 'kept': this.kept.toString()\n            });\n            this.observeLoading(request);\n            const successHandler = (result: QuickSelectResponse, _textStatus: string, response: JQuery.jqXHR) => {\n                if (response.status === 204) {\n                    this.stateManager.changeState(new NoopState(this.stateManager));\n                } else if (result['recommendation'] && result['recommendation'].length === 1) {\n                    this.stateManager.changeState(new RecommendationState(this.stateManager, this.$elem, this.service, result));\n                } else if (result['product-feature']) {\n                    this.stateManager.changeState(new SelectionState(this.stateManager, this.$elem, this.service, result, this.index + 1));\n                } else {\n                    this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n                }\n            };\n            const failHandler: (response: JQuery.jqXHR) => void = (_response: JQuery.jqXHR) => {\n                this.stateManager.changeState(new ErrorState(this.stateManager, this.$elem, this.stateManager.config.globalErrorMessage));\n            };\n\n            request.then(\n                this.onResponse(successHandler, this.isCurrentLoader(request)),\n                this.onResponse(failHandler, this.isCurrentLoader(request))\n            );\n\n            return request;\n        }\n\n    }\n\n    class RecommendationState extends StateRv {\n        constructor(protected stateManager: eh.QuickSelectRv, protected $elem: JQuery<HTMLElement>,\n                    _service: QuickSelectService, protected result: QuickSelectResponse) {\n            super(stateManager);\n            if (!result['recommendation']) {\n                throw new Error('recommendation');\n            }\n            const recommendation = result['recommendation'][0];\n            const productData: QuickSelectResponse_ProductFeature[] = recommendation['product-features'];\n            this._orderCode = OrderCodeRv.create(recommendation['order-code'], stateManager.config.productRoot);\n            let inc: number = (this.stateManager.getCurrentStep() as StepRv).id;\n            const step = new StepRv(this._orderCode, this.id, this.result);\n            this.stateManager.storeStep(step);\n\n            const normalizedTemplateData: IProductSegmentRv[] = productData.map(productFeature => {\n                const orderCode = OrderCodeRv.createPartly(productFeature['order-code'], this.stateManager.config.productRoot);\n                return {\n                    index: ++inc,\n                    feature: productFeature.label,\n                    featureCoding: QuickSelectRv.ensureCodingWidth(productFeature.coding),\n                    label: productFeature.options[0].label,\n                    coding: productFeature.options[0].coding,\n                    orderCode: orderCode,\n                    isLastLayer: orderCode.getOpenPositions() === 1,\n                    root: '',\n                    // Populate the selectable options (mirrors SelectionState) so the\n                    // preselectable-row-option template is duplicated per option into the\n                    // .eh-quickselector--selection-options container — otherwise it stays empty.\n                    options: productFeature.options\n                        .filter(option => !option.exit)\n                        .map((option, optIndex) => ({\n                            coding: option.coding,\n                            label: option.label,\n                            feature: 'UNUSED',\n                            featureCoding: 'UNUSED',\n                            isLastLayer: orderCode.getOpenPositions() === 1,\n                            index: optIndex,\n                            option: QuickSelectRv.serialize(orderCode.productRoot, productFeature.coding, option.coding)\n                        })),\n                    option: QuickSelectRv.serialize(orderCode.productRoot, productFeature.coding, productFeature.options[0].coding)\n                };\n            });\n            stateManager.view.setRecommendations(this, normalizedTemplateData);\n        }\n\n    }\n\n    class ErrorState extends StateRv {\n        constructor(protected stateManager: eh.QuickSelectRv, private $elem: JQuery<HTMLElement>, msg: string) {\n            super(stateManager);\n            this.stateManager.view.setError(this, {message: msg});\n        }\n\n    }\n\n    class NoopState extends StateRv {\n        constructor(protected stateManager: eh.QuickSelectRv) {\n            super(stateManager);\n        }\n\n    }\n\n    /**\n     * Represents a single configuration step.\n     * Stores information about the selected feature, options, and the resulting order code.\n     *\n     * Common flow:\n     * 1) Step is loaded with feature coding and available options from service result.\n     * 2) Step is finished by selecting an option.\n     */\n    export class StepRv {\n        private selectedOption: string | undefined;\n        public readonly featureCoding: string;\n        private _childProduct?: ChildProduct;\n\n        /**\n         * @param _orderCode The order code before this step.\n         * @param id Unique step ID.\n         * @param serviceResult The API response for this step.\n         */\n        constructor(\n            private readonly _orderCode: OrderCodeRv,\n            public readonly id: number,\n            private readonly serviceResult: QuickSelectResponse | null\n        ) {\n            this.featureCoding = serviceResult?.['product-feature']?.coding ?? QuickSelectRv.FEATURE_CODING_CHILD_PRODUCT_SELECTION;\n        }\n\n        /**\n         * Gets the base order code for this step.\n         */\n        public get orderCode(): OrderCodeRv {\n            return this._orderCode;\n        }\n\n        /**\n         * Gets the order code string, including the selected option if available.\n         */\n        public get orderCodeString(): string {\n            return this.selectedOption ? this._orderCode.fillPosition(this.selectedOption) : this._orderCode.pattern;\n        }\n\n        /**\n         * Associates a child product with this step.\n         */\n        public selectChildProduct(childProduct: ChildProduct | undefined) {\n            this._childProduct = childProduct;\n        }\n\n        /**\n         * Gets the associated child product.\n         */\n        public get childProduct(): ChildProduct | undefined {\n            return this._childProduct;\n        }\n\n        /**\n         * Marks this step as finished with the given option coding.\n         */\n        public finish(selectedOption: string): void {\n            this.selectedOption = selectedOption;\n        }\n\n        /**\n         * Serializes the selection into feature=option format.\n         */\n        public serializeOptions(): string[] {\n            if (this.serviceResult?.recommendation?.length === 1) {\n                // exactly one recommendation means final step and might contain multiple options\n                return this.serviceResult.recommendation[0]['product-features'].filter(pf => pf.options?.[0].coding)\n                    .map(pf => QuickSelectRv.serialize(this._orderCode.productRoot, pf.coding, pf.options?.[0].coding));\n            }\n            return this.featureCoding === QuickSelectRv.FEATURE_CODING_CHILD_PRODUCT_SELECTION || !this.selectedOption ? []\n                : [QuickSelectRv.serialize(this._orderCode.productRoot, this.featureCoding, this.selectedOption)];\n        }\n    }\n\n    /**\n     * Manages the product's order code pattern.\n     * Pattern example: PRODUCTROOT-*-*-*-*\n     * Options represented by *, separated by -\n     * Position is one-based, family product info on pos 0 before first separator.\n     */\n    export class OrderCodeRv {\n        private static SEPARATOR = '-';\n        private readonly _productRoot: string;\n        private _productRootIncludingChild: string | undefined;\n        private _segmentValue: string | undefined;\n\n        private constructor(\n            private readonly sourcePattern: string,\n            private readonly _currentSegmentIndex: number | undefined = undefined\n        ) {\n            const separatorIndex = this.sourcePattern.indexOf(OrderCodeRv.SEPARATOR);\n            this._productRoot = separatorIndex === -1 ? this.sourcePattern : this.sourcePattern.substring(0, separatorIndex);\n        }\n\n        /**\n         * Creates an initial OrderCode from a product root.\n         */\n        public static createFromRoot(productRoot: string, productHasChildren: boolean): OrderCodeRv {\n            return new OrderCodeRv(productRoot, productHasChildren ? 0 : undefined);\n        }\n\n        /**\n         * Creates an OrderCode from a full pattern.\n         */\n        public static create(o: QuickSelectResponse_OrderCode, productRoot: string): OrderCodeRv {\n            return new OrderCodeRv(o.pattern);\n        }\n\n        /**\n         * Creates an OrderCode for a specific position in the pattern.\n         */\n        public static createPartly(o: QuickSelectResponse_OrderCodePartly, productRoot: string): OrderCodeRv {\n            return new OrderCodeRv(o.pattern, o.position);\n        }\n\n        /**\n         * Creates a new OrderCode by filling a position in an existing one.\n         */\n        public static createFromOrderCode(o: OrderCodeRv, value: string) {\n            return new OrderCodeRv(o.fillPosition(value));\n        }\n\n        /**\n         * Gets the full pattern string.\n         */\n        get pattern(): string {\n            return this._segmentValue ? this.fillPosition(this._segmentValue) : this.sourcePattern;\n        }\n\n        /**\n         * Gets the index of the segment currently being configured.\n         */\n        get currentSegmentIndex(): number | undefined {\n            return this._currentSegmentIndex;\n        }\n\n        /**\n         * Gets the product root.\n         */\n        get productRoot(): string {\n            return this._productRootIncludingChild ?? this._productRoot;\n        }\n\n        /**\n         * Gets the suffix added to the product root.\n         */\n        get productRootChildSuffix(): string | undefined {\n            return this._productRootIncludingChild ? this._productRootIncludingChild.substring(this._productRoot.length) : undefined;\n        }\n\n        /**\n         * Checks if this represents a family product.\n         */\n        public isFamilyProduct() {\n            return this.sourcePattern.indexOf(OrderCodeRv.SEPARATOR) === -1;\n        }\n\n        /**\n         * Returns a new pattern string with the current position filled.\n         */\n        public fillPosition(value: string): string {\n            if (this._currentSegmentIndex === undefined) {\n                return this.sourcePattern;\n            }\n            if (this._currentSegmentIndex === 0) {\n                this._productRootIncludingChild = value;\n                return value;\n            }\n            this._segmentValue = value;\n            const parts = this.sourcePattern.split(OrderCodeRv.SEPARATOR);\n            parts[this._currentSegmentIndex] = this._segmentValue;\n            return parts.join(OrderCodeRv.SEPARATOR);\n        }\n\n        /**\n         * Gets the number of unconfigured positions.\n         */\n        public getOpenPositions(): number {\n            return this.sourcePattern.indexOf(OrderCodeRv.SEPARATOR) === -1 ? -1 : this.sourcePattern.match(/\\*/g)?.length ?? 0;\n        }\n\n    }\n\n    /**\n     * Service client for interacting with the QuickSelect backend API.\n     */\n    class QuickSelectService {\n\n        private staticHeaders: { [headerName: string]: string } = {};\n        private staticQueryParams: eh.QueryParams = {};\n\n        constructor(private baseUrl: string) {\n        }\n\n        /**\n         * Adds a static header.\n         */\n        public withStaticHeader(name: string, value: string): QuickSelectService {\n            this.staticHeaders[name] = value;\n            return this;\n        }\n\n        /**\n         * Adds a static query parameter.\n         */\n        public withStaticQueryParam(name: string, value: string): QuickSelectService {\n            this.staticQueryParams[name] = value;\n            return this;\n        }\n\n        /**\n         * Performs a configuration call.\n         */\n        public call(params: eh.QueryParams): JQuery.jqXHR {\n            $.extend(params, this.staticQueryParams);\n            let url = eh.URLHelper.buildUrl(this.baseUrl, eh.URLHelper.buildQueryString(params));\n            const settings: JQuery.AjaxSettings = {\n                'url': url,\n                'dataType': 'json'\n            };\n            if (this.staticHeaders) {\n                settings.headers = this.staticHeaders;\n            }\n            return $.ajax(settings);\n        }\n\n        /**\n         * Performs an order code check call.\n         */\n        public callOrderCodeCheck(params: eh.QueryParams): JQuery.jqXHR {\n            $.extend(params, this.staticQueryParams);\n            let url = eh.URLHelper.buildUrl(this.baseUrl + '/ordercodecheck', eh.URLHelper.buildQueryString(params));\n            const settings: JQuery.AjaxSettings = {\n                'url': url,\n                'dataType': 'json'\n            };\n            if (this.staticHeaders) {\n                settings.headers = this.staticHeaders;\n            }\n            return $.ajax(settings);\n        }\n\n    }\n\n    /**\n     * Configuration options for the QuickSelect component, typically passed via data attributes.\n     */\n    type QuickSelectConfiguration = {\n        'apiKey': string,\n        'childProducts': ChildProduct[],\n        //'configuratorUrl': string,\n        'globalErrorMessage': string,\n        'labelProductPreselection': string,\n        'language': string,\n        'productMaterialNumber': string,\n        'productRoot': string,\n        'salesOrganization': string,\n        'serviceUrl': string\n    };\n\n    /**\n     * Main response object from the QuickSelect configuration service.\n     */\n    type QuickSelectResponse = {\n        'language': string,\n        'kept': number,\n        'length': number,\n        'vkorg': string,\n        'order-code': QuickSelectResponse_OrderCode,\n        'product-feature'?: QuickSelectResponse_ProductFeature,\n        'recommendation'?: QuickSelectResponse_Recommendation[]\n    };\n\n    /**\n     * Response from the order code check service.\n     */\n    type QuickSelectResponse_AvailableOrderCodes = {\n        'vkorg': string,\n        'available-order-codes': string[]\n    };\n\n    /**\n     * Represents an order code pattern in the response.\n     */\n    type QuickSelectResponse_OrderCode = {\n        'pattern': string,\n    };\n\n    /**\n     * Represents a partial order code pattern at a specific position.\n     */\n    type QuickSelectResponse_OrderCodePartly = QuickSelectResponse_OrderCode & {\n        'position': number\n    };\n\n    /**\n     * Represents a product feature with its options.\n     */\n    type QuickSelectResponse_ProductFeature = {\n        'coding': string,\n        'label': string,\n        'options': QuickSelectResponse_Option[],\n        'order-code': QuickSelectResponse_OrderCodePartly\n    };\n\n    /**\n     * Represents a recommendation consisting of multiple product features.\n     */\n    type QuickSelectResponse_Recommendation = {\n        'product-features': QuickSelectResponse_ProductFeature[],\n        'order-code': QuickSelectResponse_OrderCode\n    };\n\n    /**\n     * Represents a selectable option for a product feature.\n     */\n    type QuickSelectResponse_Option = {\n        'coding': string,\n        'label': string,\n        'exit'?: boolean\n    };\n\n    /**\n     * Structure for tracking information sent to analytics.\n     */\n    type QuickSelectTrackingInfo = {\n        orderCode: string | undefined,\n        fullyConfigured: boolean,\n        currentStepIndex: number,\n        currentStepFeature: string | undefined\n    }\n\n    /**\n     * Represents a child product in a family product.\n     */\n    interface ChildProduct {\n        coding: string;\n        label: string;\n        materialNumber: string;\n        root: string;\n    }\n\n    /**\n     * Interface for product segment data used in templates and layers.\n     */\n    export interface IProductSegmentRv {\n        coding: string | undefined;\n        feature: string;\n        featureCoding: string;\n        index: number;\n        isLastLayer: boolean;\n        label: string;\n        options?: IProductSegmentRv[] | undefined;\n        orderCode?: OrderCodeRv,\n        root?: string | undefined;\n        option?: string | undefined;\n    }\n}\n","namespace eh {\n\n    export interface IScrollChangeDispatcherDescriptor {\n        scrollPanelClassName?: string | undefined;\n        scrollPanel?: HTMLElement | null;\n        scrollContentClassName?: string | undefined;\n        scrollContent?: HTMLElement | null;\n        contextElement: HTMLElement | null;\n    }\n\n    export class ScrollChangeDispatcher {\n\n        private isAtBottom: boolean;\n        private isAtTop: boolean;\n        private readonly scrollPanel: HTMLElement | null | undefined;\n        private readonly scrollContent: HTMLElement | null | undefined;\n        private scrollPanelHeight: number;\n        private scrollContentHeight: number;\n        private topListeners: {(isAtTop: boolean): void}[] = [];\n        private bottomListeners: {(isAtBottom: boolean): void}[] = [];\n\n        constructor(\n            private descriptor: IScrollChangeDispatcherDescriptor\n        ) {\n            this.scrollPanel = descriptor.scrollPanel ?? descriptor.contextElement?.querySelector(descriptor.scrollPanelClassName || '');\n            this.scrollPanel?.addEventListener('scroll', this.onScrollChange, this.scrollParams);\n            this.scrollContent = descriptor.scrollContent ?? this.scrollPanel?.querySelector(descriptor.scrollContentClassName || '');\n\n            if (!descriptor.contextElement || !this.scrollPanel || !this.scrollContent) return;\n\n            Breakpoints.getInstance().registerResizeListener(debounce(this.init, 100));\n            this.init();\n        }\n\n        public registerTopListener: (listener: (isAtTop: boolean) => void) => void = (listener: (isAtTop: boolean) => void): void => {\n            this.topListeners.push(listener);\n        };\n\n        public registerTopListenerAndFire: (listener: (isAtTop: boolean) => void) => void = (listener: (isAtTop: boolean) => void): void => {\n            this.registerTopListener(listener);\n            this.dispatchTopListener();\n        };\n\n        public unregisterTopListener: (listener: (isAtTop: boolean) => void) => void = (listener: (isAtTop: boolean) => void): void => {\n            this.topListeners.splice(this.topListeners.indexOf(listener));\n        };\n\n        public registerBottomListener: (listener: (isAtBottom: boolean) => void) => void = (listener: (isAtBottom: boolean) => void): void => {\n            this.bottomListeners.push(listener);\n        };\n\n        public registerBottomListenerAndFire: (listener: (isAtBottom: boolean) => void) => void = (listener: (isAtBottom: boolean) => void): void => {\n            this.registerBottomListener(listener);\n            this.dispatchBottomListener();\n        };\n\n        public unregisterBottomListener: (listener: (isAtBottom: boolean) => void) => void = (listener: (isAtBottom: boolean) => void): void => {\n            this.bottomListeners.splice(this.bottomListeners.indexOf(listener));\n        };\n\n        private dispatchTopListener(): void {\n            this.topListeners.forEach((listener: (isAtTop: boolean) => void): void => {\n                listener(this.isAtTop);\n            });\n        }\n\n        private dispatchBottomListener(): void {\n            this.bottomListeners.forEach((listener: (isAtBottom: boolean) => void): void => {\n                listener(this.isAtBottom);\n            });\n        }\n\n        private onScrollChange: () => void = (): void => {\n            // invalidate flags\n            this.invalidate();\n        };\n\n        public init: () => void = (): void => {\n            this.updateMetrics();\n            this.invalidate();\n        };\n\n        private updateMetrics(): void {\n            this.scrollPanelHeight = this.scrollPanel?.offsetHeight ?? NaN;\n            this.scrollContentHeight = this.scrollContent?.offsetHeight ?? NaN;\n        }\n\n        private invalidate: () => void = (): void => {\n            // determine scroll position\n            const currentScrollPos: number = this.scrollPanel?.scrollTop ?? NaN;\n            const maxScrollPos: number = this.scrollContentHeight - this.scrollPanelHeight;\n\n            if (maxScrollPos <= 0) {\n                if (!this.isAtTop || !this.isAtBottom) {\n                    this.isAtTop = true;\n                    this.isAtBottom = true;\n                    this.dispatchTopListener();\n                    this.dispatchBottomListener();\n                }\n                return;\n            }\n\n            if (!this.isAtTop && currentScrollPos <= 0 || this.isAtTop && currentScrollPos > 0) {\n                this.isAtTop = currentScrollPos <= 0;\n                this.dispatchTopListener();\n            }\n            if (!this.isAtBottom && currentScrollPos >= maxScrollPos || this.isAtBottom && currentScrollPos <= maxScrollPos) {\n                this.isAtBottom = currentScrollPos >= maxScrollPos;\n                this.dispatchBottomListener();\n            }\n\n        };\n\n        private get scrollParams(): any {\n            return !!eh.Modernizr?.passiveeventlisteners ? { passive: true } : {};\n        }\n\n        public dispose(): void {\n            this.scrollPanel?.removeEventListener('scroll', this.onScrollChange);\n            this.topListeners.forEach(l => this.unregisterTopListener(l));\n            this.bottomListeners.forEach(l => this.unregisterBottomListener(l));\n        }\n\n    }\n\n}","namespace eh {\n\n  export class SeamlessIFrame implements IMessageHandler {\n    \n    static init($base: JQuery<HTMLElement>): void {\n      $('.external.seamless-applicable iframe, .external.seamless iframe', $base).each((index, ifra) => {\n        new SeamlessIFrame((<HTMLIFrameElement> ifra));\n      });\n    }\n    \n    private $wrapper: JQuery<HTMLElement>;\n    private $iframe: JQuery<HTMLElement>;\n    private iWindow: Window;\n    public id : string;\n    private legacy : boolean;\n    private topMargin = 145 - 32; //wild guess -> not accurate: $('.eh-header--wrapper').height() || 0;\n\n    constructor(private ifra: HTMLIFrameElement) {\n      this.$iframe = $(ifra);\n      this.iWindow = ifra.contentWindow || window;\n      this.$wrapper = this.$iframe.closest('.external');\n      this.id = this.$iframe.attr(\"id\") || ('iframe-' + (new Date()).getTime() + '-' + Math.random()).replace(/[^a-z0-9\\-]/g, '');\n      this.$iframe.attr('id', this.id);\n      this.legacy = this.$wrapper.hasClass('legacy-message');// event.data as string not message\n\n\n      eh.MessageNexus.setListener(this.iWindow, this);\n      const iframeTop = this.iWindow.top;\n      if (iframeTop) {\n        $(iframeTop).on('load', () => { this.sendStateReq() });\n      }\n      this.sendStateReq();\n    }\n\n    private sendMsgLocal(m: Message) {\n      let data = this.legacy? m.asLegacyParam() : m;\n      this.iWindow.postMessage(data, '*');                \n    }\n    private sendStateReq() {\n      if(this.legacy) {\n        let m: Message = new Message('id');\n        m.putParam(\"id\", this.id);\n        this.sendMsgLocal(m);\n      } else {\n        let m: Message = new Message('eho:state');\n        this.sendMsgLocal(m);\n      }\n    }\n    private sendACK(org: Message) {\n      let m: Message = new Message('eho:applied');\n      if(this.legacy) {\n        m.putParam(\"id\", this.id);\n      }\n      this.sendMsgLocal(m);\n    }\n    // use MessageTunnel\n    public onMessage(message : Message) {\n      if(message.params['$$legacy'] !== undefined) {\n        this.legacy = true;\n      }\n      switch(message.method) {\n        case 'eho:refresh':\n        case 'refresh': {\n          this.sendStateReq();\n          break;\n        }\n        case 'eho:height': \n        case 'height': {\n          let val = message.params['height'];\n          if(val) {\n            let n: number = parseInt(val);\n            this.setHeight(n);\n          }\n          this.sendACK(message);\n          break;\n        }\n        case 'eho:scroll': \n        case 'scroll': {\n          let val = message.params['pos'];\n          if(val) {\n            let n: number = parseInt(val);\n            this.setScroll(n);\n          } else {\n            let n: number = 0;\n            this.setScroll(0);\n          }\n          this.sendACK(message);\n          break;\n        }\n        case 'eho:open-url': {\n          let title = message.params['title'];\n          let ref = message.params['url'];\n          if(ref) {\n            this.openUrl(ref, title);\n          }\n          this.sendACK(message);\n          break;\n        }\n      }\n    }\n\n    private openUrl(url:string, title?: string) {\n      let m: Message = new Message('*:open-url');\n      m.putParam('title', title || '');\n      m.putParam('url', url);\n      window.parent.postMessage(m, '*');\n    }\n\n    private setHeight(value: number) {\n      if(this.$iframe.is(':visible')) {\n        if(this.$wrapper.hasClass('seamless-applicable')) {\n          this.$wrapper.removeClass('seamless-applicable').addClass('seamless');\n          this.$iframe.attr('width','').css('visibility','visible');\n        }\n        if(this.$wrapper.hasClass('seamless')) {\n          let sto = this.$iframe.closest('.toggle');\n          this.$iframe.finish().animate({\n            'height': value + 32\n          });\n          this.scrollToToggle(sto);\n        }\n      }\n    }\n\n    private setScroll(value: number) {\n      if(this.$iframe.is(':visible')) {\n        let offs =  this.$iframe.offset() || null;\n        let offst = offs ? offs.top : 0;\n        if(value > 0) {\n          var h = this.$iframe.height() || 0;\n          offst  = offst + (h  * value / 100);\n        }\n        $('html,body').animate({\n          'scrollTop': Math.round(offst - this.topMargin)\n        }, 400);\n        // }\n      }\n    }\n\n    private scrollToToggle($elem: JQuery<Element>) {\n      if ($elem.length > 0 && !$elem.hasClass('searchhighlight-autoOpen')) {\n        let offs =  $elem.offset() || null;\n        let offst = offs ? offs.top : 0;\n        $('html,body').animate({\n          'scrollTop': Math.round(offst)\n        }, 400);\n      }\n    };\n\n  }  \n}\n","namespace eh {\n  \n  export class SearchFiltersLegacy {\n    \n    private static readonly classFilterActive = 'eh-filter-active';\n    private static readonly SELECTOR__SEARCH_FILTERS_LEGACY = '.eh-search-filter.is-legacy';\n    \n    static init($base: JQuery<HTMLElement>, isSnippetReq:boolean): void {\n      $base = $base.selfOrFind(SearchFiltersLegacy.SELECTOR__SEARCH_FILTERS_LEGACY);\n      if ($base.length === 0) {\n        return;\n      }\n      SearchFiltersLegacy.initFilterSelects($base, true);\n\n      if(!isSnippetReq) {\n        $base.on(cs.Snippet.EventIdPreReplace, ($event: cs.SnippetEventPreReplace) => {\n            const $select = $('select.marker-filter-select', $event.oldElement);\n            if ($select.closest(SearchFiltersLegacy.SELECTOR__SEARCH_FILTERS_LEGACY).length === 0) {\n              return;\n            }\n            $select.select2('destroy');\n\n            let oldReset = $('.eh-search-bar--clear-icon', $event.oldElement).first();\n            if(oldReset && oldReset.data('used') === 'yes') {\n              $('.eh-search-bar--clear-icon', $event.newElement).data('used', 'yes');\n            }\n            eh.ScrollPage.setScrollEnabled(true, 'eh-no-scroll--lt-medium eh-full-height--lt-medium');\n        });\n      }\n\n      /*\n      @FIXME: reflow issues should be obsolete since removal of page-height-restrictions (ios address-bar autohide)\n      const userAgent = window.navigator.userAgent;\n      let isMobileSafari = (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i)) !== null;\n      if(isMobileSafari && isSnippetReq && !eh.ScrollPage.getScrollRoot().hasClass('eh-no-scroll')) {\n        eh.ScrollPage.getScrollRoot().addClass('eh-no-scroll');\n        window.requestAnimationFrame(() => {\n          eh.ScrollPage.getScrollRoot().removeClass('eh-no-scroll');\n        });\n      }\n      */\n\n      const searchBar = $('.filterSidebar .eh-search-bar--inputs', $base).first();\n      if (searchBar.length !== 0) {\n        const input = searchBar.find('input[type=\"text\"]');\n        const $clearBt = searchBar.find('.eh-search-bar--clear-icon');\n        if (input.length !== 0) {\n          if (!input.val()) {\n            $clearBt.hide();\n            if($clearBt.data('used') === 'yes') {\n              $clearBt.data('used', '');\n              window.requestAnimationFrame(() => {\n                input.trigger('focus');\n              });\n            }\n          }\n          input.on('input', ($event: JQuery.TriggeredEvent) => {\n            if (!input.val()) {\n              $clearBt.hide();\n            } else {\n              $clearBt.show();\n            }\n          });\n          if (!input.val()) {\n            $clearBt.hide();\n          }\n          $clearBt.on('click', ($event: JQuery.TriggeredEvent) => {\n            $event.preventDefault();\n            $clearBt.data('used', 'yes');\n            input.val('');\n            input.trigger(\"change\");\n            input.trigger('focus');\n          });\n        }\n      }\n\n    }\n\n    private static initSelectTwo($select: JQuery<HTMLElement>) {\n      const opts: Select2.Options = {\n        allowClear: !$select.data('disallowResultClear'),\n        theme: 'endress',\n        width: '100%',\n        minimumResultsForSearch: $select.data('minResultsForSearch') || 6,\n        closeOnSelect: false,\n        placeholder: $select.data('placeholder') || 'PLACEHOLDER'\n      };\n  \n      if ($select.prop('multiple')) {\n        $.fn.select2.amd.require(\n            ['cs.FilterMultiSelectResultDecorator', 'cs.FilterMultiSelectionDecorator', 'cs.FilterMultiSelectCloseOnSelectDecorator', 'cs.FilterMultiSelectHierarchicalDecorator',\n              'cs.NoOpSelectionAdapter', \n              'select2/utils', 'select2/results', 'select2/selection/multiple', 'select2/selection/eventRelay', 'select2/selection/placeholder',\n              'select2/selection/allowClear', 'select2/dropdown', 'select2/dropdown/attachContainer', 'select2/dropdown/search', 'select2/dropdown/hidePlaceholder',\n              'select2/dropdown/minimumResultsForSearch'\n            ],\n            (FilterMultiSelectResultDecorator: object, FilterMultiSelectionDecorator: object, FilterMultiSelectCloseOnSelectDecorator: object, FilterMultiSelectHierarchicalDecorator: object,\n            NoOpSelectionAdapter: object, \n            S2Utils: S2.Utils, S2Results: object, S2MultipleSelection: object, S2EventRelay: object, S2Placeholder: object,\n            S2AllowClear: object, S2Dropdown: object, S2AttachContainer: object, S2DropdownSearch: object, S2HidePlaceholder: object,\n            S2MinimumResultsForSearch: object) => {\n              \n              const ResultAdapter = S2Utils.Decorate(S2Results, FilterMultiSelectResultDecorator);\n              \n              const SelectionAdapter = S2Utils.Decorate(\n                NoOpSelectionAdapter,\n                S2EventRelay\n              );\n          \n              let DropdownAdapter = S2Utils.Decorate(\n                  S2Utils.Decorate(\n                      S2Utils.Decorate(\n                          //S2Utils.Decorate(\n                              //S2Utils.Decorate(\n                                  S2Utils.Decorate(\n                                    S2Dropdown,\n                                    S2DropdownSearch\n                                  ),\n                               //   DropDownSearchPromptDecorator // see tracker#4146465 (IE11) before enable\n                              //),\n                          //    S2HidePlaceholder\n                          //),\n                          S2MinimumResultsForSearch\n                      ),\n                      FilterMultiSelectCloseOnSelectDecorator\n                  ),\n                  S2AttachContainer\n              );\n\n              if ($select.data('isHierarchical')) {\n                opts.minimumResultsForSearch = Infinity;\n                DropdownAdapter = S2Utils.Decorate(DropdownAdapter, FilterMultiSelectHierarchicalDecorator);\n              }\n          \n              $.extend(opts, {\n                closeOnSelect: false,\n                selectionAdapter: SelectionAdapter,\n                dropdownAdapter: DropdownAdapter,\n                resultsAdapter: ResultAdapter,\n                templateResult: function (result: Select2.OptionData): JQuery<Element> | string | null {\n                  if (result.id === undefined) {\n                    return '<span class=\"label clear\">' + result.text + '</span>'; // FIXME for what is this?\n                  } else if (result.id !== '') {\n                    return $(\n                        (($select.data('isHierarchical') && $(result.element).data('hasChild')) ? '<span class=\"caret\">▼</span>' : '')\n                        + '<div class=\"eh-product-filter--item-content eh-layout--h-box eh-layout--justify-s-between eh-layout--align-s-start eh-p-r\">\\n'\n                        +   '<div class=\"eh-layout--h-box eh-layout--align-s-start\">'\n                        +     '<label class=\"eh-product-filter--filter-checkbox eh-checkbox eh-checkbox--checkbox\">'\n                        +       `<input type=\"checkbox\" value=\"${ result.id }\" id=\"${ result.element.id }\"${ result.selected ? ' checked=\"checked\"' : '' }>`\n                        +       '<div class=\"eh-checkbox--indicator\"></div>'\n                        +       `${ result.text }`\n                        +     '</label>'\n                        +   '</div>'\n                        +   ($(result.element).data('count') ? `<label class=\"eh-label eh-p-v-s-2\n                      eh-p-r-xxlg-2--small eh-p-r-xxlg-2--x-small\">${ $(result.element).data('count') }</label>` : '')\n                        + '</div>'\n                    );\n                  }\n                  return null;\n                },\n                templateSelection: function (selection: { text: string } | undefined): string {\n                  return selection ? selection.text : 'templateSelection(data.text)';\n                }\n              });\n              $select.select2(opts);\n              if($select.data('select2').$container && $select.data('filterPlaceholder')) {\n                $('.select2-search__field', $select.data('select2').$container).attr('placeholder', $select.data('filterPlaceholder'));\n              }\n          });\n        }\n        else {\n          $.fn.select2.amd.require(\n            ['cs.FilterMultiSelectResultDecorator', 'cs.FilterMultiSelectionDecorator', 'cs.FilterMultiSelectCloseOnSelectDecorator', 'cs.FilterMultiSelectHierarchicalDecorator',\n              'cs.NoOpSelectionAdapter', 'cs.DropDownSearchPromptDecorator',\n              'select2/utils', 'select2/results', 'select2/selection/multiple', 'select2/selection/eventRelay', 'select2/selection/placeholder',\n              'select2/selection/allowClear', 'select2/dropdown', 'select2/dropdown/attachContainer', 'select2/dropdown/search', 'select2/dropdown/hidePlaceholder',\n              'select2/dropdown/minimumResultsForSearch'\n            ],\n            (FilterMultiSelectResultDecorator: object, FilterMultiSelectionDecorator: object, FilterMultiSelectCloseOnSelectDecorator: object, FilterMultiSelectHierarchicalDecorator: object,\n            NoOpSelectionAdapter: object, DropDownSearchPromptDecorator: object,\n            S2Utils: S2.Utils, S2Results: object, S2MultipleSelection: object, S2EventRelay: object, S2Placeholder: object,\n            S2AllowClear: object, S2Dropdown: object, S2AttachContainer: object, S2DropdownSearch: object, S2HidePlaceholder: object, S2MinimumResultsForSearch: object) => {\n\n              let DropdownAdapter = S2Utils.Decorate(\n                S2Utils.Decorate(\n                  S2Utils.Decorate(\n                    S2Utils.Decorate(\n                      S2Utils.Decorate(\n                        S2Dropdown,\n                        S2DropdownSearch\n                      ),\n                      DropDownSearchPromptDecorator\n                    ),\n                    S2MinimumResultsForSearch\n                  ),\n                  FilterMultiSelectCloseOnSelectDecorator\n                ),\n                S2AttachContainer\n              );\n\n\n              $.extend(opts, {\n                closeOnSelect: true,\n                dropdownAdapter: DropdownAdapter,\n              });\n              $select.select2(opts);\n              if($select.data('select2').$container && $select.data('filterPlaceholder')) {\n                $('.select2-search__field', $select.data('select2').$container).attr('placeholder', $select.data('filterPlaceholder'));\n              }\n            });\n        }\n    }\n    private static initFilterSelects($base: JQuery<HTMLElement>, isInitial: boolean) {\n      $('select.marker-filter-select', $base).each((_index, elem) => {\n        this.initSelectTwo($(elem));\n      })\n      .on('select2:opening', ($event) => {\n      })\n      .on('select2:open', ($event) => {\n        $('.select2-search__field').prop('focus', false);\n      })\n      .on('select2:closing', ($event) => {\n      })\n      .on('select2:close', ($event) => {\n      })\n      .on('select2:csReinit', ($event) => {\n        const select = $($event.target);\n        if(select && select.hasClass('marker-filter-select')) {\n          if(select.hasClass('select2-hidden-accessible')) {\n            select.select2('destroy');\n          }\n          if(!select.hasClass('eh--hide')) {\n            this.initSelectTwo(select); \n          }\n        }\n      });\n    \n      $('.tag-remove', $base).on('click', ($event) => {\n        $event.preventDefault();\n        const $el = $($event.currentTarget),\n            isSelect = $el.hasClass('rem-select'),\n            filterId = $el.data('id');\n        let $filter = $('[id=\"filter.' + filterId + (isSelect ? '[]' : '') + '\"]', $base);\n        \n        if ($filter.length === 0) {\n          $filter = $('[id=\"filter1.' + filterId + (isSelect ? '[]' : '') + '\"]', $base);\n        }\n        if (isSelect) {\n          $('option[value=\"' + $el.data('val') + '\"]', $filter).prop('selected', false);\n        }\n        else {\n          $filter.val('');\n        }\n        $filter.trigger('change');\n        eh.LoadingIndicator.showLoadingByEv($event);\n      });\n\n      \n      $('.trigger-filter-display', $base).on('click', ($event) => {\n        $event.preventDefault();\n        const filterControl: JQuery<HTMLElement> = $($event.currentTarget).closest('.marker-search-container').find('.eh-product-filter');\n        const isOpen: boolean = filterControl.hasClass(SearchFiltersLegacy.classFilterActive);\n        filterControl.toggleClass(SearchFiltersLegacy.classFilterActive, !isOpen);\n        eh.ScrollPage.setScrollEnabled(isOpen, 'eh-no-scroll--lt-medium eh-full-height--lt-medium');\n      });\n      \n      \n      $('.eh-product-filter--group-content', $base).on('click', ($event) => {\n        const $filter = $($event.currentTarget).closest('.eh-product-filter--group:not(.disabled)');\n        if ($filter.length === 0) {\n          return;\n        }\n\n        // inline boolean checkbox special case - no accordion effect\n        const $checkbox = $($event.currentTarget).find('.marker-inline-checkbox:visible');\n        if ($checkbox.length > 0) {\n          $checkbox.prop(\"checked\", !$checkbox.prop(\"checked\"));\n          $checkbox.trigger(\"change\");\n           return;\n          // $checkbox.prop(\"checked\", !$checkbox.prop(\"checked\"));\n          // cs.Snippet.ajaxSubmitForm($checkbox, $event);\n          // window.setTimeout(() => {\n            // SearchFiltersLegacy.makeActive($('.eh-product-filter--group:not(.disabled):first', $base));\n          //}, 500);\n          //return;\n        }\n        $event.preventDefault();\n\n        if ($filter.hasClass('active')) {\n          SearchFiltersLegacy.makeInActive($filter)\n        }\n        else {\n          SearchFiltersLegacy.makeActive($filter);\n        }\n      });\n\n        // inline boolean checkbox special case - no accordion effect\n        $('.eh-product-filter--item-content .marker-inline-checkbox:visible', $base).on('click', ($event) => {\n          const $checkbox = $($event.currentTarget).find('');\n          if ($checkbox.length > 0) {\n            $checkbox.prop(\"checked\", !$checkbox.prop(\"checked\"));\n            $checkbox.trigger(\"change\");\n            return;\n          }\n        });\n\n      \n      if (isInitial) {\n        window.setTimeout(() => {\n          const toOpen = $('[data-restore-open]', $base);\n          if (toOpen.length !== 0) {\n            SearchFiltersLegacy.makeActive(toOpen.first().closest('.eh-product-filter--group'));\n          } else {\n            SearchFiltersLegacy.makeActive($('.eh-product-filter--group:not(.disabled):first', $base));\n          }\n        }, 200);\n      }\n    };\n    \n    private static makeActive($filter: JQuery<HTMLElement>) {\n      if ($filter.find('.disabled').length > 0) {\n        return;\n      }\n      $filter.toggleClass('active', true);\n      $filter.find('select.marker-filter-select').select2('open');\n      $filter.find(`.${eh.DatePicker.CLS_MARKER_DATEPICKER}`).show();\n      $filter.find(`.${eh.DatePicker.CLS_MARKER_DATEPICKER_CONTROL}`).show();\n  \n      $filter.siblings('.active').each((_index, el) => {\n        SearchFiltersLegacy.makeInActive($(el));\n      });\n    }\n  \n    private static makeInActive($filter: JQuery<HTMLElement>) {\n      $filter.toggleClass('active', false);\n      $filter.find('select.marker-filter-select').select2('close');\n      $filter.find(`.${eh.DatePicker.CLS_MARKER_DATEPICKER}`).hide();\n      $filter.find(`.${eh.DatePicker.CLS_MARKER_DATEPICKER_CONTROL}`).hide();\n    }\n    \n  }\n  \n}\n","namespace eh {\n  \n  export class SiteSearch {\n  \n    private static readonly CLASS__SEARCH_SHOW_DROPDOWN = 'eh-header-search-bar--has-focus';\n    private static readonly CLASS__ACTIVE = 'focus';\n    private static readonly CLASS__DISABLED = 'disabled';\n    private static readonly CLASS__HIDDEN = 'eh--hide';\n    \n    private static readonly SELECTOR__BACK_ICON = '.eh-header-search-bar--back-button .ehel-icon';\n    private static readonly SELECTOR__HELP = '.marker-searchbar-dropdown-help';\n    private static readonly SELECTOR__HISTORY_CONTAINER = '.marker-dropdown-list-history';\n    private static readonly SELECTOR__HISTORY_LIST = '.marker-searchbar-dropdown-history-list';\n    private static readonly SELECTOR__HISTORY_LIST_ITEM_TEMPLATE = '.marker-searchbar-dropdown-historyitem-template';\n    private static readonly SELECTOR__CLUE_CONTAINER = '.marker-history-dropdown-clue';\n    private static readonly SELECTOR__LIST_CONTAINER = '.marker-history-result-container';\n    private static readonly SELECTOR__PROGRESS_INDICATOR = '.eh-header-search-bar--progress-indicator';\n    private static readonly SELECTOR__QUICKRESULTS_CONTAINER = '.marker-quicksearch-container';\n    private static readonly SELECTOR__QUICKRESULTS = '.marker-quicksearch-results';\n    private static readonly SELECTOR__RESULT_LIST_ITEM = '.eh-result-list--item';\n    private static readonly SELECTOR__RESULT_LIST_ITEM_CONTENT = '.eh-result-list--item-content';\n    private static readonly SELECTOR__SEARCH_FORM = 'form';\n    private static readonly SELECTOR__SEARCH_INDICATOR = '.eh-header-search-bar--search-indicator';\n    private static readonly SELECTOR__SEARCH_INPUT = '.eh-header-search-bar--filter-input';\n    private static readonly SELECTOR__SEARCH_RESET_BUTTON = '.eh-header-search-bar--clear-search-button';\n    private static readonly SELECTOR__SEARCH_RESULT_CONTAINER = '.marker-search-result-container';\n    private static readonly SELECTOR__SEARCH_RESULTS = '.eh-header-search-results';\n    private static readonly SELECTOR__SEARCH_SUBMIT_BUTTON = '.eh-SearchSubmit';\n    private static readonly SELECTOR__SEARCH_SUBMIT_BUTTON_MOBILE = '.eh-header-search-bar--submit-search-button-mobile';\n    private static readonly SELECTOR__SEARCH_TERM = '.marker-text-term-content';\n    private static readonly SELECTOR__SEARCH_TERM_ITEM = '.marker-item-text';\n    private static readonly SELECTOR__SITE_SEARCH = '.eh-siteSearch';\n\n    private static readonly SELECTOR__DROPDOWN_WRAPPER = '.eh-header-search-results';\n    private static readonly SELECTOR__DROPDOWN_CONTENT = '.eh-search-bar-results--transform-content';\n\n    public static uiStateSupport: eh.UIObservableSupport = new UIObservableSupport(UIStateChanged.uiStateSearchPanel);\n\n    public static init($base: JQuery<HTMLElement>, _isSnippetRequest: boolean = false): void {\n      //console.log('SiteSearch.init', _isSnippetRequest);\n      const $siteSearchElem = $base.selfOrFind(SiteSearch.SELECTOR__SITE_SEARCH).emptyToOptional();\n      if (!$siteSearchElem) {\n        return;\n      }\n      new SiteSearch($siteSearchElem);\n  \n      const globalSearchBar: JQuery<HTMLElement> = $('.eh-header-search-bar', $base);\n      const viewTargetContainerMobile: JQuery<HTMLElement> = $('.eh-mobile-search-target-container', $base);\n      const viewTargetContainerDesktop: JQuery<HTMLElement> = $('.eh-desktop-search-target-container', $base);\n  \n      eh.Breakpoints.getInstance().registerViewTypeListener((viewType: BreakPointViewType): void => {\n        // transplant the search component into view-context.\n        // we need to place the search inside the page when viewtype is mobile\n        // because the header is removed from the page.\n        switch (true) {\n          case viewType === BreakPointViewType.MOBILE:\n            globalSearchBar.appendTo(viewTargetContainerMobile);\n            break;\n          case viewType === BreakPointViewType.DESKTOP:\n            globalSearchBar.appendTo(viewTargetContainerDesktop);\n            break;\n        }\n      });\n    }\n    \n    private readonly history: HistoryStorage;\n  \n    private readonly $backIcon: JQuery<HTMLElement>;\n    private readonly $document: JQuery<HTMLElement>;\n    private readonly $form: JQuery<HTMLFormElement>;\n    private readonly $input: JQuery<HTMLInputElement>;\n    private readonly $progressIndicator: JQuery<HTMLElement>;\n    private readonly $searchButton: JQuery<HTMLElement>;\n    private readonly $searchButtonMobile: JQuery<HTMLElement>;\n    private readonly $searchIndicator: JQuery<HTMLElement>;\n    private readonly $resetButton: JQuery<HTMLElement>;\n    private readonly $searchResultContainer?: JQuery<HTMLElement>;\n    \n    private readonly $helpContainer: JQuery<HTMLElement>;\n    private readonly $termItem: JQuery<HTMLElement>;\n    private readonly $listContainer: JQuery<HTMLElement>;\n    private readonly $historyContainer: JQuery<HTMLElement>;\n    private readonly $historyClueContainer: JQuery<HTMLElement>;\n    private readonly $quickResultsContainer: JQuery<HTMLElement>;\n    private readonly $historyList: JQuery<HTMLElement>;\n    private readonly $historyListItemTemplate: JQuery<HTMLElement>;\n    private readonly $searchResults: JQuery<HTMLElement>;\n\n    private readonly $dropdownWrapper: JQuery<HTMLElement>;\n    private readonly $dropdownContent: JQuery<HTMLElement>;\n\n    private readonly quickSearchUrl: string;\n    private readonly snippetUrl?: string;\n  \n    private $activeItemContainer: JQuery<HTMLElement> = $('.eh-header-search-results');\n    private open: boolean = false;\n    private inputRegistered: boolean;\n    private quickSearchTimeoutId: number = -1;\n    private jqXHR: JQuery.jqXHR | null;\n    private isInputMouseDown: boolean = false;\n  \n    private _valid: boolean = false;\n    private setValid(value: boolean) {\n      this._valid = value;\n      this.$form.data('formValid', this._valid);\n    }\n  \n    public isValid(): boolean {\n      return this._valid;\n    }\n    \n    public constructor(private readonly $elem: JQuery<HTMLElement>) {\n      //console.log('new eh.SiteSearch');\n      this.history = new HistoryStorage();\n      this.$document = $(document.body);\n      this.$form = $elem.selfOrFind(SiteSearch.SELECTOR__SEARCH_FORM) as JQuery<HTMLFormElement>;\n      this.$backIcon = $(SiteSearch.SELECTOR__BACK_ICON, $elem);\n      this.$input = $(SiteSearch.SELECTOR__SEARCH_INPUT, $elem);\n      this.$progressIndicator = $(SiteSearch.SELECTOR__PROGRESS_INDICATOR, $elem);\n      this.$searchButton = $(SiteSearch.SELECTOR__SEARCH_SUBMIT_BUTTON, $elem);\n      this.$searchButtonMobile = $(SiteSearch.SELECTOR__SEARCH_SUBMIT_BUTTON_MOBILE, $elem);\n      this.$searchIndicator = $(SiteSearch.SELECTOR__SEARCH_INDICATOR, $elem);\n      this.$resetButton = $(SiteSearch.SELECTOR__SEARCH_RESET_BUTTON, $elem);\n      this.$searchResultContainer = $(SiteSearch.SELECTOR__SEARCH_RESULT_CONTAINER, ':root').emptyToOptional();\n      \n      this.$searchResults = $(SiteSearch.SELECTOR__SEARCH_RESULTS, ':root');\n      this.$helpContainer = $(SiteSearch.SELECTOR__HELP, this.$searchResults);\n      this.$termItem = $(SiteSearch.SELECTOR__SEARCH_TERM_ITEM, $elem);\n      this.$listContainer = $(SiteSearch.SELECTOR__LIST_CONTAINER, ':root');\n      this.$quickResultsContainer = $(SiteSearch.SELECTOR__QUICKRESULTS_CONTAINER, this.$searchResults);\n      this.$historyContainer = $(SiteSearch.SELECTOR__HISTORY_CONTAINER, this.$searchResults);\n      this.$historyClueContainer = $(SiteSearch.SELECTOR__CLUE_CONTAINER, this.$searchResults);\n      this.$historyList = $(SiteSearch.SELECTOR__HISTORY_LIST, this.$historyContainer);\n      this.$historyListItemTemplate = $(SiteSearch.SELECTOR__HISTORY_LIST_ITEM_TEMPLATE, this.$historyList).remove();\n\n      this.$dropdownWrapper = $(SiteSearch.SELECTOR__DROPDOWN_WRAPPER, ':root');\n      this.$dropdownContent = $(SiteSearch.SELECTOR__DROPDOWN_CONTENT, ':root');\n\n      this.quickSearchUrl = this.$form.data('qsUrl');\n      this.snippetUrl = this.$searchResultContainer?.data('snippetUrl');\n\n      \n      this.setTerm(this.getTerm());\n      this.setValid(SiteSearch.isTermValid(this.getTerm()));\n      this.prepareHistoryTerms();\n      this.registerControls();\n      this.updateState();\n      //Breakpoints.getInstance().registerChangeListener(this.updatePageBehaviour);\n      SiteSearch.uiStateSupport.init($elem[0])\n      NavigationController.uiStateSupport.registerUIStateListener(this.onMainNavChanged);\n    }\n    \n    private updateState() {\n      const termIsEmpty = this.isTermEmpty();\n      const historyNotEmpty = this.history.getTerms().length > 0;\n      //console.log('updateState', 'isValid', this.isValid(), 'termIsEmpty', termIsEmpty, 'historyNotEmpty', historyNotEmpty);\n      this.$resetButton.toggleClass(SiteSearch.CLASS__HIDDEN, termIsEmpty);\n      this.$searchButtonMobile.toggleClass(SiteSearch.CLASS__HIDDEN, !termIsEmpty);\n      if (this.open) {\n        const showHelp = !termIsEmpty && !this.isValid();\n        this.$helpContainer.toggleClass(SiteSearch.CLASS__HIDDEN, !showHelp);\n        const showHistory = termIsEmpty && historyNotEmpty;\n        const showQuickResults = this.isValid();\n        this.$historyContainer.toggleClass(SiteSearch.CLASS__HIDDEN, !showHistory);\n        this.$historyClueContainer.toggleClass(SiteSearch.CLASS__HIDDEN, !showHistory);\n        const showListContainer = showHistory || showQuickResults;\n        this.$listContainer.toggleClass(SiteSearch.CLASS__HIDDEN, !showListContainer);\n        this.$progressIndicator.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n        this.$quickResultsContainer.toggleClass(SiteSearch.CLASS__HIDDEN, !showQuickResults);\n        this.$searchButton.toggleClass(SiteSearch.CLASS__DISABLED, !this.isValid());//toggleClass(SiteSearch.CLASS__HIDDEN, false).\n        this.$searchIndicator.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n        this.$termItem.toggleClass(SiteSearch.CLASS__HIDDEN, !this.isValid());\n        this.$termItem.selfOrFind(SiteSearch.SELECTOR__SEARCH_TERM).text(this.getTerm());\n      }\n      else {\n          this.$helpContainer.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n          this.$historyContainer.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n          this.$historyClueContainer.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n          this.$listContainer.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n          this.$progressIndicator.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n          this.$quickResultsContainer.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n          this.$searchButton.toggleClass(SiteSearch.CLASS__DISABLED, true);//.toggleClass(SiteSearch.CLASS__HIDDEN, termIsEmpty)\n          this.$searchIndicator.toggleClass(SiteSearch.CLASS__HIDDEN, !termIsEmpty);\n          this.$termItem.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n      }\n    }\n    \n    private isTermEmpty() {\n      return this.getTerm().length === 0;\n    }\n    \n    private registerControls() {\n      //console.log('registerControls');\n      this.$form.on('submit', ($event) => {\n        //console.log('handle $form submit');\n        if (!this.isValid()) {\n          $event.preventDefault();\n          return;\n        }\n        else {\n          this.history.addTerm(this.getTerm());\n          window.setTimeout(() => { // separate event flow\n            this.prepareHistoryTerms();\n          }, 0);\n        }\n        /*\n        TODO: Find better solution to get rid of unwanted automatically added parameters\n        */\n        const unwantedParameterScopes = ['filter.', 'd.', 'e.', 's.', 'sa.', 'w.', 'leadsource'];\n        this.$form.find('input[type=\"hidden\"]').filter((_index, el) => {\n          return unwantedParameterScopes.filter(v => $(el).attr('name')?.indexOf(v) === 0).length > 0;\n        }).remove();\n        if (this.$searchResultContainer) {\n          $event.preventDefault();\n          this.doSearch();\n          this.closePanel();\n        }\n      }).data('formValid', this.isValid());\n  \n      this.$resetButton.on('click', ($event) => {\n        //console.log('handle $resetButton click');\n        $event.preventDefault();\n        this.setTerm('');\n        this.activateInput();\n        this.updateState();\n      });\n      \n      this.$elem.on('focusin', this.handleSearchFocusIn);\n      this.$input.on('focusout', this.handleSearchFocusOut);\n      \n      this.addItemHandlers(this.$termItem);\n      \n      this.$backIcon.on('click', ($event) => {\n        //console.log('handle $backIcon click');\n        $event.preventDefault();\n        this.closePanel();\n      });\n\n      this.$input.on('mousedown', this.onInputMouseDown);\n\n      $(':root').on(HEADER_EVENTS.DOM_MUTATION, this.syncDropdownPosition);\n\n    }\n\n    private syncDropdownPosition: (e: JQuery.TriggeredEvent, metrics: IHeaderMetrics) => void = (e: JQuery.TriggeredEvent, metrics: IHeaderMetrics): void => {\n      if(metrics?.visibleHeaderHeight) {\n        this.$dropdownWrapper.css('top', `${metrics.visibleHeaderHeight}px`);\n        //this.$dropdownContent.css('padding-top', `${metrics.safetyGap}px`);\n      }\n    };\n    \n    private handleSearchFocusIn = () => {\n      //console.log('handleSearchFocusIn');\n      if (this.getTerm()) {\n        const len = this.getTerm().length;\n        this.$input.get(0)?.setSelectionRange(len, len);\n        if (this.$termItem.length) {\n          SiteSearch.setListItemActive(this.$termItem);\n        }\n      }\n      if(!this.$input.parent().hasClass('focus-click')) {\n        this.$input.parent().toggleClass('focus', true);\n      }\n      this.openPanel();\n    };\n\n    private handleSearchFocusOut = () => {\n      this.$input.parent().toggleClass('focus', false);\n      this.$input.parent().toggleClass('focus-click', false);\n    }\n\n    \n    private handleInputInput = () => {\n      const term = this.getTerm();\n      //console.log('handleInputInput', term);\n      this.setValid(SiteSearch.isTermValid(term));\n      this.updateState();\n      if (this.isValid()) {\n        this.queueQuickSearch(term);\n      }\n    };\n  \n    private addInputHandlers() : void {\n      //console.log('addInputHandlers');\n      if (this.inputRegistered) {\n        //console.log('addInputHandlers called though inputRegistered');\n        return;\n      }\n      this.inputRegistered = true;\n      this.$document.on('click', this.handleDocumentClick);\n      this.$document.on('keydown', this.handleDocumentKeyDown);\n    }\n  \n    private removeInputHandlers() : void {\n      //console.log('removeInputHandlers');\n      if (!this.inputRegistered) {\n        //console.log('removeInputHandlers called though !inputRegistered');\n        return;\n      }\n      this.inputRegistered = false;\n      this.$document.off('click', this.handleDocumentClick);\n      this.$document.off('keydown', this.handleDocumentKeyDown);\n    }\n    \n    private doSearch() {\n      //console.log('doSearch', this.getTerm(), '$searchResultContainer', this.$searchResultContainer);\n      this.cancelSearch();\n      this.showLoadingIndicator();\n      if (!this.$searchResultContainer) {\n        this.$form.trigger('submit');\n        return;\n      }\n      const formData = this.$form.formSerialize();\n      const url = document.location.href;\n      const params = $.extend({}, eh.URLHelper.buildQueryParamMap(eh.URLHelper.getQueryString(url)), eh.URLHelper.buildQueryParamMap(formData));\n      history.pushState(history.state, '', eh.URLHelper.buildUrl(url, eh.URLHelper.buildQueryString(params)));\n      this.jqXHR = $.ajax({\n        'url': this.snippetUrl,\n        'method': 'get',\n        'data': formData,\n        'beforeSend': ()  => {\n        }\n      }).done((data) => {\n        //console.log('search result');\n        const resultData = $(data).find('data').text();\n        const $resultElem = $(resultData).selfOrFind(SiteSearch.SELECTOR__SEARCH_RESULT_CONTAINER).children();\n        this.$searchResultContainer?.empty().append($resultElem);\n        SiteSearch.notifyReplaced($resultElem);\n      })\n      .fail(function(/*jqXHR, textStatus, errorThrown*/) {\n        //console.log('search failure');\n      })\n      .always(() => {\n        this.hideLoadingIndicator();\n      });\n      //console.log('started jqXHR search');\n    }\n    \n    private openPanel() {\n      //console.log('openPanel');\n      if (this.open) {\n        //console.log('aborting openPanel');\n        return;\n      }\n\n      this.open = true;\n      this.$elem.off('focusin', this.handleSearchFocusIn);\n      this.$input.on('input', this.handleInputInput);\n\n\n      this.addInputHandlers();\n      this.updateState();\n      this.activateInput();\n      this.$document.toggleClass(SiteSearch.CLASS__SEARCH_SHOW_DROPDOWN, true);\n      /*\n      if (!this.getTerm()) {\n        SiteSearch.setListItemActive(this.$historyContainer.find(SiteSearch.SELECTOR__RESULT_LIST_ITEM).first(), true);\n      }\n      */\n\n      if (this.isValid()) {\n        this.queueQuickSearch(this.getTerm());\n      }\n      this.initPageBehaviour();\n      SiteSearch.uiStateSupport.dispatch(UIStateValue.OPENED);\n\n     }\n\n     // viewmode mobile:\n     // when search gets triggered while the search-slot isnt sticky\n     // we force the sticky state by animation.\n     private initPageBehaviour() {\n       const inputTop: number = this.$input.get(0)?.getBoundingClientRect().top ?? 0;\n       if (inputTop > 0 && Breakpoints.getInstance().isMobile) {\n         ScrollPage.setScrollEnabled(false, 'eh-no-scroll--lt-large eh-layout--pos-fixed--lt-large eh-full-height--lt-large');\n         //debounce((): void => { ScrollPage.scrollToAnimated(inputTop + ScrollPage.getScrollPosition(); }, 500)();\n       } else {\n         // mobile views are sealed\n         ScrollPage.setScrollEnabled(false, 'eh-no-scroll--lt-large eh-layout--pos-fixed--lt-large eh-full-height--lt-large');\n       }\n     }\n\n     private onMainNavChanged: (last: UIStateChanged, current: UIStateChanged) => void = (last: UIStateChanged, current: UIStateChanged): void => {\n      if(eh.Breakpoints.getInstance().isMobile) {\n        return;\n      }\n      //console.log('search rec:', current.state);\n      if(current.state == UIStateValue.OPENED) {\n        this.closePanel();\n      }\n     }\n\n     private updatePageBehaviour: (old: Breakpoint, current: Breakpoint) => void = (_old: Breakpoint, current: Breakpoint): void => {\n      if (this.open && current.isMobile) {\n        debounce(() => {\n          const inputTop: number = this.$input.get(0)?.getBoundingClientRect().top ?? 0;\n          if (inputTop > 0) {\n            ScrollPage.scrollToAnimated(inputTop + ScrollPage.getScrollPosition());\n          }\n        }, 100)();\n      }\n     };\n    \n    private closePanel() {\n      //console.log('closePanel');\n      if (!this.open) {\n        //console.log('aborting closePanel');\n        return;\n      }\n      this.open = false;\n      this.$input.off('input', this.handleInputInput);\n      this.$elem.on('focusin', this.handleSearchFocusIn);\n      this.removeInputHandlers();\n      this.$input.trigger('blur');\n      window.setTimeout(() => {  // don't hide immediately, otherwise ie11 will not follow click\n        if (this.open) {\n          //console.log('conflicting closePanel');\n        }\n        this.updateState();\n        ScrollPage.setScrollEnabled(true, 'eh-no-scroll--lt-large eh-layout--pos-fixed--lt-large eh-full-height--lt-large');\n        this.$document.toggleClass(SiteSearch.CLASS__SEARCH_SHOW_DROPDOWN, false);\n        SiteSearch.uiStateSupport.dispatch(UIStateValue.CLOSED);\n      }, 200);\n    }\n  \n    private showLoadingIndicator() {\n      // @TODO: NYI\n      // eh.LoadingIndicator.showLoading(this.$searchButton);\n      this.$progressIndicator.toggleClass(SiteSearch.CLASS__HIDDEN, false);\n      this.$resetButton.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n    }\n  \n    private hideLoadingIndicator() {\n      // @TODO: NYI\n      // eh.LoadingIndicator.hideLoading();\n      this.$progressIndicator.toggleClass(SiteSearch.CLASS__HIDDEN, true);\n      this.$resetButton.toggleClass(SiteSearch.CLASS__HIDDEN, this.isTermEmpty());\n    }\n    \n    private getTerm(): string {\n      return '' + this.$input.val();\n    }\n  \n    private setTerm(term: string) {\n      this.$input.val(term);\n      this.setValid(SiteSearch.isTermValid(term));\n    }\n    \n    private cancelSearch() {\n      if (this.quickSearchTimeoutId !== -1) {\n        //console.log('cancelling timeout', this.quickSearchTimeoutId);\n        window.clearTimeout(this.quickSearchTimeoutId);\n        this.quickSearchTimeoutId = -1;\n      }\n      if (this.jqXHR) {\n        //console.log('aborting jqXHR');\n        this.jqXHR.abort();\n        this.jqXHR = null;\n      }\n    }\n  \n    private queueQuickSearch(term: string): void {\n      const delay = 400;\n      this.cancelSearch();\n      this.quickSearchTimeoutId = window.setTimeout(() => {\n        this.quickSearchTimeoutId = -1;\n        //console.log('executing quicksearch');\n        this.showLoadingIndicator();\n        this.jqXHR = $.ajax({\n          'url': this.quickSearchUrl,\n          'method': 'get',\n          'data': {\n            'filter.quicksearch': term\n          },\n          'beforeSend': ()  => {\n          }\n        }).done((data) => {\n          //console.log('quicksearch result');\n          const $resultData = $(data).selfOrFind(SiteSearch.SELECTOR__QUICKRESULTS);\n          $('.eh-result-list--item', $resultData).each((_i, el) => {\n            const $el = $(el);\n            this.addItemHandlers($el);\n          });\n          this.$quickResultsContainer.children().remove();\n          this.$quickResultsContainer.append($resultData);\n          SiteSearch.notifyReplaced($resultData);\n        })\n        .fail((jqXHR, textStatus, errorThrown) => {\n          //console.log('quicksearch failure', errorThrown);\n          if (errorThrown !== 'abort') {\n            this.$quickResultsContainer.children().remove();\n          }\n        })\n        .always(() => {\n          this.hideLoadingIndicator();\n        });\n        //console.log('started jqXHR quicksearch');\n      }, delay);\n      //console.log('queueing quicksearch', this.quickSearchTimeoutId);\n    }\n    \n    private activateInput() {\n      //console.log('activateInput');\n      this.$input.trigger('focus');\n    }\n    \n    private handleDocumentKeyDown = ($event: JQuery.TriggeredEvent) => {\n      //console.log('handleDocumentKeyDown', $event.key);\n      switch ($event.key) {\n        case 'Enter':// 13 enter\n          const term = this.invokeActive(true);\n          if (term === true) {\n            // default link behaviour\n          }\n          else {\n            $event.preventDefault();\n            let $trackingTarget;\n            if (term) {\n              this.setTerm(term);\n              $trackingTarget = this.getActiveItem();\n            }\n            else {\n              $trackingTarget = this.$termItem;\n            }\n            Tracking.injectTrackingEvent({}, $trackingTarget);\n            this.$form.trigger('submit');\n          }\n          break;\n        case 'Escape': // 27 ESC\n          // fallthrough\n        case 'Tab': // 9 TAB\n          this.cancelSearch();\n          $event.preventDefault();\n          this.closePanel();\n          // COM-1779 evil hack \n          $('.eh-login-button:visible').focus();\n          break;\n        case 'ArrowUp': // 38 arrow UP\n          $event.preventDefault();\n          this.selectAboveItem();\n          break;\n        case 'ArrowDown': // 40 arrow DOWN\n          $event.preventDefault();\n          this.selectBelowItem();\n          break;\n        case 'ArrowLeft':\n          if (document.activeElement !== this.$input.get(0)) {\n            $event.preventDefault();\n            this.selectLeftItem();\n          }\n          break;\n        case 'ArrowRight':\n          if (document.activeElement !== this.$input.get(0)) {\n            $event.preventDefault();\n            this.selectRightItem();\n          }\n          break;\n        case 'Backspace':\n          if (!this.$input.is(':focus')) { // prevent history-back\n            $event.preventDefault();\n          }\n          break;\n      }\n    };\n\n    private onInputMouseDown = ($event: JQuery.TriggeredEvent) => {\n      this.isInputMouseDown = true;\n      this.$input.parent().toggleClass('focus-click', true);\n      this.$input.parent().toggleClass('focus', false);\n    };\n\n    private handleDocumentClick = ($event: JQuery.TriggeredEvent) => {\n      //console.log('handleDocumentClick');\n      if (this.isInputMouseDown) {\n        this.isInputMouseDown = false;\n        return;\n      }\n      if (eh.Breakpoints.getInstance().isMobile) {\n        return;\n      }\n      if (!$($event.target).parents().is(this.$elem)) {\n        this.closePanel();\n      }\n    };\n\n    private getItems(): JQuery<HTMLElement> {\n      return $(SiteSearch.SELECTOR__RESULT_LIST_ITEM, this.$activeItemContainer).filter(':visible');\n    }\n    \n    private selectBelowItem(): void {\n      const $items = this.getItems();\n\n      const $currentActive = $items.filter((_index, el) => SiteSearch.isListItemActive($(el)));\n      const lastIndex = $items.index($currentActive);\n      if (lastIndex === $items.length - 1) {\n        return;\n      }\n\n      SiteSearch.setListItemInactive($currentActive);\n      const newIndex = lastIndex + 1;\n      SiteSearch.setListItemActive($items.eq(newIndex));\n\n      this.updateState();\n    }\n  \n    private selectAboveItem(): void {\n      const $items = this.getItems();\n      //console.log('selectAboveItem', $items.length);\n\n      const $currentActive = $items.filter((_index, el) => SiteSearch.isListItemActive($(el)));\n      const lastIndex = $items.index($currentActive);\n\n      if (lastIndex < 0) {\n        return;\n      }\n\n      if (lastIndex === 0) {\n        SiteSearch.setListItemInactive($currentActive);\n        this.activateInput();\n        return;\n      }\n\n      SiteSearch.setListItemInactive($currentActive);\n      const newIndex = lastIndex - 1;\n      SiteSearch.setListItemActive($items.eq(newIndex));\n      this.updateState();\n    }\n\n    private getElementAndBounds($el: JQuery<HTMLElement>): IQSElementBounds[] {\n      const result: IQSElementBounds[] = [];\n      $el.each((_idx: number, el: HTMLElement): void => {\n        const bounds: DOMRect = el.getBoundingClientRect();\n        result.push({\n          top: bounds.top,\n          left: bounds.left,\n          right: bounds.right,\n          el: $(el)\n        });\n      });\n      return result;\n    }\n\n    private selectLeftItem(): void {\n      const $currentActive = this.getActiveItem();\n      const currentBounds: IQSElementBounds | undefined = this.getElementAndBounds($currentActive).pop();\n      const elementBounds: IQSElementBounds[] = this.getElementAndBounds(this.getItems());\n\n      if (!!currentBounds) {\n        const $nextNeighbors: IQSElementBounds[] = elementBounds\n            .filter(e => e.left < currentBounds.left && e.right < currentBounds.right);\n        const $nextNeighbor: IQSElementBounds | undefined = $nextNeighbors\n            .filter(e => e.top >= currentBounds.top).shift();\n        const $result: JQuery<HTMLElement> | undefined = $nextNeighbor?.el ?? $nextNeighbors.pop()?.el;\n\n        if (!!$result) {\n          SiteSearch.setListItemInactive($currentActive);\n          SiteSearch.setListItemActive($result);\n        }\n      }\n    }\n\n    private selectRightItem(): void {\n      const $currentActive = this.getActiveItem();\n      const currentBounds: IQSElementBounds | undefined = this.getElementAndBounds($currentActive).pop();\n      const elementBounds: IQSElementBounds[] = this.getElementAndBounds(this.getItems());\n\n      if (!!currentBounds) {\n        const $nextNeighbors: IQSElementBounds[] = elementBounds\n            .filter(e => e.left > currentBounds.left && e.right > currentBounds.right);\n        const $nextNeighbor: IQSElementBounds | undefined = $nextNeighbors\n            .filter(e => e.top >= currentBounds.top).shift();\n        const $result: JQuery<HTMLElement> | undefined = $nextNeighbor?.el ?? $nextNeighbors.pop()?.el;\n\n        if (!!$result) {\n          SiteSearch.setListItemInactive($currentActive);\n          SiteSearch.setListItemActive($result);\n        }\n      }\n    }\n  \n    private invokeActive(byKey: boolean): string | boolean {\n      //console.log('invokeActive');\n      const $currentActive = this.getActiveItem();\n      if ($currentActive.length === 1) {\n        return this.invokeElement($currentActive, byKey);\n      }\n      return false;\n    }\n    \n    private getActiveItem(): JQuery<HTMLElement> {\n      return $(SiteSearch.SELECTOR__RESULT_LIST_ITEM, this.$activeItemContainer)\n        .filter((_index, el) => SiteSearch.isListItemActive($(el)));\n    }\n    \n    private invokeElement($el: JQuery<HTMLElement>, _byKey: boolean): string | boolean {\n      //console.log('invokeElement', $el);\n      const $link = $el.selfOrFind('a[href]');\n      if ($link.length > 0 && $link.attr('href') !== '#') {\n        //console.log('at link');\n        this.closePanel();\n        return true;// allow default click handling\n      }\n      if($el.data('fulltext')) {\n        return '' + $el.data('fulltext');\n      }\n      return $el.data('fulltext');\n    }\n    \n    private prepareHistoryTerms(): void {\n      //console.log('prepareHistoryTerms');\n      this.$historyList.children().remove();\n      const terms = this.history.getTerms();\n      terms.forEach((historyTerm) => {\n        const $item = this.$historyListItemTemplate.clone();\n        $item.removeClass([SiteSearch.CLASS__HIDDEN, SiteSearch.SELECTOR__HISTORY_LIST_ITEM_TEMPLATE.substr(1)].join(' '))\n            .attr('data-fulltext', historyTerm)\n            .find(SiteSearch.SELECTOR__SEARCH_TERM).text(historyTerm);\n        this.$historyList.append($item);\n        this.addItemHandlers($item);\n      });\n    }\n    \n    private addItemHandlers($item: JQuery<HTMLElement>) {\n      //console.log('addItemHandlers');\n      $item.on('click', ($event) => {\n        const $currentTarget = $($event.currentTarget);\n        //console.log('item click', $currentTarget);\n        const $target = $currentTarget.selfOrClosest(SiteSearch.SELECTOR__RESULT_LIST_ITEM);\n        const term = this.invokeElement($target, false);\n        //console.log($target, term);\n        if (term === true) {\n          // default link behaviour\n        }\n        else {\n          $event.preventDefault();\n          if (term) {\n            this.setTerm(term);\n          }\n          this.$form.trigger('submit');\n        }\n      });\n      $item.on('mouseenter', ($event) => {\n        const $currentTarget = $($event.currentTarget);\n        //console.log('item mouseenter', $currentTarget);\n        const item = $currentTarget.hasClass(SiteSearch.SELECTOR__RESULT_LIST_ITEM.replace(/\\./, '')) ? $currentTarget : $currentTarget.find(SiteSearch.SELECTOR__RESULT_LIST_ITEM);\n        SiteSearch.setListItemInactive(this.getActiveItem());\n        SiteSearch.setListItemActive(item);\n      });\n    }\n    \n    public static isTermValid(term: string): boolean {\n      const minLength = 2;\n      const splitChars = ' ';\n      return term.split(new RegExp(splitChars + '+', 'g')).some(subTerm => {\n        return subTerm.length >= minLength;\n      });\n    }\n  \n    private static isListItemActive($el: JQuery<HTMLElement>): boolean {\n      return $el.hasClass(SiteSearch.CLASS__ACTIVE);\n    }\n  \n    private static setListItemActive($el: JQuery<HTMLElement>, transient: boolean = false): void {\n      $el.addClass(SiteSearch.CLASS__ACTIVE);\n      if (transient) {\n        return;\n      }\n      const anchor: JQuery<HTMLElement> = $el.is('a') ? $el : $el.find('a[href]');\n      anchor.prop('tabIndex', 100).trigger('focus');\n    }\n  \n    private static setListItemInactive($el: JQuery<HTMLElement>): void {\n      $el.find('a[href]').prop('tabIndex', -1);\n      $el.removeClass(SiteSearch.CLASS__ACTIVE);\n    }\n    \n    private static notifyReplaced($el: JQuery<HTMLElement>): void {\n      const event = jQuery.Event(cs.Snippet.EventIdPostReplace) as cs.SnippetEventPostReplace;\n      event.replacedTarget = $el;\n      $(':root').trigger(event);\n    }\n    \n  }\n  \n  /** Local storage handler to provide x-last search terms sort by date.\n   * And allow storing terms.   */\n  class HistoryStorage {\n    static readonly LOCAL_STORAGE_KEY__HISTORY: string = 'eh.QuickSearch.history';\n    static readonly HISTORY_VERSION: number = 1;\n    static readonly HISTORY_MAX_ITEMS: number = 5;\n    static readonly HISTORY_MAX_AGE_MS: number = 6 * 30 * 24 * 60 * 60 * 1000;\n    \n    public readonly isAvail:boolean;\n    private readonly keyVersion: string = 'v';\n    private readonly keyItems: string = 'i';\n    private readonly keyTerm: string = 't';\n    private readonly keyDate: string = 'd';\n    \n    private items: any[] = [];\n    \n    constructor() {\n      try {\n        this.isAvail = typeof(window.localStorage) === 'object';\n      }\n      catch (e) {\n        this.isAvail = false;\n      }\n    }\n    \n    private init(): void {\n      if (this.isAvail && this.items.length === 0) {\n        const h = window.localStorage.getItem(HistoryStorage.LOCAL_STORAGE_KEY__HISTORY);\n        if (h) {\n          const history = JSON.parse(h);\n          const version = parseInt(history[this.keyVersion], 10);\n          if (version === HistoryStorage.HISTORY_VERSION) {\n            let maxAge = new Date(Date.now() - HistoryStorage.HISTORY_MAX_AGE_MS);\n            this.items = history[this.keyItems].map((item: any) => {\n              if(item[this.keyDate] && item[this.keyTerm]) {\n                let idate = new Date(item[this.keyDate]);\n                if(idate >= maxAge) {\n                  item[this.keyDate] = idate;\n                  return item;\n                }\n              }\n            }).filter((item:any) => {\n              return !!item;\n            });\n            this.sortItems();\n          }\n        }\n      }\n    }\n    \n    public addTerm(term: string | null) {\n      //console.log('adding history term', term);\n      if (!term) {\n        return;\n      }\n      term = term.trim();\n      if (term.length === 0) {\n        return;\n      }\n      this.init();\n      let idx = -1;\n      const lTerm = term.toLowerCase();\n      this.items.forEach((element, index) => {\n        if (element[this.keyTerm].toLowerCase() === lTerm) {\n          idx = index;\n        }\n      });\n      if (idx === -1) {\n        const item:any = {};\n        item[this.keyDate] = new Date();\n        item[this.keyTerm] = term;\n        this.items.unshift(item);\n      }\n      else {\n        this.items[idx][this.keyDate] = new Date();\n        this.items[idx][this.keyTerm] = term;\n      }\n      this.sortItems();\n      this.resizeItems();\n      this.store();\n    }\n    \n    public getTerms(): string[] {\n      this.init();\n      const res: string[] = [];\n      this.items.forEach(it => {\n        res.push(it[this.keyTerm]);\n      });\n      return res;\n    }\n    \n    private store() {\n      if (this.isAvail) {\n        const history:any = {};\n        history[this.keyVersion] = HistoryStorage.HISTORY_VERSION;\n        history[this.keyItems] = this.items;\n        window.localStorage.setItem(HistoryStorage.LOCAL_STORAGE_KEY__HISTORY, JSON.stringify(history));\n      }\n    }\n    \n    private sortItems(): void {\n      this.items = this.items.sort((a, b) => {\n        const dateA = a[this.keyDate], dateB = b[this.keyDate];\n        if (dateA > dateB) {\n          return -1;\n        }\n        else if (dateA < dateB) {\n          return 1;\n        }\n        const termA = a[this.keyTerm], termB = b[this.keyTerm];\n        if (termA > termB) {\n          return 1;\n        }\n        else if (termA < termB) {\n          return -1;\n        }\n        return 0;\n      });\n    }\n    \n    private resizeItems() {\n      this.items = this.items.filter((value, index) => {\n        return index < HistoryStorage.HISTORY_MAX_ITEMS;\n      });\n    }\n    \n  }\n\n  interface IQSElementBounds {\n    top: number;\n    left: number;\n    right: number;\n    el: JQuery<HTMLElement>;\n  }\n}\n","namespace eh {\n  \n  export class Slider {\n    \n    private readonly navigator: SliderNavigator;\n    private readonly slides: Slide[];\n    private destroyed: boolean = false;\n    private slideGroups: SlideGroup[];\n    private slidesPerGroup: number;\n    private currentSlide: Slide;\n    private currentGroup: SlideGroup;\n    private transforming: boolean;\n    private itemWidth: number;\n    private autoPlay: boolean;\n    private autoPlayTimeout = 5000;\n    private autoPlayStack: number;\n    private autoPlayTimeoutHandle: number | null;\n    private isReInitializing: number = 0;\n\n    /* Start - 5.15.3 - Redesign PID - Package 3 */\n    private isScrollMode: boolean = false;\n    private scrollIndex: number = 0;\n\n    private static swipeThreshold = 50;\n    /* End - 5.15.3 - Redesign PID - Package 3 */\n\n    private static clsCaptionSource = 'eh-multimedia--figcaption-01';\n    private static clsCaptionTarget = 'eh-multimedia--figcaption-02';\n    /* outer bound of component */\n    private static clsSlider = 'eh-slider';\n    /* card stack container */\n    private static clsSlideContainer = 'eh-slider--items';\n    /* a card on stack */\n    private static clsSlideItem = 'eh-slider--item';\n    private static clsHasPending = 'has-pending';\n    private static clsActiveMarker = 'eh-slider--active';\n    private static clsFlowPlayerMarker = 'flowplayer';\n    private static clsAutoPlayMarker = 'eh-slider--autoplay';\n\n    private static clsCurrentPage = 'eh-slider-navigator--current-page';\n    private static clsTotalPages = 'eh-slider-navigator--total-pages';\n  \n    private static clsHidden = 'ehtw-hidden';\n    private static clsTouchSlider = 'eh-touch-slider';\n    private static clsAtFirst = 'eh-slider-first';\n    private static clsAtLast = 'eh-slider-last';\n    private static clsGrid = 'ehel-grid';\n    //private static clsz5 = 'ehtw-z-5'; Rollback 20250514 - testimonials error \n  \n    public static clsIsDisabled = 'is-disabled';\n\n    static init($base: JQuery<HTMLElement>): void {\n      $(`.${ Slider.clsSlider }:not(.wrap-items)`, $base).each((_index, element) => {\n        new Slider($(element));\n      });\n      \n    }\n    \n    constructor(private $elem: JQuery<HTMLElement>) {\n      this.slides = [];\n      $(`.${ Slider.clsSlideItem }`, $elem).each((_index, element) => {\n        this.slides.push(new Slide($(element)));\n      });\n\n      if (this.slides.length === 0) {\n        return;\n      }\n      else if (this.slides.length > 1) {\n        this.autoPlay = $elem.hasClass(Slider.clsAutoPlayMarker);\n        if (this.autoPlay) {\n          this.startAutoPlay();\n        }\n      }\n      \n      this.currentSlide = this.slides.filter(slide => {\n        return slide.$elem.hasClass(Slider.clsActiveMarker);\n      })[0] || this.slides[0];\n      \n      /* Start - 5.15.3 - Redesign PID - Package 3 */\n      this.isScrollMode = $elem.data('sliderScroll') !== undefined;\n\n      if (this.isScrollMode) {\n        this.scrollIndex = Math.max(this.slides.indexOf(this.currentSlide), 0);\n        this.registerSwipe($(`.${ Slider.clsSlideContainer }`, $elem));\n      }\n      /* End - 5.15.3 - Redesign PID - Package 3 */\n\n      this.navigator = new SliderNavigator($elem, this);\n\n      const $firstContentImage = $('img:first', this.currentSlide.$elem);\n      if ($firstContentImage.prop('complete') === false) {\n        $firstContentImage.one('load', () => {\n          this.doCalculations();\n          this.navigator.notifyStatusChanged(this.getStatus());\n        });\n      }\n      else {\n        window.setTimeout(() => {\n          this.doCalculations();\n          this.navigator.notifyStatusChanged(this.getStatus());\n        }, 600);\n      }\n\n      $(':root').on(eh.TAB_EVENTS.TAB_CHANGE, this.tabChangeHandler);\n      $(':root').on(eh.Constants.VISIBILITY_CHANGE, this.visibilityChangeHandler);\n\n      $(window).on('resize', this.reInit);\n\n      $(`.${ Slider.clsCaptionTarget }`, this.$elem).empty().append($(`.${ Slider.clsCaptionSource }`, this.currentSlide.$elem).children().clone());\n      \n      $elem.data('eh.Slider', this);\n\n      if ($elem.hasClass(Slider.clsTouchSlider)) {\n        let touchstartX = 0\n        let touchendX = 0\n        let touchstartY = 0\n        let touchendY = 0\n    \n        $elem.on('touchstart', '.eh-slider--items', (event) => {\n          touchstartX = event.changedTouches[0].screenX;\n          touchstartY = event.changedTouches[0].screenY;\n        });\n\n        $elem.on('touchmove', '.eh-slider--items', (event) => {\n\n          const deltaX = event.changedTouches[0].screenX;\n  \n          if (Math.abs(deltaX - touchstartX) > 10) {\n            event.preventDefault();\n          }\n  \n        });\n \n        $elem.on('touchend', '.eh-slider--items', (event) => {\n          touchendX = event.changedTouches[0].screenX;\n          touchendY = event.changedTouches[0].screenY;\n    \n          const currentGroupIndex = this.slideGroups.indexOf(this.currentGroup);\n    \n          if (Math.abs(touchendX - touchstartX) > Math.abs(touchendY - touchstartY) && Math.abs(touchendX - touchstartX) > 50) {\n            if (touchendX - touchstartX > 0) {\n              if (currentGroupIndex > 0) {\n                this.slidePrevious(); \n              }\n            } else {\n              if (currentGroupIndex < this.slideGroups.length - 1) {\n                this.slideNext(); \n              }\n            }\n          }\n          \n        });\n      }\n      const observer = new IntersectionObserver((entries) => {\n        entries.forEach((entry) => {\n          $(entry.target).toggleClass(Slider.clsIsDisabled, !entry.isIntersecting);\n          // if (entry.isIntersecting) {\n          //   setTimeout(() => {\n          //     $(entry.target).addClass(Slider.clsz5);\n          //   }, 300);\n          // }\n        });\n        \n        // Only disable slides that are out of view HORIZONTALLY (this is a horizontal\n        // carousel). The large vertical rootMargin makes the root effectively unbounded\n        // top/bottom, so a slide scrolled out of view VERTICALLY (e.g. the vertically\n        // stacked / wrapping spare-parts layout) is never marked is-disabled.\n      }, {root: $elem.find(`.${Slider.clsGrid}`)[0], rootMargin: '9999px 0px', threshold: 0.9});\n  \n      this.slides.forEach((slide) => {\n        observer.observe(slide.$elem[0]);\n      });\n  \n    }\n    private visibilityChangeHandler: ($event: JQuery.TriggeredEvent) => void = ($event: JQuery.TriggeredEvent): void => {\n      this.reInit();\n    }\n    private tabChangeHandler: ($event: JQuery.TriggeredEvent, tab: ITab) => void = ($event: JQuery.TriggeredEvent, tab: ITab): void => {\n      if (Tabs.getTabContent(tab).selfOrFind(this.$elem).length > 0) { // slider is inside displayed tab content\n        this.reInit();\n      }\n    }\n    \n    private reInit: () => void = (): void => {\n      if (this.isReInitializing !== 0) {\n        return;\n      }\n      this.$elem.removeClass(Slider.clsAtLast);\n      this.$elem.removeClass(Slider.clsAtFirst);\n      this.isReInitializing = window.setTimeout(() => {\n        if (this.destroyed) {\n          return;\n        }\n        this.isReInitializing = 0;\n        this.doCalculations();\n        this.navigator.notifyStatusChanged(this.getStatus());\n      }, 300);\n  }\n\n    doCalculations() {\n      /* Start - 5.15.3 - Redesign PID - Package 3 */\n      if (this.isScrollMode) {\n        const container = $(`.${ Slider.clsSlideContainer }`, this.$elem).get(0);\n        const overflows = !!container && container.scrollWidth > container.clientWidth + 1;\n\n        this.$elem.find(`.${ Slider.clsTotalPages }`).text(this.slides.length);\n        this.$elem.find(`.${ Slider.clsCurrentPage }`).text(this.scrollIndex + 1);\n        this.navigator?.$elem.toggleClass(Slider.clsHidden, !overflows);\n        return;\n      }\n      /* End - 5.15.3 - Redesign PID - Package 3 */\n\n      const\n          $container: JQuery<HTMLElement> = $(`.${ Slider.clsSlideContainer }`, this.$elem),\n          $firstItem: JQuery<HTMLElement> = $container.children(`.${ Slider.clsSlideItem }:first`);\n      let si = SliderCalculations.measureSliderInfo($container.innerWidth(), $firstItem.outerWidth(true), this.slides.length);\n      if ((si.numSlideGroups > 1 && !this.$elem.hasClass(Slider.clsHasPending)) || (si.numSlideGroups <= 1 && this.$elem.hasClass(Slider.clsHasPending))) {\n        this.$elem.toggleClass(Slider.clsHasPending, si.numSlideGroups > 1);\n        si = SliderCalculations.measureSliderInfo($container.innerWidth(), $firstItem.outerWidth(true), this.slides.length);\n      }\n      this.itemWidth = si.itemWidth;\n      \n      if (this.slidesPerGroup !== si.slidesPerGroup) {\n        this.slidesPerGroup = si.slidesPerGroup;\n        this.slideGroups = [];\n        for (let i = 0; i < si.numSlideGroups; i++) {\n          this.slideGroups.push(new SlideGroup(this.slides.slice(i * si.slidesPerGroup, Math.min((i + 1) * si.slidesPerGroup, this.slides.length))));\n        }\n      }\n\n      this.$elem.find(`.${Slider.clsTotalPages}`).text(this.slideGroups.length);\n\n      if (this.slideGroups.length > 1) {\n        this.navigator?.$elem.removeClass(Slider.clsHidden);\n      } else {\n        this.navigator?.$elem.addClass(Slider.clsHidden);\n      }\n\n      const group = this.findSlideGroup(this.currentSlide);\n      if (group !== this.currentGroup) {\n        this.currentGroup = group;\n        this.$elem.find(`.${Slider.clsCurrentPage}`).text(this.slideGroups.indexOf(this.currentGroup)+1);\n      }\n      this.slideTo(this.slides.indexOf(this.currentSlide), true);\n    }\n    \n    findSlideGroup(slide: Slide): SlideGroup {\n      return this.slideGroups.filter(group => group.containsSlide(slide))[0];\n    }\n    \n    public slideTo(slideIndex: number, immediate: boolean = false) {\n      /* Start - 5.15.3 - Redesign PID - Package 3 */\n      if (this.isScrollMode) {\n        this.scrollToSlide(slideIndex);\n        return;\n      }\n      /* End - 5.15.3 - Redesign PID - Package 3 */\n\n      const futureSlide = this.slides[slideIndex];\n      const futureGroup = this.findSlideGroup(futureSlide);\n      //this.slides.forEach(x => x.$elem.removeClass(Slider.clsz5));\n\n      if (!futureGroup || this.transforming) {\n        return;\n      }\n      //if (futureGroup === this.currentGroup) {\n      //  this.currentSlide = futureSlide;\n      //  return;\n      //}\n      const currentGroupIndex = this.slideGroups.indexOf(this.currentGroup);\n      const futureGroupIndex = this.slideGroups.indexOf(futureGroup);\n      //const direction = currentGroupIndex === futureGroupIndex ? 0 : currentGroupIndex > futureGroupIndex ? -1 : 1;\n      this.transforming = true;\n      \n      //console.log('slideTo', slideIndex, currentGroupIndex, '->', futureGroupIndex);\n      \n      if (futureGroup !== this.currentGroup) {\n        const flowplayer: Flowplayer | undefined = $(`.${ Slider.clsFlowPlayerMarker }`, this.currentSlide.$elem).data('flowplayer');\n        if (flowplayer) {\n          flowplayer.pause();\n        }\n      }\n      \n      const transforms: JQuery.Promise<HTMLElement>[] = [];\n      // COM-3979: with a single group there is nothing to slide, so the fit-width\n      // correction must not kick in -- it would shift the only group out of view.\n      const fitWidth = this.$elem.data('sliderFitWidth') && this.slideGroups.length > 1;\n      const toLastGroup = fitWidth && futureGroupIndex === this.slideGroups.length - 1;\n      const fromLastGroup = fitWidth && currentGroupIndex === this.slideGroups.length - 1;\n  \n      const slideInnerWidth = futureSlide.$elem.innerWidth()??0;\n      const slideWidth = futureSlide.$elem.width()??0;\n      const paddT = slideInnerWidth - slideWidth;\n  \n      const restNavigator = this.currentGroup.getSliderCount() * this.itemWidth + futureGroup.getSliderCount() * this.itemWidth - (this.$elem ? this.$elem.width()??0 : 0) - paddT;\n      // a negative rest would move the group the wrong way when the items already fit\n      const amountMove = (toLastGroup || fromLastGroup) ? Math.max(restNavigator, 0) : 0;\n  \n      this.$elem.removeClass(Slider.clsAtLast);\n      this.$elem.removeClass(Slider.clsAtFirst);\n  \n      setTimeout(() => {\n        if (toLastGroup) {\n          this.$elem.addClass(Slider.clsAtLast);\n        }\n  \n        if (futureGroupIndex === 0) {\n          this.$elem.addClass(Slider.clsAtFirst);\n        }\n      }, immediate ? 0 : 500);\n       \n      this.slideGroups.forEach((group, groupIndex) => {\n        const variance = $(`.${ Slider.clsSlideContainer }`, this.$elem).css('overflow') === 'hidden' ? 1 : 2;\n        const isCurrent = eh.Slider.checkInBounds(groupIndex, currentGroupIndex, variance - 1);\n        const isFuture = eh.Slider.checkInBounds(groupIndex, futureGroupIndex, variance - 1);\n        \n        const visible = isCurrent || isFuture;\n        const startX =\n          (groupIndex > currentGroupIndex + variance\n            ? futureGroupIndex - variance\n            : groupIndex < currentGroupIndex - variance\n            ? futureGroupIndex + variance\n            : currentGroupIndex) - (fromLastGroup ? 1 : 0);\n        const endX =\n          (groupIndex > futureGroupIndex + variance\n            ? currentGroupIndex - variance\n            : groupIndex < futureGroupIndex - variance\n            ? currentGroupIndex + variance\n            : futureGroupIndex) - (toLastGroup ? 1 : 0);\n\n        const startXAmount = startX * this.slidesPerGroup * this.itemWidth + (fromLastGroup ? amountMove : 0);\n        const endXAmount = endX * this.slidesPerGroup * this.itemWidth + (toLastGroup ? amountMove : 0);\n        \n        transforms.push.apply(\n          transforms,\n          group.getTransform(\n            0 - startXAmount,\n            0 - endXAmount,\n            immediate,\n            visible\n          )\n        );\n      });\n      $.when(transforms)\n        .then(() => {\n          this.transforming = false;\n          this.currentGroup = futureGroup;\n          this.$elem.find(`.${Slider.clsCurrentPage}`).text(this.slideGroups.indexOf(this.currentGroup)+1);\n          this.currentSlide = futureSlide;\n          \n          this.navigator.notifyStatusChanged(this.getStatus());\n          $(`.${ Slider.clsCaptionTarget }`, this.$elem).empty().append($(`.${ Slider.clsCaptionSource }`, this.currentSlide.$elem).children().clone());\n        });\n    }\n    \n    private static checkInBounds(x: number, y: number, variance: number): boolean {\n      return x >= y - variance && x <= y + variance;\n    }\n    \n    public slidePrevious() {\n      /* Start - 5.15.3 - Redesign PID - Package 3 */\n      if (this.isScrollMode) {\n        this.scrollToSlide(this.scrollIndex - 1);\n        return;\n      }\n      /* End - 5.15.3 - Redesign PID - Package 3 */\n\n      const currentGroupIndex = this.slideGroups.indexOf(this.currentGroup);\n      if (currentGroupIndex === 0) {\n        return;\n      }\n      this.slideTo((currentGroupIndex - 1) * this.slidesPerGroup);\n      if (this.autoPlay) {\n        this.stopAutoPlay();\n        this.startAutoPlay();\n      }\n    }\n    \n    public slideNext() {\n      /* Start - 5.15.3 - Redesign PID - Package 3 */\n      if (this.isScrollMode) {\n        this.scrollToSlide(this.scrollIndex + 1);\n        return;\n      }\n      /* End - 5.15.3 - Redesign PID - Package 3 */\n\n      const currentGroupIndex = this.slideGroups.indexOf(this.currentGroup);\n      const moveTo = (currentGroupIndex < this.slideGroups.length - 1) ? currentGroupIndex + 1 : 0;\n      this.slideTo((moveTo) * this.slidesPerGroup);\n      if (this.autoPlay) {\n        this.stopAutoPlay();\n        this.startAutoPlay();\n      }\n    }\n    \n    /* Start - 5.15.3 - Redesign PID - Package 3 */\n    private scrollToSlide(slideIndex: number): void {\n      const target = Math.min(Math.max(slideIndex, 0), this.slides.length - 1);\n      const elem = this.slides[target]?.$elem.get(0);\n\n      if (!elem) {\n        return;\n      }\n\n      this.scrollIndex = target;\n      this.currentSlide = this.slides[target];\n\n      this.slides.forEach((slide: Slide, index: number): void => {\n        slide.$elem.toggleClass(Slider.clsActiveMarker, index === target);\n      });\n\n      this.$elem.find(`.${ Slider.clsCurrentPage }`).text(target + 1);\n\n      elem.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n\n      this.navigator?.notifyStatusChanged(this.getStatus());\n    }\n\n    /**\n     * Swiping moves one item, exactly like previous/next: the native scrolling is\n     * suppressed while dragging so both ways of navigating stay in sync.\n     */\n    private registerSwipe($container: JQuery<HTMLElement>): void {\n      let touchstartX = 0;\n      let touchstartY = 0;\n\n      $container.on('touchstart', (event: JQuery.TouchStartEvent): void => {\n        touchstartX = (event as any).changedTouches[0].screenX;\n        touchstartY = (event as any).changedTouches[0].screenY;\n      });\n\n      $container.on('touchmove', (event: JQuery.TouchMoveEvent): void => {\n        if (Math.abs((event as any).changedTouches[0].screenX - touchstartX) > 10) {\n          event.preventDefault();\n        }\n      });\n\n      $container.on('touchend', (event: JQuery.TouchEndEvent): void => {\n        const deltaX = (event as any).changedTouches[0].screenX - touchstartX;\n        const deltaY = (event as any).changedTouches[0].screenY - touchstartY;\n\n        if (Math.abs(deltaX) < Math.abs(deltaY) || Math.abs(deltaX) < Slider.swipeThreshold) {\n          return;\n        }\n\n        if (deltaX > 0) {\n          this.slidePrevious();\n        } else {\n          this.slideNext();\n        }\n      });\n    }\n    /* End - 5.15.3 - Redesign PID - Package 3 */\n\n    public getStatus(): Status {\n      /* Start - 5.15.3 - Redesign PID - Package 3 */\n      if (this.isScrollMode) {\n        return new Status(this.scrollIndex + 1, this.scrollIndex + 1, this.slides.length,\n            1, this.scrollIndex > 0, this.scrollIndex < this.slides.length - 1);\n      }\n      /* End - 5.15.3 - Redesign PID - Package 3 */\n\n      const currentSlideIndex = this.slides.indexOf(this.currentSlide);\n      const currentGroupIndex = this.slideGroups.indexOf(this.currentGroup);\n      return new Status(currentGroupIndex + 1, currentSlideIndex + 1, this.slideGroups.length,\n          this.slidesPerGroup, currentGroupIndex > 0, currentGroupIndex < this.slideGroups.length - 1);\n    }\n\n    public startAutoPlay() {\n      this.autoPlayStack += 1;\n      if (this.autoPlayTimeoutHandle || this.autoPlayStack <= 0) {\n        return;\n      }\n      this.autoPlayTimeoutHandle = window.setTimeout(() => {\n        this.slideNext();\n      }, this.autoPlayTimeout);\n\n    }\n\n    public stopAutoPlay() {\n      this.autoPlayStack -= 1;\n      if (!this.autoPlayTimeoutHandle || this.autoPlayStack > 0) {\n        return;\n      }\n      window.clearTimeout(this.autoPlayTimeoutHandle);\n      this.autoPlayTimeoutHandle = null;\n    }\n\n    getHelperHeight() {\n      return this.slides[0].$elem.find('.eh-layout--pos-rel').innerHeight();\n    }\n\n    destroy: () => void = (): void => {\n      this.destroyed = true;\n      this.stopAutoPlay();\n\n      /* Start - 5.15.3 - Redesign PID - Package 3 */\n      if (this.isScrollMode) {\n        $(`.${ Slider.clsSlideContainer }`, this.$elem).off('touchstart touchmove touchend');\n      }\n      /* End - 5.15.3 - Redesign PID - Package 3 */\n      $(':root').off(eh.TAB_EVENTS.TAB_CHANGE, this.tabChangeHandler);\n      $(':root').off(eh.Constants.VISIBILITY_CHANGE, this.visibilityChangeHandler);\n      $(window).off('resize', this.reInit);\n      this.slides.forEach((s: Slide): void => {\n        s.$elem.swipe('destroy');\n        s.$elem.get(0)?.removeAttribute('style');\n      });\n    }\n\n  }\n  \n  class Status {\n    \n    constructor(public readonly currentSlideGroup: number, public readonly currentSlide: number, public readonly slidesTotal: number,\n                public readonly slidesPerGroup: number, public readonly hasPrevious: boolean, public readonly hasNext: boolean) {\n    }\n    \n  }\n  \n  class Transform {\n    \n    private done: JQuery.Deferred<HTMLElement>;\n    \n    constructor(private $subject: JQuery<HTMLElement>, private steps: ((this: Transform, $elem: JQuery<HTMLElement>, done: JQuery.Deferred<HTMLElement>) => void)[]) {\n    }\n    \n    public execute(): JQuery.Promise<HTMLElement> {\n      this.done = $.Deferred();\n      this.run();\n      return $.when(this.done);\n    }\n    \n    run() {\n      const step = this.steps.shift();\n      if (step) {\n        window.requestAnimationFrame(() => {\n          step.call(this, this.$subject, this.done);\n          this.run();\n        });\n      }\n    }\n    \n  }\n  \n  class SlideGroup {\n    \n    private readonly slides: Slide[];\n    \n    constructor(slides: Slide[]) {\n      this.slides = slides;\n    }\n    \n    public containsSlide(slide: Slide): boolean {\n      return this.slides.indexOf(slide) !== -1;\n    }\n    \n    public getSliderCount(): number {\n      return this.slides.length;\n    }\n \n    public getTransform(x1: number, x2: number, immediate: boolean, visible: boolean): JQuery.Promise<HTMLElement>[] {\n      return this.slides.map((value) => {\n        const steps = [];\n        if (!immediate) {\n          steps.push(\n            function (this: Transform, $elem: JQuery<HTMLElement>) {\n              $elem.css('visibility', visible ? 'visible' : 'hidden');\n              $elem.css('transition', 'transform 0s');\n              $elem.css('transform', 'translate3d(' + x1 + 'px, 0, 0)');\n            });\n        }\n        steps.push(\n          function (this: Transform, $elem: JQuery<HTMLElement>, done: JQuery.Deferred<HTMLElement>) {\n            $elem.css('visibility', visible ? 'visible' : 'hidden');\n            $elem.css('transition', 'transform ' + (immediate ? '0s' : '500ms'));\n            $elem.css('transform', 'translate3d(' + x2 + 'px, 0, 0)');\n            $elem.one('transitionend', () => {\n              const el = $elem.get(0);\n              if (el) {\n                done.resolve(el);\n              }\n              else {\n                done.reject($elem);\n              }\n            });\n          }\n        );\n        return new Transform(value.$elem, steps).execute();\n      });\n    }\n    \n  }\n  \n  class Slide {\n    \n    constructor(public readonly $elem: JQuery<HTMLElement>) {\n    }\n    \n  }\n  \n  class SliderNavigator {\n    \n    public readonly $elem: JQuery<HTMLElement>;\n    private readonly $items: JQuery<HTMLElement>;\n    private readonly $pagerForward: JQuery<HTMLElement>;\n    private readonly $pagerBackward: JQuery<HTMLElement>;\n    //noinspection JSMismatchedCollectionQueryUpdate\n    private readonly $itemNext: JQuery<HTMLElement>;\n    //noinspection JSMismatchedCollectionQueryUpdate\n    private readonly $itemPrevious: JQuery<HTMLElement>;\n    private itemsPerPage = 0;\n    private currentPage = 0;\n    private hideOnRedundant = false;\n    \n    private static clsDisplayNone = 'eh-display-none';\n    private static clsNavigatorDisplayHidden = 'eh-slider-navigator-hide-redundant';\n    private static clsNavigatorBackward = 'eh-slider-navigator--backward';\n    private static clsNavigatorForward = 'eh-slider-navigator--forward';\n    private static clsNavigatorItem = 'eh-slider-navigator--item';\n    private static clsNavigatorNext = 'eh-slider-navigator--next';\n    private static clsNavigatorPrevious = 'eh-slider-navigator--previous';\n    private static clsSliderNavigator = 'eh-slider-navigator';\n    \n    constructor($base: JQuery<HTMLElement>, private slider: Slider) {\n      this.$elem = $(`.${ SliderNavigator.clsSliderNavigator }`, $base);\n      this.hideOnRedundant = $base.hasClass(`${ SliderNavigator.clsNavigatorDisplayHidden }`);\n      \n      this.$pagerBackward = $(`.${ SliderNavigator.clsNavigatorBackward }`, this.$elem).on('click', ($event) => {\n        $event.preventDefault();\n        this.showPage(this.currentPage - 1);\n      });\n      this.$pagerForward = $(`.${ SliderNavigator.clsNavigatorForward }`, this.$elem).on('click', ($event) => {\n        $event.preventDefault();\n        this.showPage(this.currentPage + 1);\n      });\n      \n      this.$itemPrevious = $(`.${ SliderNavigator.clsNavigatorPrevious }`, this.$elem).on('click', ($event) => {\n        $event.preventDefault();\n        if(this.$itemPrevious.hasClass(\"disabled\")) {\n          $event.stopPropagation();\n          return;\n        }\n        (document?.activeElement as HTMLElement).blur();\n        this.slider.slidePrevious();\n      });\n      \n      this.$itemNext = $(`.${ SliderNavigator.clsNavigatorNext }`, this.$elem).on('click', ($event) => {\n        $event.preventDefault();\n        if(this.$itemNext.hasClass(\"disabled\")) {\n          $event.stopPropagation();\n          return;\n        }\n        (document?.activeElement as HTMLElement).blur();\n        this.slider.slideNext();\n      });\n      \n      this.$items = $(`.${ SliderNavigator.clsNavigatorItem }`, this.$elem)\n          .not(this.$pagerBackward.add(this.$pagerForward));\n      \n      this.$items.on('click', ($event) => {\n        $event.preventDefault();\n        let $item = $($event.currentTarget);\n        $item.toggleClass('active', true);\n        this.$items.not($item).toggleClass('active', false);\n        this.slider.slideTo(this.$items.index($item));\n      });\n    }\n    \n    notifyStatusChanged(status: Status) {\n      //console.log('notifyStatusChanged', status);\n      this.calculateDirectItems();\n      \n      this.$items.each((index, element) => {\n        $(element).toggleClass('active', index === status.currentSlide - 1);\n        if (status.slidesPerGroup > 1) {\n            $(element).toggleClass(SliderNavigator.clsDisplayNone, (index % status.slidesPerGroup) !== 0);\n        }\n      });\n      \n      this.showPage(this.getPageForItem(status.currentSlide - 1));\n      this.$itemPrevious.toggleClass(SliderNavigator.clsDisplayNone, !status.hasPrevious);\n      this.$itemNext.toggleClass(SliderNavigator.clsDisplayNone, !status.hasNext);\n      this.handleRedundant(!status.hasPrevious && !status.hasNext);\n    }\n    \n    getPageForItem(itemIndex: number): number {\n      return SliderCalculations.getPageForItem(itemIndex, this.$items.length, this.itemsPerPage);\n    }\n    \n    calculateDirectItems() {\n      //console.log('calculateDirectItems');\n      const roundingCorrection = 0.001;\n      \n      const $firstItem = this.$items.first();\n      const $container = this.$elem;\n      const cw = $container.innerWidth() || 0;\n      const ch = $container.innerHeight() || 0;\n      const iw = $firstItem.outerWidth(true) || 0;\n      const ih = $firstItem.outerHeight(true) || 0;\n      const isVertical = ch > cw;\n      \n      const containerSize = isVertical ? (this.slider.getHelperHeight() || ch) : cw;\n      const itemSize = isVertical ? ih : iw;\n      \n      //const oldItemsPerPage = this.itemsPerPage;\n      this.itemsPerPage = Math.max(Math.floor(containerSize / itemSize + roundingCorrection), 1);\n      //console.log('itemsPerPage', containerSize, '/', itemSize, '=>', this.itemsPerPage);\n      //if (this.itemsPerPage != oldItemsPerPage) {\n        this.showPage(this.getPageForItem(this.slider.getStatus().currentSlide - 1));\n      //}\n    }\n    \n    showPage(pageIndex: number) {\n      //console.log('showPage', pageIndex);\n      const status = this.slider.getStatus();\n      const pi = SliderCalculations.getInfoForPage(pageIndex, this.$items.length, this.itemsPerPage);\n      this.$pagerBackward.parent().toggleClass(SliderNavigator.clsDisplayNone, !pi.showPagerBackward);\n      this.$pagerForward.parent().toggleClass(SliderNavigator.clsDisplayNone, !pi.showPagerForward);\n      this.$items.each((index, element) => {\n        $(element).toggleClass(SliderNavigator.clsDisplayNone, index < pi.fromIndex || index > pi.toIndex);\n        if (status.slidesPerGroup > 1) {\n          $(element).toggleClass(SliderNavigator.clsDisplayNone, (index % status.slidesPerGroup) !== 0);\n        }\n      });\n      this.handleRedundant(this.$items.length <= pi.toIndex + pi.fromIndex +1);\n      this.currentPage = pageIndex;\n    }\n\n    handleRedundant(redundant: boolean) {\n      if(this.hideOnRedundant) {\n        if(redundant) {\n          this.$itemPrevious.toggleClass(SliderNavigator.clsDisplayNone, false);\n          this.$itemNext.toggleClass(SliderNavigator.clsDisplayNone, false);\n          this.$pagerBackward.toggleClass(SliderNavigator.clsDisplayNone, false);\n          this.$pagerForward.toggleClass(SliderNavigator.clsDisplayNone, false);\n//          this.$items.each((index, element) => {\n//            $(element).toggleClass(SliderNavigator.clsDisplayNone, false);\n//          });\n        }\n        this.$itemPrevious.toggleClass('eh--hide', redundant);\n        this.$itemNext.toggleClass('eh--hide', redundant);\n        this.$pagerBackward.toggleClass('eh--hide', redundant);\n        this.$pagerForward.toggleClass('eh--hide', redundant);\n        this.$items.each((index, element) => {\n          $(element).toggleClass('eh--hide', redundant);\n        });\n      }\n      // COM-2025\n      this.$items.closest('.ehel-product-teaser--indicators').toggleClass('eh--hide', redundant);\n    }\n  }\n  \n  export class SliderCalculations {\n    \n    static getPageForItem(itemIndex: number, itemsTotal: number, itemsPerPage: number): number {\n      const itemsVisible = Math.max(itemsPerPage - 2, 1);\n      const numPages = Math.ceil(Math.max(itemsTotal - 2, 1) / itemsVisible);\n      return Math.min(Math.max(Math.ceil(itemIndex / itemsVisible), 1), numPages) - 1;\n    }\n    \n    static getInfoForPage(pageIndex: number, itemsTotal: number, itemsPerPage: number): SliderPageInfo {\n      const itemsVisible = itemsPerPage - 2;\n      const showPagerBackward = pageIndex > 0;\n      const showPagerForward = Math.ceil((itemsTotal - 2) / itemsVisible) > pageIndex + 1;\n      const fromIndex = pageIndex * itemsVisible + (showPagerBackward ? 1 : 0);\n      const toIndex = Math.min(fromIndex + (itemsVisible - 1) + (showPagerBackward ? 0 : 1) + (showPagerForward ? 0 : 1), itemsTotal - 1);\n      return {\n        fromIndex: fromIndex,\n        toIndex: toIndex,\n        showPagerBackward: showPagerBackward,\n        showPagerForward: showPagerForward\n      };\n    }\n    \n    static measureSliderInfo(cw: number | undefined = 0, iw: number | undefined = 0, numSlides: number): SliderInfo {\n      const roundingCorrection = 0.001;\n      const slidesPerGroup = Math.floor(cw / iw + roundingCorrection);\n      const numSlideGroups = Math.ceil(numSlides / slidesPerGroup);\n      \n      return {\n        itemWidth: iw,\n        numSlideGroups: numSlideGroups,\n        slidesPerGroup: slidesPerGroup\n      };\n    }\n    \n  }\n  \n  type SliderPageInfo = {\n    fromIndex: number,\n    toIndex: number,\n    showPagerBackward: boolean,\n    showPagerForward: boolean\n  };\n  \n  type SliderInfo = {\n    itemWidth: number,\n    slidesPerGroup: number,\n    numSlideGroups: number\n  };\n  \n}\n","$(() => {\n  \n  $(document).on('click', ($event) => {\n    if ($($event.currentTarget).hasClass('disabled')) {\n      $event.stopPropagation();\n      $event.preventDefault();\n    }\n  });\n\n  const breakPoints: eh.Breakpoints = eh.Breakpoints.getInstance();\n  let bwer = window.browserDetect();\n  const isIE11 = bwer && bwer.name === 'ie' && (bwer.version.indexOf('11.') > -1);\n  const headerNavigation: JQuery<HTMLElement> = $('.eh-header--navigation');\n  const navigationGrid: JQuery<HTMLElement> = $('.eh-main-categories-navigation-links', headerNavigation);\n\n  $('.trigger-toggle-navigation').on('click', ($event) => {\n    const siteEl: JQuery<Element> = eh.ScrollPage.getScrollRoot();\n    const toggleNaviClassName: string = 'eh-navigation-active';\n    const isOpen: boolean = siteEl.hasClass(toggleNaviClassName);\n\n    $event.preventDefault();\n    eh.ScrollPage.setScrollEnabled(isOpen);\n    siteEl.toggleClass(toggleNaviClassName, !isOpen);\n\n    // workaround to help ie11 to calculate layout on cleared floats.\n    // force hasLayout on eh-main-categories-navigation-links\n    if (isIE11) {\n      if (!isOpen) {\n        navigationGrid.css('width', `${window.innerWidth}px`);\n        window.requestAnimationFrame(() => {\n          navigationGrid.css('width', `${window.innerWidth - 18}px`); // - visible scrollbar 18px\n        });\n      } else {\n        navigationGrid.removeAttr('style');\n      }\n    }\n\n  });\n\n  if(isIE11) {\n    let t: number = 0;\n\n    breakPoints.registerResizeListener((): void => {\n      // update mobile navigation flyout\n      const siteEl: JQuery<Element> = eh.ScrollPage.getScrollRoot();\n      const toggleNaviClassName: string = 'eh-navigation-active';\n      const isOpen: boolean = siteEl.hasClass(toggleNaviClassName);\n      if (isOpen && breakPoints.isMobile) {\n        navigationGrid.css('width', `${window.innerWidth - 18}px`); // - visible scrollbar 18px\n      } else {\n        navigationGrid.css('width', `auto`);\n      }\n\n      // throttle picturefill\n      if (t !== 0) {\n        return;\n      }\n      t = window.setTimeout(() => {\n        t = 0;\n        window.picturefill({\n          reevaluate: true,\n          elements: $('img', document)\n        });\n      }, 300);\n    });\n  }\n  \n  const $root = $(':root');\n  $root.on(cs.Snippet.EventIdPostReplace, ($event: cs.SnippetEventPostReplace) => {\n    let target = $event.replacedTarget\n    if (!target && $event.originalEvent) {\n      const oEvent = ($event.originalEvent as any as cs.SnippetEventPostReplace | null)\n      if (oEvent?.replacedTarget) {\n        target = oEvent.replacedTarget;\n      }\n    }\n    if (target){\n      eh.Start.init($(target), true);\n    }\n  });\n  eh.Start.init($root);\n  \n});\n\nlog.setDefaultLevel(['dev', 'qa'].indexOf($('body').data('csEnv')) !== -1 ? log.levels.WARN : log.levels.SILENT);\n\nnamespace eh {\n  \n  export class Start {\n    \n    static init($base: JQuery<HTMLElement>, isSnippetRequest = false): void {\n\n      cs.Snippet.init($base);\n      eh.StickyManager.init($base, isSnippetRequest);\n      eh.Header.init($base, isSnippetRequest);\n      eh.EhCartController.init($base);\n      // Tooltip controller lives in bottom_global, which the header pages don't load, so the\n      // header cart's restore tooltip would never wire up. Init it here (bottom_start is always\n      // loaded with the header) so hover reveals the tooltip during a cart restore.\n      eh.TooltipController.init($base);\n      eh.NavigationController.init($base);\n      eh.PreventRubberbandScroller.init($base);\n      eh.CookieDisclaimer.init($base);\n      eh.CountryDetector.init($base);\n      eh.DatePicker.init($base);\n      eh.IframeScale.init($base);\n      eh.LanguageChooser.init($base);\n      eh.LinkTarget.init($base);\n      eh.LoadingIndicator.init();\n      eh.MarketChooser.init($base);\n      eh.MarketSelector.init($base);\n      eh.Overlay.init($base, isSnippetRequest);\n      eh.CoverCtrl.init($base, isSnippetRequest);\n      eh.PopoverButton.init($base);\n      eh.PopoverController.init($base);\n      eh.QuickSelect.init($base, isSnippetRequest);\n      eh.QuickSelectRv.init($base, isSnippetRequest);\n      eh.EhQuickSelectionController.init($base);\n      eh.ProductPricing.init($base, isSnippetRequest);\n      eh.SeamlessIFrame.init($base);\n      eh.SearchFiltersLegacy.init($base, isSnippetRequest);\n      eh.SiteSearch.init($base, isSnippetRequest);\n      eh.Slider.init($base);\n      eh.TermHighlights.init($base);\n      eh.VideoPlayer.init($base);\n      eh.ShortcutController.init($base);\n      eh.EhTabController.init($base);\n      eh.FullContentOverlayController.init($base);\n      eh.Tracking.init($base, isSnippetRequest);\n      eh.FlexInfo.init($base);\n      eh.Maintenance.init($base);\n\n      // finally expose global api\n      (window ?? {}).ehApi = eh.EhApi.getInstance();\n\n    }\n  }\n\n  //@ts-ignore\n  export type Modernizr = {\n    passiveeventlisteners: boolean\n  };\n  //@ts-ignore\n  export const Modernizr: Modernizr = (window as any)?.Modernizr as Modernizr;\n\n  //@ts-ignore\n  export type CookieSameSite = 'None' | 'Strict' | 'Lax';\n  //@ts-ignore\n  export function setCookie(name: string, value: string, days: number, secure?: boolean, sameSite?: CookieSameSite):void {\n    let expires = null;\n    if (days > 0 || days === -1) {\n      const date = new Date();\n      date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n      expires = date.toUTCString()\n    }\n    document.cookie = `${name}=${encodeURIComponent(value)}${sameSite ? `; SameSite=${sameSite}` : ''}${secure ? '; Secure' : ''}${expires ? `; expires=${expires}` : ''}; path=/`;\n  }\n  //@ts-ignore\n  export function setGlobalCookie(name: string, value: string, days: number, secure?: boolean, sameSite?: CookieSameSite):void {\n    let expires = null;\n    if (days > 0 || days === -1) {\n      const date = new Date();\n      date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n      expires = date.toUTCString()\n    }\n    let url = location.hostname;\n    if(url.indexOf('.endress.') !== -1) {// endress.com.cn\n      url = url.substring(url.indexOf('.endress.'));\n      if (url.indexOf('/') !== -1) {\n          url = url.split('/')[0];\n      }\n      document.cookie = `${name}=${encodeURIComponent(value)}${sameSite ? `; SameSite=${sameSite}` : ''}${secure ? '; Secure' : ''}${expires ? `; expires=${expires}` : ''}; domain=${url}; path=/`;\n    } else {\n      setCookie(name, value, days, secure, sameSite);\n    }\n  }\n  //@ts-ignore\n  export function getCookie(name: string):string {\n    const result = new RegExp('(?:^|; )' + name + '=([^;]*)').exec(document.cookie);\n    return result ? decodeURIComponent(result[1]) : '';\n  }\n  //@ts-ignore\n  export function deleteCookie(name: string):void {\n    setCookie(name, \"\", -1); \n  }\n\n}\n\n\n// Types of globally available extensions\n\n// module: flowplayer\ninterface Flowplayer {\n  isFullscreen: boolean;\n  paused: boolean;\n  fullscreen(): void;\n  pause(): void;\n}\n\n// module: flowplayer\ninterface JQuery {\n  flowplayer: any;\n}\n\n// module: jquery-form\ninterface JQuery {\n  ajaxSubmit: (opts: {[key: string]: any}) => void;\n  formSerialize: () => string;\n}\n\n// module: jquery-highlight\ninterface JQuery {\n  highlight(term:string, options:{ [key: string]: string }):void;\n}\n\n// module: jquery-touchswipe\ninterface JQuery {\n  swipe(obj: any): void;\n}\n\n// module: jquery-ui-datepicker\ninterface JQuery {\n  datepicker: (opts: { [key: string]: any }) => void;\n}\n\n// module: jquery-ui-datepicker\ninterface JQueryStatic {\n  datepicker: {\n    _hideDatepicker(): void;\n  };\n}\n\n// module: select2\ndeclare module S2 {\n  interface Utils {\n    Decorate(classA: object, classB: object): object;\n  }\n}\n\n// module: tealium\ninterface Window {\n  utag: {\n    link: () => void,\n    view: () => void,\n    gdpr: {\n      showConsentPreferences: () => void\n    }\n  };\n  utag_data: { [key: string]: string };\n}\n\n// module: picturefill\ninterface Window {\n  picturefill: (opts: {[key: string]: any}) => void;\n}\n\n// module: browserDetect\ninterface Window {\n  browserDetect(): any;\n}\n\n// module: aliyun-captcha\ninterface Window {\n  initAliyunCaptcha(opts: {[key: string]: any}): any;\n  AliyunCaptchaConfig: {\n    region: string,\n    prefix: string\n  }\n}\n\n// public api nebp\ninterface Window {\n  ehApi: eh.EhExternalApi\n}\n","namespace eh {\n\n  interface ScrollPanelVO {\n    doc: HTMLDocument;\n    maxWidth: number;\n  }\n\n  export class STICKY_EVENTS {\n    static DOM_MUTATION: string = 'eh-stickymanager-on-dom-mutation';\n    static STICKY_CHANGE: string = 'eh-sticky-scroller-on-change';\n  }\n\n  export class StickyManager {\n\n    static instance: StickyManager;\n\n    static SELECTOR: string = '.eh-quickselector--footer';\n    static STICKY_SELECTOR = '.eh-inject-sticky';\n    static SCROLL_PANELS: ScrollPanelVO[] = [\n      {doc: document, maxWidth: -1}\n    ];\n\n    // needed tp update global offset\n    static COOKY_DISCLAIMER_BODY: string = '.marker-cookie-disclaimer';\n    static QUICKSELECT_OPTIONS_CONTAINER: string = '.eh-quickselector--options';\n\n    static CONTEXT_PREFIX: string = 'ehScrollContext-';\n    static CONTEXT_INC: number = 0;\n\n    private winHeight: number = window.innerHeight;\n    private globalOffset: number = 0;\n    private cookieDisclaimer: JQuery<HTMLElement>;\n    private quickselectOptionsContainer: JQuery<HTMLElement>;\n\n    // map of all  possible scrolling areas\n    private scrollContextMap: {[p: string]: ScrollContext} = {};\n    private scrollContextList: ScrollContext[] = [];\n    private scroller: StickyScroller;\n    private currentContextId: string;\n    private useSorting: boolean = true;\n\n    private lastTimeout: number;\n    private scrollerTicking: boolean = false;\n\n    static timeout: number;\n\n    static init($base: JQuery<HTMLElement>, isSnippetRequest = false): void {\n\n        if (isSnippetRequest) {\n          return;\n        }\n\n        if (!!StickyManager.instance) {\n          return;\n        }\n\n        StickyManager.instance = StickyManager.instance || new StickyManager();\n\n        const instance: StickyManager = StickyManager.instance;\n        const stickies: HTMLElement[] = [];\n\n        $(StickyManager.STICKY_SELECTOR).each((_idx, el: HTMLElement) => {\n          stickies.push(el);\n        });\n\n        if (!stickies.length) {\n          // disabled on pages without stickies\n          return;\n        }\n\n        instance.cookieDisclaimer = $(StickyManager.COOKY_DISCLAIMER_BODY);\n        instance.quickselectOptionsContainer = $(StickyManager.QUICKSELECT_OPTIONS_CONTAINER);\n\n        instance.observeMovement();\n        instance.observeResize();\n        instance.observeDomMuations();\n        instance.updateGlobalOffset();\n        instance.updateContextByWidth(window.innerWidth);\n\n        const initialContext: ScrollContext = instance.getCurrentContext();\n\n        instance.scroller = new StickyScroller(\n          initialContext.scrollingElement,\n          stickies,\n          true,\n          instance.globalOffset,\n          instance.useSorting\n        );\n\n        instance.scroller.update(instance.globalOffset, instance.winHeight, null);\n\n    }\n\n    private updateGlobalOffset(): void {\n      this.globalOffset = this.cookieDisclaimer.get(0)?.offsetHeight ?? 0;\n    }\n\n    private observeMovement(): void {\n      // currently only support on y\n      StickyManager.SCROLL_PANELS.forEach((scrollPanelVO: ScrollPanelVO) => {\n        const scrollContext: ScrollContext = this.initContext(scrollPanelVO);\n        const eventParams: any = !!eh.Modernizr?.passiveeventlisteners ? { passive: true } : {};\n        this.scrollContextList.push(scrollContext);\n        $(scrollContext.el).get(0)?.addEventListener('scroll', this.onMoveY, eventParams);\n      });\n    }\n\n    private observeResize(): void {\n      window.onresize = () => {\n        clearTimeout(this.lastTimeout);\n        this.winHeight = window.innerHeight;\n        this.updateContextByWidth(window.innerWidth);\n        this.lastTimeout = window.setTimeout(this.init, 100, true);\n      };\n    }\n\n    private observeDomMuations(): void {\n      $(':root').on(STICKY_EVENTS.DOM_MUTATION, (e: JQuery.TriggeredEvent, el: {element: JQuery<HTMLElement>}) => {\n        // init before transforming elements\n        this.init(false);\n        if (el && el.element) {\n            this.scroller.scrollElementIntoView(el.element, this.quickselectOptionsContainer);\n        }\n      });\n    }\n\n    public init = (windowChanged: boolean): void => {\n      this.updateGlobalOffset();\n      this.scroller.setElement(this.getCurrentContext().scrollingElement);\n      this.scroller.update(this.globalOffset, this.winHeight, windowChanged);\n    };\n\n    private getCurrentContext(): ScrollContext {\n      return this.scrollContextMap[this.currentContextId];\n    }\n\n    private updateContextByWidth(width: number): void {\n      let targetContext: ScrollContext | undefined;\n      this.scrollContextList.forEach((sc: ScrollContext): void => {\n        if (sc.maxWidth >= width && !targetContext) {\n          targetContext = sc;\n        }\n      });\n      targetContext = targetContext || this.scrollContextList[0];\n\n      if (this.currentContextId !== targetContext.el.scrollContextId) {\n        // context has changed\n        this.currentContextId = targetContext.el.scrollContextId;\n      }\n    }\n\n    private initContext = (spVO: ScrollPanelVO): ScrollContext => {\n      const scrollContextId: string = StickyManager.CONTEXT_PREFIX + (++StickyManager.CONTEXT_INC);\n      const el: ScrollContextEl = spVO.doc as ScrollContextEl;\n      if (!this.currentContextId) {\n        this.currentContextId = scrollContextId;\n      }\n      // store ref for fast mapping\n      el.scrollContextId = scrollContextId;\n      return this.scrollContextMap[scrollContextId] = new ScrollContext(el, spVO.maxWidth);\n    };\n\n    private getContextByElement(el: ScrollContextEl): ScrollContext | undefined {\n      return this.scrollContextMap[el.scrollContextId];\n    }\n\n    private onMoveY = (e: Event): void => {\n      if (!this.scrollerTicking) {\n        requestAnimationFrame(() => {\n          const context: ScrollContext | undefined = this.getContextByElement(e.target as ScrollContextEl);\n          if (context) {\n            this.scroller.onScroll(context.getScrollValue() + this.winHeight);\n          }\n          this.scrollerTicking = false;\n        });\n      }\n      this.scrollerTicking = true;\n\n    }\n\n  }\n\n  /**\n   * Wrap available scrollable areas.\n   */\n  class ScrollContext {\n\n    public offsetY: number;\n    public scrollingElement: HTMLElement | null;\n    private possibleScrollTargets: HTMLElement[];\n\n    constructor(\n      public el: ScrollContextEl,\n      public maxWidth: number\n    ) {\n      this.possibleScrollTargets = [\n          $('html').get(0)!,\n          $('body').get(0)!\n      ];\n    }\n\n    public isContextOf(el: HTMLDocument): boolean {\n      return this.el === el;\n    }\n\n    public getScrollValue(): number {\n      if (!this.scrollingElement) {\n        this.possibleScrollTargets.forEach(t => {\n          if (t.scrollTop > 0) {\n            this.scrollingElement = t;\n          }\n        });\n      }\n      return this.scrollingElement?.scrollTop ?? 0;\n    }\n\n  }\n\n  interface ScrollContextEl extends HTMLDocument {\n    scrollContextId: string;\n  }\n\n\n\n\n\n  class Sticky {\n\n    static ZERO_STICKY: { elHeight:  number, absPosition: number,\n      documentOrder: number } = { elHeight: 0, absPosition: 0, documentOrder: -1 };\n\n    public elHeight: number = NaN;\n    public previousSibling: HTMLElement;\n\n    public offY: number;\n    public absPosition: number;\n    public storedOffsets: number;\n    public globalOffset: number = 0;\n\n    // buffer\n    public segmentOffsets: number[];\n\n    private lastStickyState: boolean = false;\n    private preClassNames: string[];\n    private storedStickyHeight: number;\n\n    constructor (\n      public el: HTMLElement,\n      public documentOrder: number,\n      protected additionalClassNames: string[]\n    ) {\n      this.previousSibling = document.createElement('div');\n      (el.parentElement as HTMLElement).insertBefore(this.previousSibling, el);\n      const preClassNames: string | null = el.getAttribute('data-sticky-pre-classes');\n      this.preClassNames = !!preClassNames ? preClassNames.split(', ') : [];\n      this.initBaseMetrics();\n    }\n\n    public initBaseMetrics(): void {\n      this.onBeforeFreeze();\n      requestAnimationFrame(() => {\n        this.storedStickyHeight = this.el.offsetHeight;\n        this.onAfterFreeze();\n      });\n    }\n\n    public applyOffsetByIdx (idx: number): void {\n      this.storedOffsets = this.segmentOffsets[idx + 1];\n      this.el.style.bottom = this.offY + this.storedOffsets + 'px';\n    }\n\n    public freezeTransforms (): void {\n      const ps: HTMLElement = this.previousSibling;\n      this.elHeight = this.storedStickyHeight || this.el.offsetHeight;\n      this.absPosition = offsetTopToBody(ps) + ps.offsetHeight;\n    }\n\n    public reset (): void {\n      this.storedOffsets = 0;\n      this.stick(false);\n    }\n\n    private onBeforeFreeze: () => void = (): void => {\n      this.preClassNames.forEach((className: string): void => this.el.classList.add(className));\n    };\n\n    private onAfterFreeze: () => void = (): void => {\n      this.preClassNames.forEach((className: string): void => this.el.classList.remove(className));\n    };\n\n    public stick (v: boolean): void {\n      if (this.lastStickyState != v) {\n        const classes: string[] = ['scrolling-sticky'].concat(this.additionalClassNames);\n        classes.concat(this.additionalClassNames);\n        if (v) {\n          classes.forEach(c => this.el.classList.add(c));\n        } else {\n          classes.forEach(c => this.el.classList.remove(c));\n        }\n        this.lastStickyState = v;\n      }\n    }\n\n    public transitionEnabled (v: boolean): void {\n      const clazz = 'transition';\n      if (v) {\n        this.el.classList.add(clazz);\n\n      } else {\n        this.el.classList.remove(clazz);\n      }\n    }\n\n  }\n\n  class SortedSticky extends Sticky {\n\n    public sortingNormalized: number;\n\n    constructor (\n      public el: HTMLElement,\n      public sorting: number,\n      public docOrder: number,\n      protected additionalClassNames: string[]\n    ) {\n      super(el, docOrder, additionalClassNames);\n    }\n\n    public isReordered (): boolean {\n      return this.sortingNormalized !== this.documentOrder;\n    }\n\n    public isBelow (sticky: SortedSticky): boolean {\n      return sticky.sortingNormalized < this.sortingNormalized\n        && sticky.documentOrder > this.documentOrder;\n    }\n\n    public isAbove (sticky: SortedSticky): boolean {\n      return sticky.sortingNormalized > this.sortingNormalized\n        && sticky.documentOrder < this.documentOrder;\n    }\n\n    public isDocOrder (): boolean {\n      return this.documentOrder === this.sortingNormalized;\n    }\n\n  }\n\n  class StickyScroller {\n\n    static SORT_ATTR_KEY: string = 'data-sorting';\n    static ADDITIONAL_CLASS_NAMES: string = 'data-sticky-classes';\n\n    public currentSegment: ScrollerSegment;\n\n    private segments: ScrollerSegment[];\n    private winHeight: number;\n    private stickiesUnsorted: SortedSticky[];\n    private stickiesSorted: SortedSticky[];\n    private lastResizeEvent: number;\n\n    private heightMapSorted: number[];\n    private hasScrollListener: boolean = false;\n    private hasResizeListener: boolean = false;\n\n    constructor (\n      private el: HTMLElement | null,\n      private stickies: Element[],\n      private isManaged: boolean = false,\n      private globalOffset: number = 0,\n      private useSorting: boolean = false\n    ) {\n      this.winHeight = window.innerHeight;\n      this.generateStickies();\n    }\n\n    public setElement(newElement: HTMLElement | null): void {\n      this.el = newElement;\n    }\n\n    private getTotalPosOf(el: HTMLElement): number {\n      return offsetTopToBody(el) + el.offsetHeight + this.globalOffset;\n    }\n\n    public scrollElementIntoView(el: JQuery<HTMLElement>, parent: JQuery<HTMLElement>): void {\n\n      if (!el || !el.length) {\n        return;\n      }\n\n      const parentEl = parent.get(0);\n      const absPos: number = parentEl ? this.getTotalPosOf(parentEl) : 0;\n\n      const lastSegmentInRange: ScrollerSegment | undefined = this.segments\n        .filter(s => s.minY > absPos)\n        .reverse()\n        .pop();\n\n      if (!lastSegmentInRange) {\n        return;\n      }\n\n      let heightActiveStickies: number = 0;\n        for (let i = 0; i < this.stickiesUnsorted.length; i++) {\n          if (i > lastSegmentInRange.idx - 1) {\n            heightActiveStickies += this.stickiesUnsorted[i].elHeight;\n          }\n        }\n\n      const lastScrollTop: number = this.el?.scrollTop ?? 0;\n      const feedbackLabelsHeight: number = $('.eh-quickselector--selection-options-feedback').get(0)?.offsetHeight ?? 0;\n      const keepStickyActivePixel: number = 1;\n      const targetScrollPos: number = feedbackLabelsHeight + absPos - this.winHeight + heightActiveStickies - keepStickyActivePixel;\n      const maxTargetScrollPos: number = Math.max(lastScrollTop, targetScrollPos);\n\n      const beginTimer: number = performance.now();\n      const duration: number = 150;\n\n      let currentProgress: number;\n      const tween: NodeJS.Timeout = setInterval(() => {\n        currentProgress = (performance.now() - beginTimer) / duration;\n        if (currentProgress < 1) {\n          if (this.el) {\n            this.el.scrollTop = lastScrollTop + this.lerp(lastScrollTop, maxTargetScrollPos, currentProgress);\n          }\n        } else {\n          if (this.el) {\n            this.el.scrollTop = maxTargetScrollPos;\n          }\n          clearInterval(tween);\n        }\n      }, 1);\n\n    }\n\n    private lerp(from: number, to: number, progress: number): number {\n      return Math.ceil((to - from) * progress);\n    }\n\n    private generateStickies(): void {\n\n      let docOrderInc: number = 0;\n      this.stickiesUnsorted = this.stickies.map((_el: HTMLElement): SortedSticky => {\n        const sorting: number = this.useSorting ?\n          parseInt(_el.getAttribute(StickyScroller.SORT_ATTR_KEY) || '', 10) || -1 : -1;\n        const addClassData: string = _el.getAttribute(StickyScroller.ADDITIONAL_CLASS_NAMES) || '';\n        const additionalClasses: string[] = !!addClassData ? addClassData.split(', ') : [];\n        return new SortedSticky(_el, sorting, docOrderInc++, additionalClasses);\n      });\n      this.stickiesUnsorted.forEach(_s => _s.freezeTransforms());\n      this.stickiesSorted = this.stickiesUnsorted.concat();\n\n      if (this.useSorting) {\n        this.stickiesSorted.sort((a: SortedSticky, b: SortedSticky): number => (a.sorting > b.sorting) ? -1 : 1 );\n      }\n    }\n\n    private buildHeightMapFrom(_stickies: SortedSticky[]): number[] {\n      const heights: number[] = _stickies.map(s => s.elHeight);\n      const offsetMap: number[] = heights\n        .reverse()\n        .reduce((heightMap: number[], height: number, i: number) => {\n          heightMap.push(i > 0 ? height + heightMap[i-1] : height);\n          return heightMap;\n        }, [])\n        .reverse();\n\n      return offsetMap;\n    }\n\n    /**\n     * external manager might call updates (e.g. resize | dom mutations)\n     * @param {number | null} globalOffset\n     */\n    public update: (v: number | null, w: number | null, wc: boolean | null) => void = (\n      globalOffset: number | null,\n      winHeight: number | null,\n      windowChanged: boolean | null\n    ): void => {\n      if (!isNaN(globalOffset as any)) {\n        this.globalOffset = globalOffset || 0;\n      }\n      if (!isNaN(winHeight as any)) {\n        this.winHeight = winHeight || 0;\n      }\n      if (windowChanged) {\n        this.stickiesUnsorted.forEach(_s => _s.initBaseMetrics());\n      }\n      this.initStickies();\n    };\n\n    private init(): void {\n      this.buildSegments();\n      this.setSegmentsTriggerAtTop();\n      this.initSegments();\n      this.generateStickyTransformBuffers();\n      this.updateCurrentSegment(this.getScrollerTotalPos());\n      if (!this.isManaged) {\n        this.registerScrolling();\n        this.registerResize();\n      }\n    }\n\n    private initStickies(): void {\n\n      // get initial bottom position\n      // based on sorting\n\n      this.stickiesSorted.forEach(_s => {\n        _s.transitionEnabled(false);\n        _s.reset();\n        _s.freezeTransforms();\n      });\n\n      this.heightMapSorted = this.buildHeightMapFrom(this.stickiesSorted);\n\n      for (let i: number = 0; i < this.stickiesSorted.length; i++) {\n        const _s: SortedSticky = this.stickiesSorted[i];\n        _s.storedOffsets = 0;\n        _s.offY = this.heightMapSorted[i] - _s.elHeight + this.globalOffset;\n        _s.sortingNormalized = this.useSorting ? this.stickiesSorted.length - _s.sorting : _s.documentOrder;\n        _s.freezeTransforms();\n        _s.transitionEnabled(true);\n      }\n\n      this.init();\n      this.doScroll();\n\n    }\n\n    private buildSegments (): void {\n      this.segments =\n        /* full-sweep ZeroIndex */\n        [Sticky.ZERO_STICKY].concat(this.stickiesUnsorted)\n          .map( (sticky: Sticky) => {\n            return new ScrollerSegment(\n              sticky.documentOrder,\n              sticky.absPosition + this.globalOffset);\n          });\n\n    }\n\n    private setSegmentsTriggerAtTop(): void {\n      // shift segments to triggering when the top edge is reached\n      const heightMapUnsorted: number[] = this.buildHeightMapFrom(this.stickiesUnsorted);\n      const heightMap: number[] = heightMapUnsorted;\n      for (let i = 0; i < heightMap.length; i++) {\n        this.segments[i + 1].offset(heightMap[i]);\n      }\n    }\n\n    /**\n     * manager might call scroll updates.\n     * @param {number} scrollerTotalPos\n     */\n    public onScroll (scrollerTotalPos: number): void {\n      if (!this.currentSegment.isInRange(scrollerTotalPos)) {\n        this.updateCurrentSegment(scrollerTotalPos);\n      }\n    }\n\n    private doScroll: () => void = (): void => {\n      this.onScroll(this.getScrollerTotalPos());\n    };\n\n    private registerScrolling(): void {\n      if (this.hasScrollListener) {\n        return;\n      }\n      this.hasScrollListener = true;\n      let ticking: boolean = false;\n      const eventParams: any = !!eh.Modernizr?.passiveeventlisteners ? { passive: true } : {};\n      this.el?.addEventListener('scroll', () => {\n        if (!ticking) {\n          requestAnimationFrame(() => {\n            this.doScroll();\n            ticking = false;\n          });\n          ticking = true;\n        }\n      }, eventParams);\n    }\n\n    private registerResize(): void {\n      if (this.hasResizeListener) {\n        return;\n      }\n      this.hasResizeListener = true;\n      window.addEventListener('resize', (): void => {\n        clearTimeout(this.lastResizeEvent);\n        this.winHeight = window.innerHeight;\n        this.lastResizeEvent = window.setTimeout(this.update, 50);\n      });\n    }\n\n    private getScrollerTotalPos (): number {\n      return (this.el?.scrollTop ?? 0) + this.winHeight;\n    }\n\n    private initSegments(): void {\n      // apply maxY\n      for (let j = 0; j < this.segments.length; j++) {\n        const next = this.segments[j + 1],\n          // negative 1 means infinity\n          nextMax = !!next ? next.minY : -1;\n        this.segments[j].maxY = nextMax;\n      }\n      if (!this.currentSegment) {\n        this.currentSegment = this.segments[0];\n      }\n    }\n\n    private generateStickyTransformBuffers(): void {\n      // add transformation buffer to items\n      const zeroOffsets = this.segments.map((s) => 0);\n      this.stickiesSorted.forEach(i => i.segmentOffsets = zeroOffsets.concat());\n\n      for (let sIndex = 0; sIndex < this.segments.length -1; sIndex++) {\n        let sticky: SortedSticky = this.stickiesUnsorted[sIndex];\n        // the executing segment idx\n        let totalOffset = 0;\n        const nextIndex: number = sIndex + 1;\n        this.stickiesUnsorted.forEach((s: SortedSticky): void => {\n          if (sIndex) {\n            // copy buffer to init next segment\n            s.segmentOffsets[nextIndex] = s.segmentOffsets[sIndex];\n            // subtract delta of nested elements\n            if (s.isBelow(sticky)) {\n              s.segmentOffsets[nextIndex] -= sticky.elHeight;\n              sticky.segmentOffsets[nextIndex] -= totalOffset;\n            }\n          }\n          if (s.isAbove(sticky)) {\n            totalOffset += s.elHeight;\n            s.segmentOffsets[nextIndex] -= sticky.elHeight;\n          }\n        });\n        sticky.segmentOffsets[nextIndex] += totalOffset;\n      }\n\n    }\n\n    private updateCurrentSegment(scrollerTotalPos: number): void {\n      this.segments.forEach((_i: ScrollerSegment) => {\n        if (_i.isInRange(scrollerTotalPos)) {\n          this.currentSegment = _i;\n          this.onCurrentSegmentChange();\n          return;\n        }\n      });\n    }\n\n    private onCurrentSegmentChange (): void {\n      $(':root').trigger(STICKY_EVENTS.STICKY_CHANGE, {segment: this.currentSegment});\n      this.stickiesUnsorted.forEach(_s => {\n        _s.applyOffsetByIdx(this.currentSegment.idx);\n        _s.stick(_s.documentOrder > this.currentSegment.idx);\n      });\n    }\n\n  }\n\n  export class ScrollerSegment {\n\n    private _offset: number = 0;\n\n    constructor (\n      public idx: number,\n      public minY: number,\n      public maxY: number = 0\n    ) {}\n\n    public offset (v: number): void {\n      this._offset += v;\n      this.minY += v;\n    }\n\n    public get length (): number {\n      return this.minY - this._offset;\n    }\n\n    public isInRange (v: number): boolean {\n      return v >= this.minY && (v < this.maxY || this.maxY === -1);\n    }\n\n    public toString(): string {\n      return `\\nScrollerSegment: IDX[${this.idx}] min[${this.minY}] max[${this.maxY}] offset[${this._offset}]`;\n    }\n\n  }\n\n\n\n\n\n}\n\n\n\n\n\n\n\n\n\n\n\n","namespace eh {\n  \n  export class TermHighlights {\n  \n    private static readonly options = { element: 'span', className: 'eh-font-sans-demi' };\n    private static readonly termMinLength = 2;\n    private static readonly termSeparator= ' ';\n    \n    static init($base: JQuery<HTMLElement>): void {\n      $base.selfOrFind('.highlight_fulltext').each((_index, el) => {\n        const $el = $(el);\n        let term: string | number | undefined = $el.data('fulltextTerm');\n        if (term) {\n          term = term.toString();\n          term = term.split(TermHighlights.termSeparator).filter(value => {\n            return value.length >= TermHighlights.termMinLength;\n          }).join(TermHighlights.termSeparator);\n          if (term) {\n            $el.highlight(term, TermHighlights.options);\n          }\n        }\n      });\n    }\n  }\n\n}\n","namespace eh {\n\n  type EventParams = {\n    event_name: EventName,\n    [key: string]: string | undefined | null;\n  };\n\n  type DataLayer = {\n    [key: string]: string | undefined | null;\n  };\n\n  type EventName = 'accordion' | 'banner' | 'breadcrumb' | 'checkbox' | 'click_in' | 'content_link' | 'cookie_layer' | 'copy' | 'cta_button' | 'download'\n      | 'download_link_dla' | 'drawing' | 'dropdown_expand' | 'dropdown_level2' | 'email' | 'filter' | 'filter_link' | 'flex' | 'form' | 'header' | 'header_sticky' | 'image'\n      | 'imagemap' | 'imagemap_icon' | 'imagemap_link' | 'info_icon' | 'login' | 'logo' | 'navi_burger'  | 'navi_meta_level1'\n      | 'navi_main_level1' | 'navi_main_level2' | 'navi_main_level3' | 'navi_main_expand'\n      | 'navi_teaser' | 'notification' | 'phone' | 'product_action' | 'radio_button' | 're-routing' | 'scroll_depth' | 'search' | 'share' | 'show_all'\n      | 'show_alternative' | 'show_drawing' | 'show_more' | 'slide' | 'socialmedia' | 'subscribe' | 'subtab'\n      | 'switch_site' | 'tab' | 'teaser' | 'teaser_group' | 'view_cart' | 'show_CAD' | 'cta_button' | 'anchor' | 'warranty' | 'warranty_close' | 'svg';\n\n  type TrackedEvent = JQuery.TriggeredEvent  & {'__csTrackingProcessed'?: boolean};\n\n  type OnsiteNavigation = [newHeading: string, siblingHeadings: string[]];\n\n// 5.15.1 202601\n// problem: new UI should keep old tracking values\n// --> introduce data-cs-trck-pathid => allow chaining of values for site_hX, event_name, event_linkname : affecting eventId\n// problem: massive use of drawer/overlay with customized virtual page views\n// --> introduce data-cs-trck-vpage => allow setting values for site_hX, event_name, event_linkname : affecting page_name\n\n  export class Tracking {\n    private static readonly logger = log.getLogger('eh.Tracking');\n    public static readonly qaLogger = log.getLogger('eh.Tracking.QA');\n\n    public static readonly earlyOnsiteNavigations: OnsiteNavigation[] = [];\n    private static ScrollTracking :ScrollDepthTracker;\n    private static SiteHierarchy: TrackingSiteHierarchy;\n\n    public static init($base: JQuery<HTMLElement>, isSnippetRequest = false): void {\n      if (isSnippetRequest) { // no convenience re-init\n        return;\n      }\n      if (typeof window.utag !== 'object') { // wait for utag script to be loaded\n        $('#utag').on('load', Tracking.initInternal);\n      }\n      else {\n        Tracking.initInternal();\n      }\n    }\n\n    public static handleOnsiteNavigation(newHeading: string, siblingHeadings: string[] = []) {\n      Tracking.logger.trace('handleOnsiteNavigation', newHeading, siblingHeadings);\n      if (Tracking.SiteHierarchy) {\n        Tracking.SiteHierarchy.handleOnsiteNavigation(newHeading, siblingHeadings);\n      }\n      else {\n        Tracking.earlyOnsiteNavigations.push([newHeading, siblingHeadings]);\n      }\n    }\n\n    private static initInternal() {\n      const $root = $(':root');\n\n      const dbg = ['dev', 'qa'].indexOf($('body').data('csEnv')) !== -1;\n      if (dbg) {\n        Tracking.qaLogger.setLevel(log.levels.INFO, false);\n      }\n      Tracking.SiteHierarchy = new TrackingSiteHierarchy(window.utag_data);\n\n      //noinspection JSDeprecatedSymbols\n      window.utag_data.page_loadtime =\n          String(window.performance.timing.domInteractive - window.performance.timing.domLoading); // deprecated, but only option in IE and Safari\n\n      if (window.utag_data.page_type === 'error_404') {\n        window.utag_data.referrer_error = document.referrer;\n      }\n\n      Tracking.refreshConfigureStatus();\n\n      Tracking.trackView(window.utag_data);\n\n      $root\n        .on(cs.Snippet.EventIdPreAjaxCall, (event: cs.SnippetEventPreAjax) => {\n        $('form.trigger-tracking-filter-submit', $(event.targetElement)).each(function () {\n          const $form = $(this);\n          Tracking.trackFilterSubmit($form);\n        });\n      }).on(cs.Snippet.EventIdPostReplace, (event: cs.SnippetEventPostReplace) => {\n        Tracking.trackSnippetContent(event.replacedTarget);\n      }).on(eh.NAV_FLYOUT_EVENTS.FLYOUT_EXPANDED, ($event:JQuery.TriggeredEvent, elem: HTMLElement): void => {\n        let params: EventParams = Tracking.buildFlyoutNavigationParams($(elem), 'navi_main_expand');\n        params = Tracking.revampEventParams(params);\n        Tracking.trackEvent(params);\n      }).on(eh.VPAGE_EVENTS.DRAWER_OPENED, ($event:JQuery.TriggeredEvent, elem: HTMLElement): void => {\n        let dl = Tracking.constructIdLayers($(elem)) ?? {};\n        dl = $.extend({}, window.utag_data, dl, {\n          page_name: Tracking.buildPageName([], dl)\n        });\n        Tracking.trackView(dl);\n      }).on(eh.VPAGE_EVENTS.DRAWER_CLOSED, (): void => {\n        Tracking.trackViewOfCurrentPage();\n      }).on(eh.VPAGE_EVENTS.VPAGE_CLOSED, (): void => {\n        Tracking.trackViewOfCurrentPage();\n      }).on(eh.VPAGE_EVENTS.VPAGE_OPENED, ($event:JQuery.TriggeredEvent, elem: HTMLElement): void => {\n        let dl = Tracking.constructIdLayers($(elem)) ?? {};\n        dl = $.extend({}, window.utag_data, dl, {\n          page_name: Tracking.buildPageName([], dl)\n        });\n        Tracking.trackView(dl);\n      }).on(eh.VPAGE_EVENTS.TAB_ACTIVATE, ($event:JQuery.TriggeredEvent, elem: HTMLElement): void => {\n        let dl = Tracking.constructIdLayers($(elem)) ?? {};\n        dl = $.extend({}, window.utag_data, dl);\n        // QA package 1, row 145: opening a tab is reported one level deeper as 'tab', which the\n        // page name already carried. The level belongs to THIS hit only and is deliberately not\n        // pushed into utag_data: afterwards the tab is the page state, not a step below it, and\n        // every later click would otherwise sit under a 'tab' that no longer describes anything.\n        const tabElement = (elem as any)?.tab ?? (elem as any)?.link ?? elem;\n        const ownsLevel = $(tabElement).selfOrClosest('.marker-trck-tab-level').length === 1;\n        if (!ownsLevel) {\n          const tabKey = Tracking.findLastHeading(dl);\n          dl[`site_h${parseInt(tabKey?.substring('site_h'.length) ?? '0', 10) + 1}`] = 'tab';\n        }\n        dl.page_name = Tracking.buildPageName([], dl);\n        Tracking.trackView(dl);\n      }).on(eh.VPAGE_EVENTS.VTAB_ACTIVATE, ($event:JQuery.TriggeredEvent, title: string): void => {\n        // utag_data carries no page_name - it is computed per view - so passing the data layer\n        // straight through sent this view without one. The hierarchy is already correct here\n        // (the configuration view replaces the tab level via handleOnsiteNavigation), only the\n        // name had to be built, exactly as every other view handler does.\n        Tracking.trackView($.extend({}, window.utag_data, {\n          page_name: Tracking.buildPageName([])\n        }));\n      }).on(eh.TAB_EVENTS.TAB_CHANGE, ($event: JQuery.TriggeredEvent, tab: ITab): void => {\n        const title = $([tab.tab]).filter('*[data-cs-tracking-subtype=\"tab\"]').first().data('csTrackingTitle');\n        if (title) {\n          // reflect change of submenu in data layer's navigation info\n          const key = Tracking.findLastHeading(window.utag_data);\n          window.utag_data[key] = title;\n        }\n      }).on(eh.VPAGE_EVENTS.SVG_SHOWN, ($event:JQuery.TriggeredEvent, elem: HTMLElement): void => {\n        let dl = Tracking.constructIdLayers($(elem)) ?? {};\n        dl = $.extend({}, window.utag_data, dl, {\n          page_name: Tracking.buildPageName([], dl)\n        });\n        Tracking.trackView(dl);\n      });\n\n      $(document).on('click', 'a, button, .eh-trigger-link-target, .eh-area-target-ref, .trigger-tracking-click, .tag-remove, *[data-cs-tracking-no-track=\"true\"]', Tracking.handleClickEvent);\n      Tracking.trackForm($root);\n      Tracking.ScrollTracking = new ScrollDepthTracker();\n    }\n\n    private static handleClickEvent($event: TrackedEvent) {\n      let $target = $($event.currentTarget);\n      const $initialTarget = $($event.target);\n      if ($event.__csTrackingProcessed === true\n        || $target.hasClass('disabled')\n        || $target.hasClass('inactive')\n        || $target.selfOrClosest('*[data-cs-tracking-no-track=\"true\"]').length === 1\n        || $target.closest('.flowplayer').length === 1\n        || $initialTarget.selfOrClosest('*[data-cs-tracking-no-track=\"true\"]').length === 1\n        || $initialTarget.selfOrClosest('.disabled').length === 1\n        || $initialTarget.selfOrClosest('.inactive').length === 1\n        || $target.hasClass('eh-trigger-link-target') && $initialTarget.selfOrClosest('.eh-link-target-exclude').length ===  1\n        || $initialTarget.hasClass('marker-cad-item-control')\n        || $initialTarget.is('input') && $initialTarget.closest('.ehel-segmented-button').length === 1\n        ){\n        return;\n      }\n      $event.__csTrackingProcessed = true;\n\n      const trackingInfo = Tracking.analyzeEvent($target);\n      if (trackingInfo) {\n        Tracking.trackEvent(trackingInfo.params);\n\n        // Virtual page views ->\n        let viewKey = $target.selfOrClosest('*[data-tracking-pageview]').data('trackingPageview');\n        if(viewKey) {\n          if(viewKey === 'buyProdTop') {\n            let dl = Tracking.constructIdLayers($target);\n            let trackObj = $.extend({}, window.utag_data, dl ?? {}, {\n              goal_add_to_cart: 'add_to_cart',\n              ec_product_status: 'add',\n              ec_product: $target.data('nebpProductMatnr'),\n              product_material_id: $target.data('nebpProductMatnr'),\n              product_segment: $target.data('csTrackingFlexSegm'),\n              product_attribute: ($target.data('nebpProductEdirect') ? 'e-direct' : '-'),\n              product_id: $target.data('nebpProductRoot'),\n              product_name: trackingInfo.params.event_product_name,\n              crossselling_origin_product: trackingInfo.params.event_crossselling_origin_product\n            });\n            trackObj.page_name = Tracking.buildPageName(['product add']);\n            Tracking.trackView(trackObj);\n          } else if(viewKey === 'add2CartProdTop') {\n            let dl = Tracking.constructIdLayers($target);\n            let trackObj = $.extend({}, window.utag_data, dl ?? {}, {\n              goal_add_to_cart: 'add_to_cart',\n              ec_product_status: 'add',\n              ec_product: $target.data('nebpProductMatnr'),\n              product_material_id: $target.data('nebpProductMatnr'),\n              product_segment: $target.data('csTrackingFlexSegm'),\n              product_attribute: ($target.data('nebpProductEdirect') ? 'e-direct' : '-'),\n              product_id: $target.data('nebpProductRoot'),\n              product_name: trackingInfo.params.event_product_name,\n              crossselling_origin_product: trackingInfo.params.event_crossselling_origin_product\n            });\n            trackObj.page_name = Tracking.buildPageName(['product add']);\n            Tracking.trackView(trackObj);\n          } else if(viewKey === 'getQuoteProdTop') {\n            let dl = Tracking.constructIdLayers($target);\n            let trackObj = $.extend({}, window.utag_data, dl ?? {}, {\n              goal_add_to_cart: 'add_to_cart',\n              ec_product_status: 'add',\n              ec_product: $target.data('nebpProductMatnr'),\n              product_material_id: $target.data('nebpProductMatnr'),\n              product_segment: $target.data('csTrackingFlexSegm'),\n              product_attribute: ($target.data('nebpProductEdirect') ? 'e-direct' : '-'),\n              product_id: $target.data('nebpProductRoot'),\n              product_name: trackingInfo.params.event_product_name,\n              crossselling_origin_product: trackingInfo.params.event_crossselling_origin_product\n            });\n            // cp8: the view takes the order code from the click's ck8, the same way the add-to-cart\n            // view does. Only set when one is known, so a product without a configuration does not\n            // get an empty cp8 on every quote request.\n            if (trackingInfo.params.event_order_code) {\n              trackObj.order_code = trackingInfo.params.event_order_code;\n            }\n            trackObj.page_name = Tracking.buildPageName(['product add']);\n            Tracking.trackView(trackObj);\n          }\n        }\n        else if ($target.data('csTrackingAddToCart')) {\n          $event.stopPropagation();\n\n          let pageNamePostfix = '';\n          let orderCode = '';\n          let pnp: string[] = [];\n          if (trackingInfo.params.event_crossselling_origin_product) {\n            pageNamePostfix = ' cross selling';\n          }\n          else if (trackingInfo.params.event_subtype?.indexOf('quick_select_') === 0) {\n            pageNamePostfix = ' quick select';\n          }\n          else if (trackingInfo.params.event_subtype?.indexOf('footer_') === 0) {\n            pageNamePostfix = ' footer';\n          }\n          let trackObj = $.extend({}, window.utag_data, {\n            goal_add_to_cart: 'add_to_cart',\n            ec_product_status: 'add',\n            ec_product: $target.data('nebpProductMatnr'),\n            product_material_id: $target.data('nebpProductMatnr'),\n            product_segment: $target.data('csTrackingFlexSegm'),\n            product_attribute: ($target.data('nebpProductEdirect') ? 'e-direct' : '-'),\n            product_id: $target.data('nebpProductRoot'),\n            product_name: trackingInfo.params.event_product_name,\n            crossselling_origin_product: trackingInfo.params.event_crossselling_origin_product\n          });\n          // cp8: the add-to-cart page view takes the order code from the click's ck8, not only in\n          // the in-stock case (My E+H tagplan rows 96/118). The in-stock line below is left\n          // untouched, including its '' fallback, so its reported value cannot shift; the general\n          // case only sets the variable when an order code is actually known, rather than adding an\n          // empty one to every add-to-cart view.\n          if (trackingInfo.params.event_subtype?.indexOf('instock_add_to_cart') !== 0\n              && trackingInfo.params.event_order_code) {\n            trackObj.order_code = trackingInfo.params.event_order_code;\n          }\n          if (trackingInfo.params.event_subtype?.indexOf('instock_add_to_cart') === 0) {\n            trackObj.order_code = trackingInfo.params.event_order_code ?? '';\n            if($target.selfOrClosest('#drawer-variant-compare').length > 0) {\n              const key = Tracking.findLastHeading(window.utag_data);\n              let nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n              trackObj[nextKey] = 'in stock compare';\n              pnp.push('in stock compare');\n            } else if($target.selfOrClosest('#drawer-variant-detail').length > 0) {\n              const key = Tracking.findLastHeading(window.utag_data);\n              let nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n              trackObj[nextKey] = 'in stock details';\n              pnp.push('in stock details');\n            }\n          }\n          pnp.push('product add' + pageNamePostfix);\n          trackObj.page_name = Tracking.buildPageName(pnp);\n          Tracking.trackView(trackObj);\n        }\n        else if (trackingInfo.params.event_name === 'download') {\n          $event.stopPropagation();\n          $(window.utag_data).removeProp('goal_form_success');\n          Tracking.trackView($.extend({}, window.utag_data, {\n            goal_direct_download: trackingInfo.params.event_name,\n            download_excl_dla: 'download',\n            page_name: Tracking.buildPageName([trackingInfo.params.event_name])\n          }));\n        }\n        else if (trackingInfo.params.event_name === 'download_link_dla') {\n          $event.stopPropagation();\n          Tracking.trackView($.extend({}, window.utag_data, {\n            goal_dla: trackingInfo.params.event_name,\n            page_name: Tracking.buildPageName([trackingInfo.params.event_name])\n          }));\n        }\n        else if (trackingInfo.params.event_subtype === 'view_details') {\n          $event.stopPropagation();\n          const key = Tracking.findLastHeading(window.utag_data);\n          let nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          Tracking.trackView($.extend({}, window.utag_data, {\n            order_code : $target.selfOrClosest('*[data-variant-data-name]').data('variantDataName'),\n            page_name: Tracking.buildPageName(['in stock details_'+window.utag_data.asset_article_id]),\n            [nextKey] : 'in stock details'\n          }));\n        }\n        else if (trackingInfo.params.event_name === 'cta_button' && trackingInfo.params.event_compareproduct_id) {\n          $event.stopPropagation();\n          const key = Tracking.findLastHeading(window.utag_data);\n          let nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          Tracking.trackView($.extend({}, window.utag_data, {\n            order_code : trackingInfo.params.event_compareproduct_id,\n            page_name: Tracking.buildPageName(['in stock compare']),\n            [nextKey] : 'in stock compare'\n          }));\n        }\n        else if (trackingInfo.params.event_name === 'banner' && trackingInfo.params.event_compareproduct_id) {\n          $event.stopPropagation();\n          const key = Tracking.findLastHeading(window.utag_data);\n          let nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          Tracking.trackView($.extend({}, window.utag_data, {\n            order_code : trackingInfo.params.event_compareproduct_id,\n            page_name: Tracking.buildPageName(['in stock compare']),\n            [nextKey] : 'in stock compare'\n          }));\n        }\n        else if (trackingInfo.params.event_subtype === 'search_result') {\n          const $resultInfo = $target.selfOrClosest('.marker-qs-result-info');\n          const key = Tracking.findLastHeading(window.utag_data);\n          const headingOverride: { [key: string]: string } = {};\n          headingOverride[key] = 'search suggest';\n          Tracking.trackView($.extend({}, window.utag_data, headingOverride, {\n            search_term: $resultInfo.data('fulltextTerm'),\n            search_results: $resultInfo.data('resultCount'),\n            page_name: Tracking.buildPageName([], headingOverride)\n          }));\n        }\n        else if ((trackingInfo.params.event_subtype === 'submenu')\n          || ($target.hasClass('cs-track-tab-view')) || (\n            (trackingInfo.params.event_subtype === 'tab' || trackingInfo.params.event_name === 'tab'\n              || trackingInfo.params.event_name === 'subtab')\n            && trackingInfo.params.event_pub_spot !== 'PS.FlexGPSNavigator'\n            // && trackingInfo.params.event_pub_spot !== 'pc_product-teaser-tab-block' // not matched on homepage\n            // && ($target.selfOrClosest('.cs-track-local-nav').length == 0)\n            // tab navigation for flex gps should not trigger virtual page views\n            // tab navigation for module Product Teaser Grouped Block should not trigger virtual page views\n            )\n        ) {\n          $event.stopPropagation();\n          if(!$target.hasClass('marker-no-page-track')) {\n            const headingOverride: { [key: string]: string } = {};\n            let key = Tracking.findLastHeading(window.utag_data);\n            if($target.hasClass('marker-tab-extend')) {\n              key = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n            }\n            headingOverride[key] = $target.data('csTrackingTitle');\n            if(trackingInfo.params.event_pub_spot !== 'pc_product-teaser-tab-block'\n              && !$target.hasClass('marker-tab-extend')) {\n              // COM-1726:\n              const nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n              headingOverride[nextKey] = 'tab';\n            }\n            Tracking.trackView($.extend({}, window.utag_data, headingOverride, {\n              page_name: Tracking.buildPageName([], headingOverride)\n            }));\n          }\n        }\n        else if (trackingInfo.params.event_name === 'subtab') {\n          Tracking.logger.debug('virtual page view', trackingInfo);\n          Tracking.logger.debug('window.utag_data', window.utag_data);\n\n          $event.stopPropagation();\n          const key = Tracking.findLastHeading(window.utag_data);\n          const headingOverride: { [key: string]: string } = {};\n\n          let nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          //headingOverride[nextKey] = 'parent-tab title';\n          //nextKey = `site_h${parseInt(nextKey?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          headingOverride[nextKey] = trackingInfo.params.event_linkname?.toLowerCase() ?? 'parent-tab title';\n          Tracking.trackView($.extend({}, window.utag_data, headingOverride, {\n            page_name: Tracking.buildPageName([], headingOverride)\n          }));\n        }\n        else if ($target.hasClass('cs-flex-desc')) {\n          $event.stopPropagation();\n          const key = Tracking.findLastHeading(window.utag_data);\n          const nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          const dataLayer: { [key: string]: string } = $.extend({}, window.utag_data);\n          dataLayer[nextKey] = $(`#flex-info-${$target.data('flexSegment') ?? 'desc'}`).data('heading');\n          dataLayer.page_name = Tracking.buildPageName([], dataLayer);\n          dataLayer.page_type = 'flex';\n          Tracking.trackView(dataLayer);\n        } else if (trackingInfo.params.event_subtype === 'cad_radio_button') {\n          $event.stopPropagation();\n        }\n        else if ($target.hasClass('trigger-form-open') && $target.data('lightbox') === 'local') {\n          Tracking.logger.debug('virtual page view', trackingInfo);\n          $event.stopPropagation();\n          const key = Tracking.findLastHeading(window.utag_data);\n          const nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          const dataLayer: { [key: string]: string } = $.extend({}, window.utag_data);\n          dataLayer[nextKey] = $target.data('title');\n          dataLayer.page_name = Tracking.buildPageName([], dataLayer);\n          Tracking.trackView(dataLayer);\n        } else if (trackingInfo.params.event_subtype === 'warranty') {\n          Tracking.logger.debug('virtual page view', trackingInfo);\n          $event.stopPropagation();\n          const key = Tracking.findLastHeading(window.utag_data);\n          const nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n          const dataLayer: { [key: string]: string } = $.extend({}, window.utag_data);\n          dataLayer[nextKey] = 'warranty';\n          dataLayer.page_name = Tracking.buildPageName([], dataLayer);\n          dataLayer.page_type = 'warranty';\n          Tracking.trackView(dataLayer);\n        } else if (trackingInfo.params.event_subtype === 'close_drawer') {\n          // Same as in the VTAB_ACTIVATE handler: build the page name, utag_data has none.\n          Tracking.trackView($.extend({}, window.utag_data, {\n            page_name: Tracking.buildPageName([])\n          }));\n        }\n      }\n    }\n\n    public static trackSearchTermView(term: string): void {\n      const dl: {[k: string]: any} = window.utag_data || {};\n      let level = 0;\n      for (let i = 8; i >= 1; i--) {\n        if (dl['site_h' + i]) { level = i; break; }\n      }\n      const parts: string[] = [dl.app_name, dl.site_country, dl.site_language];\n      for (let i = 1; i <= level; i++) {\n        if (dl['site_h' + i]) { parts.push(dl['site_h' + i]); }\n      }\n      parts.push('search');\n      const overrides: {[k: string]: string} = {\n        search_term_keyword: term,\n        page_name: parts.filter(Boolean).join('.')\n      };\n      overrides['site_h' + (level + 1)] = 'search';\n      Tracking.injectTrackingEvent(overrides);\n    }\n\n    public static refreshConfigureStatus(): boolean {\n      if (window.utag_data.page_type !== 'support_detail') {\n        return false;\n      }\n      const root = $(document.body).data('csProductRoot') || window.utag_data.product_id;\n      let orderCode: string | undefined;\n      if (root) {\n        try {\n          const locale = document.documentElement.lang || 'en';\n          const cached = window.localStorage.getItem(`eh.productInfo.${locale}.${root}`);\n          const data = cached ? JSON.parse(cached) : null;\n          orderCode = data?.result?.orderCode;\n        } catch (_e) {}\n      }\n      const configured = !!orderCode;\n      window.utag_data.order_code = orderCode ?? '';\n      const status = configured ? 'configured' : 'not configured';\n      const changed = window.utag_data.product_configure_status !== status;\n      window.utag_data.product_configure_status = status;\n      return changed;\n    }\n\n    public static trackEvent(params: EventParams): void {\n      const dbg = ['dev', 'qa'].indexOf($('body').data('csEnv')) !== -1, proxy = {o: {}, fn: () => {}};\n      if (window.utag && typeof window.utag.link === 'function') {\n        proxy.o = window.utag;\n        proxy.fn = window.utag.link;\n      }\n      else {\n        Tracking.qaLogger.debug('called missing window.utag.link');\n      }\n      if (dbg) {\n        proxy.fn = monitorFunctionCall(proxy.fn, proxy.o);\n      }\n      fixUDO(proxy.fn, proxy.o).call(proxy.o, params);\n    }\n\n    public static trackView(params: DataLayer): void {\n      const dbg = ['dev', 'qa'].indexOf($('body').data('csEnv')) !== -1, proxy = {o: {}, fn: () => {}};\n      if (window.utag && typeof window.utag.view === 'function') {\n        proxy.o = window.utag;\n        proxy.fn = window.utag.view;\n      }\n      else {\n        Tracking.qaLogger.debug('called missing window.utag.view');\n      }\n      if (dbg) {\n        proxy.fn = monitorFunctionCall(proxy.fn, proxy.o);\n      }\n      fixUDO(proxy.fn, proxy.o).call(proxy.o, params);\n    }\n\n    /**\n     * Report the page state the user is left with, without adding a level of its own.\n     *\n     * Closing a drawer or an overlay, and stepping back inside one, is a click event by the tag\n     * plan -- no page view of its own. The analytics tool still attributes every later click to\n     * the last view it saw, so without this the clicks on the page underneath stayed attributed\n     * to the drawer that is no longer open. The callers take their level off the hierarchy first\n     * and fire their closed event afterwards, so utag_data already describes the page this view\n     * is about.\n     */\n    public static trackViewOfCurrentPage(): void {\n      Tracking.trackView($.extend({}, window.utag_data, {\n        page_name: Tracking.buildPageName([])\n      }));\n    }\n\n    static trackScrollDepth(val:string) {\n      let params = {\n        event_name: 'scroll_depth',\n        scroll_depth: val\n      } as EventParams;\n      const ep = Tracking.revampEventParams(params);\n      Tracking.trackEvent(ep);\n    }\n\n    public static injectTrackingEvent(eventParams: {[key: string]: string | undefined | null}, $elem?: JQuery<HTMLElement>, eventNameOverride?: EventName) {\n      if ($elem) {\n        const trackingInfo = Tracking.analyzeEvent($elem);\n        if (trackingInfo) {\n          if (trackingInfo.params.event_subtype && eventParams.event_subtype && trackingInfo.params.event_subtype !== eventParams.event_subtype) {\n            eventParams.event_subtype = [eventParams.event_subtype, trackingInfo.params.event_subtype].join('_');\n          }\n          const ep = Tracking.revampEventParams($.extend({}, trackingInfo.params, eventParams,\n              eventNameOverride ? {event_name: eventNameOverride} : null));\n          Tracking.trackEvent(ep);\n        }\n      }\n      else {\n        Tracking.trackView($.extend({}, window.utag_data, eventParams));\n      }\n    }\n\n    private static extractTrackingTitle($elem: JQuery<HTMLElement>, $teaserInfo: JQuery<HTMLElement> = $()) {\n      return Tracking.trimStringOrNull(\n          $elem.selfOrFind('.marker-tracking-title:not(.eh--hide)').text()\n          || $elem.selfOrClosest('*[data-cs-tracking-title]').data('csTrackingTitle')\n          || $teaserInfo.data('csTrackingTeaserTitle')\n          || $elem.selfOrFind('.eh-label:not(.eh--hide)').text()\n          || $elem.filter('a, button, label, span').text()\n          || ($elem.selfOrClosest('*[data-cs-tracking-linkname]').length > 0 ? $elem.selfOrClosest('*[data-cs-tracking-linkname]').data('csTrackingLinkname') : '')\n      );\n    }\n\n    private static composeModuleId($elem: JQuery<HTMLElement>) {\n      // let subUnit = $elem.closest('.marker-trck-submodule');\n      // if(subUnit.length) {\n      //   return subUnit.selfOrFind('*[data-trck-submodule]').data('trckSubmodule');\n      // }\n      let module = $elem.closest('.ehel-module');\n      let uuid = module.selfOrFind('*[data-module-uuid]').data('moduleUuid');\n      let title = module.selfOrClosest('*[data-cs-tracking-module-title]').data('csTrackingModuleTitle') || module.find('.marker-module-title').text() || '';\n      if(uuid && (uuid !== '.')) {\n        return title +' | '+ uuid;\n      }\n      return (title !== '.') ? title : undefined;\n    }\n\n    private static analyzeEvent($elem: JQuery<HTMLElement>): {'target': HTMLElement, 'params': EventParams} | null {\n      if (!$elem.get(0)) {\n        return null;\n      }\n      const $linkTarget = $elem.selfOrClosest('.eh-trigger-link-target').find('.eh-link-target');\n      if ($linkTarget.length === 1 && $elem.selfOrClosest('.eh-link-target-exclude').length === 0) {\n        $elem = $linkTarget;\n      }\n      const\n        $header = $elem.selfOrClosest('.eh-header'),\n        $quickSelect = $elem.selfOrClosest('.eh-quickselect'),\n        $teaserInfo = $elem.selfOrClosest('.marker-teaser-info'),\n        dlaDocumentId = $elem.selfOrClosest('*[data-cs-tracking-dla-document-id]').data('csTrackingDlaDocumentId'),\n        crosssellingOriginProduct = $elem.selfOrClosest('*[data-cs-tracking-crossselling]').data('csTrackingCrossselling'),\n        fileName = $elem.selfOrClosest('*[data-cs-tracking-file-name]').data('csTrackingFileName'),\n        filterGroups = $elem.selfOrClosest('*[data-cs-tracking-filter-groups]').data('csTrackingFilterGroups'),\n        isLightboxVideo = $elem.selfOrClosest('*[data-lightbox]').data('lightbox') === 'video',\n        isOverlayClose = $elem.selfOrClosest('.eh-overlay--close').length === 1,\n        isPrefixContext = $elem.selfOrClosest('.marker-cs-tracking-prefix-context').length === 1,\n        isQuickSelectEnabled = $quickSelect.length === 1 && !$quickSelect.hasClass('eh-quickselect-disabled'),\n        isHeaderSticky = $header.selfOrClosest('.is-sticky').length === 1,\n        headerEventName = isHeaderSticky ? 'header_sticky' : 'header',\n        isFooterSticky = $elem.selfOrClosest('.eh-inject-sticky').hasClass('scrolling-sticky'),\n        orderCode = $elem.selfOrClosest('*[data-cs-tracking-order-code]').data('csTrackingOrderCode'),\n        productBundleId = $elem.selfOrClosest('*[data-cs-tracking-product-bundle-id]').data('csTrackingProductBundleId'),\n        productId = $elem.selfOrClosest('*[data-cs-tracking-product-id]').data('csTrackingProductId')\n            || ($elem.selfOrClosest('*[data-cs-product-root]').data('csProductRoot') || window.utag_data.product_id),\n        productName = $elem.selfOrClosest('*[data-cs-tracking-product-name]').data('csTrackingProductName') || window.utag_data.product_name,\n        unitName = $elem.selfOrClosest('.marker-trck-submodule')?.data('trckSubmodule'),\n        psNameData = $elem.selfOrClosest('*[data-cs-tracking-ps-name]')?.data('csTrackingPsName'),\n        psName = psNameData ? (unitName ? unitName+' | ' : '') + psNameData : psNameData,\n        sftFor = $elem.selfOrClosest('*[data-cs-tracking-sft-for]').data('csTrackingSftFor'),\n        teasername = Tracking.trimStringOrNull($elem.selfOrClosest('.marker-teaser-area').find('.marker-teaser-name').text()),\n        moduleId = this.composeModuleId($elem),\n        hintId = $elem.selfOrClosest('*[data-cs-tracking-hint]').data('csTrackingHint');\n      ;\n      let params: EventParams,\n        $tmp: JQuery<HTMLElement>,\n        linkName = Tracking.extractTrackingTitle($elem, $teaserInfo),\n        subtype: string | undefined = $elem.selfOrClosest('*[data-cs-tracking-subtype]').data('csTrackingSubtype') || moduleId,\n        targetId: string | undefined = $elem.selfOrClosest('*[data-cs-tracking-target-id]').data('csTrackingTargetId') || $teaserInfo.data('csTrackingTeaserId'),\n        siu: string | undefined = $elem.selfOrClosest('*[data-cs-tracking-siu]').data('csTrackingSiu')\n      ;\n      if (($tmp = $elem.selfOrClosest('.marker-dla-file-data')).length === 1) {\n        params = Tracking.buildParamsStandard('radio_button', linkName, psName, productId, productName, productBundleId);\n        subtype = 'detail downloads';\n      } else if(hintId && hintId == 'in-stock-link') {\n        subtype = 'in-stock';\n        let spot = psName || moduleId;\n        if ($elem.data('tooltipTarget')) {\n          params = Tracking.buildParamsStandard('info_icon', linkName, spot, productId, productName, productBundleId);\n          targetId = undefined;\n        } else {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('content_link', linkName, spot, productId, productName, productBundleId));\n        }\n      } else if(hintId && hintId == 'in-stock-compare') {\n        params = Tracking.buildParamsStandard('cta_button', linkName, psName, productId, productName, productBundleId);\n        let elems = $elem.selfOrClosest('.marker-compare-elements').find('*[data-cs-tracking-order-code]');\n        params.event_compareproduct_id = $.map(elems, (v) => {\n          return $(v).data('csTrackingOrderCode');\n        }).join(', ');\n      } else if(hintId && (hintId == 'in-stock-dropdown-bt' || hintId == 'in-stock-dropdown-list') ) {\n        let selTxt = Tracking.extractTrackingTitle($elem.selfOrClosest('.marker-dropdown-wrapper').find('.marker-dropdown-value'));\n        let nav1 = $elem.selfOrClosest('.marker-dropdown-wrapper').data('csTrackingNav') ?? selTxt;\n        if(hintId  == 'in-stock-dropdown-list') {\n          params = Tracking.buildParamsStandard('dropdown_level2', linkName, 'PS.Dropdown');\n          params.event_navpath = (nav1.replace(/;/, '_') + '.' +selTxt.replace(/;/, '_')).toLocaleLowerCase();\n        } else {\n          params = Tracking.buildParamsStandard('dropdown_expand', linkName, 'PS.Dropdown');\n          params.event_navpath = nav1.replace(/;/, '_').toLowerCase();\n        }\n        params.event_linkname = nav1;\n        subtype = nav1.toLowerCase();\n        $elem.selfOrClosest('.marker-dropdown-wrapper').data('csTrackingNav', selTxt);\n      } else if (($tmp = $elem.selfOrClosest('.marker-spd')).length === 1) {\n        params = Tracking.buildParamsStandard('content_link', linkName, 'PS.supportProduct', productId, productName, productBundleId);\n        subtype = $elem.data('csTrackingSubtype');\n        Tracking.appendSPDData($tmp, params);\n      } else if (($tmp = $elem.selfOrClosest('.marker-spd-loadmore')).length === 1) {\n        params = Tracking.buildParamsStandard('show_more', linkName, 'PS.supportProduct', productId, productName, productBundleId);\n        Tracking.appendSPDData($tmp, params);\n      } else if (($tmp = $elem.selfOrClosest('.marker-spd-netilion')).length === 1) {\n        params = Tracking.buildParamsStandard('content_link', linkName, 'PS.supportProduct', productId, productName, productBundleId);\n        Tracking.appendSPDData($tmp, params);\n        Tracking.appendParamsExtern($elem, params);\n      } else if (($tmp = $elem.selfOrClosest('.marker-spd-troubleshooting')).length === 1) {\n        params = Tracking.buildParamsStandard('content_link', linkName, 'PS.supportProduct', productId, productName, productBundleId);\n        Tracking.appendSPDData($tmp, params);\n        Tracking.appendParamsExtern($elem, params);\n        params.event_download_language = $tmp.data('csTrackingSpdLanguage');\n        params.event_download_version = $tmp.data('csTrackingSpdVersion');\n      } else if (($tmp = $elem.selfOrClosest('.marker-spd-knowledge-base')).length === 1) {\n        params = Tracking.buildParamsStandard('cta_button', linkName, 'PS.supportProduct', productId, productName, productBundleId);\n        Tracking.appendSPDData($tmp, params);\n        subtype = 'filled';\n      } else if(subtype && subtype == 'view_details') {// in stock table\n        params = Tracking.buildParamsStandard('content_link', linkName, psName);\n      } else if(subtype && (subtype == 'check' // in stock table\n          // phase-out overlay (tagplan package 3, rows 107-113): the checkbox reports\n          // 'checkbox'. Guarded on the element type -- the links that OPEN the overlay\n          // carry the same subtype and have to stay content_link.\n          || (subtype == 'phase out' && $elem.is('input[type=\"checkbox\"]')))) {\n        // Both directions are reported, selecting and deselecting alike, in the phase-out\n        // overlay as in the in stock table.\n        params = Tracking.buildParamsStandard('checkbox', linkName, psName, productId, productName, productBundleId);\n        params.event_order_code = $elem.selfOrClosest('*[data-variant-data-name]').data('variantDataName');\n\n      } else if(subtype && subtype == 'in-stock-info') {\n        params = Tracking.buildParamsStandard('info_icon', linkName, psName, productId, productName, productBundleId);\n        subtype = 'in-stock';\n      } else if(subtype && subtype == 'learning-center') {\n        params = Tracking.buildParamsStandard('banner', linkName, psName, productId, productName, productBundleId);\n        params.event_pub_spot = 'pc_banner';\n        params.page_name = Tracking.buildPageName([params.event_name]);\n        siu && this.appendSiuAdds(siu, params, $elem);\n      } else if(subtype && subtype == 'Learning Resource') {\n        params = Tracking.buildParamsStandard('banner', linkName, psName, productId, productName, productBundleId);\n        params.event_pub_spot = 'pc_learning-resource-library';\n        params.page_name = Tracking.buildPageName([params.event_name]);\n        siu && this.appendSiuAdds(siu, params, $elem);\n      } else if(subtype && subtype == 'cta_filled') {\n        params = Tracking.buildParamsStandard('cta_button', linkName, psName, productId, productName, productBundleId);\n        subtype = 'filled';\n      } else if (subtype && subtype === 'View successors') {\n        targetId = undefined;\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('content_link', linkName, psName, productId, productName, productBundleId));\n      } else if (subtype && (subtype === 'filter_drawer_click' || subtype === 'filter_click_open'\n          // 'filter_open' is the same interaction under the name the downloads tagplan asks for:\n          // opening a filter category. It shares the open-guard below, so closing stays silent.\n          || subtype === 'filter_open' || subtype === 'sorting_click')) {\n        \n        targetId = undefined;\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('filter', linkName, psName, productId, productName, productBundleId));\n        if (subtype === 'filter_click_open' || subtype === 'filter_open') {\n          params.event_filter_groups = 'category,' + (filterGroups ? String(filterGroups).replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase() : '');\n          const isFilterCategoryOpened = $elem.hasClass('ehel-filter--filter') && $elem.hasClass('is-active');\n          const isDrawerCategoryOpened = $elem.closest('.eh-accordion-ctrl--category-item').hasClass('is-open');\n\n          if (!isFilterCategoryOpened && !isDrawerCategoryOpened) {\n            return null;\n          }\n        } \n      }\n      else if ($elem.selfOrClosest('.marker-document-download').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('download', linkName, psName, productId, productName, productBundleId));\n      }\n      else if (fileName !== undefined && !isLightboxVideo) {\n        params = Tracking.buildParamsStandard('download', linkName, psName, productId, productName, productBundleId);\n        subtype = fileName;\n      }\n      else if (dlaDocumentId !== undefined) {\n        params = Tracking.buildParamsStandard('download_link_dla', linkName, psName, productId, productName, productBundleId);\n        params.event_outbound_link = $elem.attr('href');\n        params.event_document_id = dlaDocumentId;\n      }\n      else if ($elem.selfOrClosest('.marker-product-actions').length === 1) {\n        if (subtype && subtype === 'Show CAD') {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('show_CAD', linkName, psName, productId, productName, productBundleId));\n        } else {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('product_action', linkName, psName, productId, productName, productBundleId));\n        }\n        params.event_crossselling_origin_product = crosssellingOriginProduct;\n      }\n      else if ($elem.selfOrClosest('.trigger-product-comparison-compare').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('product_action', linkName, psName, productId, productName, productBundleId));\n        //@ts-ignore\n        if (typeof eh.ProductComparison !== 'undefined') {\n          //@ts-ignore\n          const pc = eh.ProductComparison.getInstance();\n          if (pc) {\n            params.event_compareproduct_id = pc.getProductRoots().join(',');\n          }\n        }\n      }\n      // '.marker-product-pdf-link' is the style-free counterpart of the legacy\n      // '.eh-product-pdf-link', which carries a padding rule in main_prefixed.css and\n      // would shift a Tailwind button by 3px.\n      else if ($elem.selfOrClosest('.add-to-cart').length === 1\n          || $elem.selfOrClosest('.eh-product-pdf-link').length === 1\n          || $elem.selfOrClosest('.marker-product-pdf-link').length === 1) {\n        if($elem.selfOrClosest('.marker-in-stock-wrapper').length === 1) {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('product_action', linkName, psName, productId, productName, productBundleId));\n          params.event_order_code = $elem.data('csTrackingOrderCode');\n          params.goal_product_buttons = 'product_buttons';\n          subtype=\"instock_add_to_cart\";\n          if($elem.selfOrClosest('#drawer-variant-compare').length > 0) {\n            Tracking.setSiteExtendedEventId(params, 'in-stock-compare');\n          } else if($elem.selfOrClosest('#drawer-variant-detail').length > 0) {\n            Tracking.setSiteExtendedEventId(params, 'in-stock-detail');\n          }\n        }\n        else {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('product_action', linkName, psName, productId, productName, productBundleId));\n          // ck8 from the order code the QuickSelect distributes (COM-4131). The\n          // quickSelectTrackingInfo further down only reaches elements inside the QuickSelect\n          // subtree; \"Get a quote\", the compatible cards and the spare-part buttons sit outside\n          // it, so they take the value from the attribute a marked receiver carries. Scoped to\n          // this branch on purpose: data-cs-tracking-order-code is a site-wide convention and\n          // reading it for every event would hand ck8 to elements that never reported it.\n          params.event_order_code = params.event_order_code ?? orderCode;\n        }\n      }\n      else if ($elem.selfOrClosest('.ehel-copy--trigger').length === 1) {\n        // Copy-to-clipboard of the 5.15 CopyController. The legacy '.marker-copy-clipboard' below\n        // keeps reporting 'share'; the subtype names what was copied and comes from the markup.\n        params = Tracking.buildParamsStandard('copy', linkName, psName, productId, productName, productBundleId);\n      }\n      else if ($elem.selfOrClosest('.marker-copy-clipboard').length === 1 || $elem.selfOrClosest('.marker-send-mail').length === 1) {\n        params = Tracking.buildParamsStandard('share', linkName, psName, productId, productName, productBundleId);\n      }\n      else if ($elem.selfOrClosest('.marker-save-to-list').length === 1) {\n        if($elem.hasClass('saved')) {\n          let lname = $elem.selfOrFind('.saved-in-list').text() || $elem.selfOrClosest('*[data-cs-tracking-title]').data('csTrackingTitle');\n          params = Tracking.buildParamsStandard('product_action', lname, psName, productId, productName, productBundleId);\n          subtype = 'Saved to list';\n        } else {\n          let lname = $elem.selfOrFind('.save-to-list').text() || $elem.selfOrClosest('*[data-cs-tracking-title]').data('csTrackingTitle');;\n          params = Tracking.buildParamsStandard('product_action', lname, psName, productId, productName, productBundleId);\n          subtype = 'Save to list';\n        }\n      }\n      else if ($elem.selfOrClosest('.marker-logo').length === 1) {\n        params = Tracking.buildParamsStandard(headerEventName, $elem.selfOrFind('img').attr('title'), psName, productId, productName, productBundleId);\n        subtype = 'logo';\n      }\n      else if ($elem.selfOrClosest('.marker-subscribe').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('subscribe', linkName, psName, productId, productName, productBundleId));\n      }\n      else if ($elem.closest('.eh-country-chooser').length === 1) {\n        params = Tracking.buildNavigationParams($elem, 'switch_site');\n        params.event_switch_language_site = $.map([$elem.data('csTrackingSite'), $elem.data('csTrackingCountry'),\n          $elem.attr('hreflang')], (v) => {\n          return v;\n        }).join('_');\n        params.event_linkname = params.event_switch_language_site;\n      }\n      else if ($elem.selfOrClosest('.trigger-toggle-navigation').length === 1) {\n        params = Tracking.buildParamsStandard(headerEventName, linkName, psName, productId, productName, productBundleId);\n        subtype = 'navi_burger';\n      }\n      else if (($elem.closest('.marker-nav-meta').length === 1)) {\n        params = Tracking.buildFlyoutNavigationParams($elem, 'navi_meta_level1');\n      }\n      else if ($elem.closest('.marker-nav-main').length === 1) {\n        let lvl = $elem.closest('.marker-nav-main').data('csTrackingLevel') || '';\n        let proto = {\n          event_bundle_id: productBundleId,\n          event_product_id: productId,\n          event_product_name: productName\n        };\n        switch(lvl) {\n          case 'l3':\n            params = Tracking.buildFlyoutNavigationParams($elem, 'navi_main_level3', psName);\n            break;\n          case 'l2':\n            if($elem.hasClass('ehel-navigation--links-item-category')) {\n              return null;\n            }\n            params = Tracking.buildFlyoutNavigationParams($elem, 'navi_main_level2', psName);\n            break;\n          case 'l1':\n            if($elem.hasClass('ehel-navigation--links-item-category')) {\n              // by event: params = Tracking.buildFlyoutNavigationParams($elem, 'navi_main_expand');\n              return null;\n            } else {\n              params = Tracking.buildFlyoutNavigationParams($elem, 'navi_main_level1', psName);\n            }\n            break;\n          default:\n            return null;\n        }\n        const href = $elem.attr('href');\n        if (!!href)  {\n          const formParamMap = eh.URLHelper.buildNormalizedQueryParamMap(eh.URLHelper.parse(href).search, true);\n          const formParams = Object.keys(formParamMap).map(k => {\n            return {'k': k, 'v': Array.isArray(formParamMap[k]) ? formParamMap[k][0] : formParamMap[k] as string};\n          });\n          $.extend(params, proto, Tracking.analyzeFlyoutParams(formParams));\n        }\n      }\n      else if ($elem.closest('.marker-nav-breadbrumb').length === 1) {\n        const paramsTmp = Tracking.buildParamsBreadcrumbNavi($elem, productId, productName);\n        if (!paramsTmp) {\n          return null;\n        }\n        params = paramsTmp;\n      }\n      else if ($elem.selfOrClosest('.marker-nav-tab').length === 1) {\n        params = Tracking.buildParamsStandard('tab', linkName, psName, productId, productName, productBundleId);\n      }\n      else if ($elem.selfOrClosest('.marker-nav-subtab').length === 1) {\n        params = Tracking.buildParamsStandard('subtab', linkName, psName, productId, productName, productBundleId);\n      }\n      else if ($elem.closest('.marker-footer-social').length === 1) {\n        params = Tracking.buildParamsSocialMedia($elem);\n      }\n      else if (($tmp = $elem.selfOrClosest('.marker-spd-tab')).length === 1) {\n        linkName = $tmp.attr('data-cs-trck-tab-id') || linkName;\n        params = Tracking.buildParamsStandard('tab', linkName, psName, productId, productName, productBundleId);\n        params.event_pub_spot = 'PS.supportProduct';\n        params.event_order_code = orderCode;\n        Tracking.appendSPDData($tmp, params);\n      }\n      else if ($elem.selfOrClosest('.cartContainer').length === 1) {\n        params = Tracking.buildParamsStandard(headerEventName, 'view_cart', psName, productId, productName, productBundleId);\n        subtype = 'icon_cart';\n      }\n      else if ($elem.selfOrClosest('.myAccountContainer').length === 1) {\n        const loggedIn = $elem.selfOrClosest('.myAccountContainer').hasClass('is-logged-in');\n        params = Tracking.buildParamsStandard(headerEventName, linkName, psName, productId, productName, productBundleId);\n        subtype = loggedIn ? 'icon_myeh' : 'login';\n      }\n      else if (($elem.attr('href') || '').substring(0, 7) === 'mailto:') {\n        params = Tracking.buildParamsStandard('email', linkName, psName, productId, productName, productBundleId);\n        params.goal_direct_contact = 'direct_contact';\n        subtype = 'footer_contact';\n      }\n      else if (($elem.attr('href') || '').substring(0, 4) === 'tel:') {\n        params = Tracking.buildParamsStandard('phone', ($elem.attr('href') || '').substring(4), psName, productId, productName, productBundleId);\n        params.goal_direct_contact = 'direct_contact';\n        subtype = 'footer_contact';\n      }\n      else if ($elem.hasClass('csProdSearch__reset') || $elem.hasClass('tag-remove') || $elem.hasClass('filter_param_desc')) {\n        if ($elem.hasClass('filter_param_desc') && !$elem.hasClass('is-open')) {\n          return null; // don't track when closing tooltip (and .is-open has just been removed)\n        }\n        params = Tracking.buildParamsStandard('filter', $elem.hasClass('tag-remove') ? 'remove filter tag'\n          : $elem.hasClass('filter_param_desc') ? 'information' : linkName, psName, productId, productName, productBundleId);\n      }\n      else if ($elem.selfOrClosest('.eh-product-quick-filter--item').length === 1\n        || $elem.selfOrClosest('.eh-product-filter--item').length === 1\n        || $elem.selfOrClosest('.trigger-reset-search').length === 1\n        || $elem.selfOrClosest('.trigger-filter-display').length === 1) {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('filter', linkName, psName, productId, productName, productBundleId));\n      }\n      else if (($elem.hasClass('js-overlay-close') && $elem.closest('.marker-country-redirect').length === 1)\n           || (isOverlayClose && $('.marker-country-redirect', $elem.closest('.eh-overlay')).length === 1)) {\n        params = Tracking.buildParamsStandard('re-routing', linkName, psName, productId, productName, productBundleId);\n        subtype = $elem.selfOrClosest('.eh-overlay').find('*[data-cs-tracking-subtype]').data('csTrackingSubtype');\n      }\n      else if ($elem.selfOrClosest('.marker-imagemap').length === 1) {\n        params = Tracking.buildParamsStandard('imagemap', linkName, psName, productId, productName, productBundleId);\n        const tn = $elem.selfOrClosest('*[data-cs-tracking-teasername]').data('csTrackingTeasername');\n        if (tn) {\n          params.event_linkposition_teasername = tn;\n        }\n      }\n      else if ($elem.selfOrClosest('.marker-image-lightbox').length === 1) {\n        params = Tracking.buildParamsStandard('image', linkName, psName, productId, productName, productBundleId);\n        subtype = 'expand';\n      }\n      else if (($tmp = $elem.closest('.marker-country-redirect')).length === 1) {\n        params = Tracking.buildParamsStandard('re-routing', linkName, psName, productId, productName, productBundleId);\n        const country = Tracking.trimStringOrNull($('select#country option:selected', $tmp).text()),\n            language = Tracking.trimStringOrNull($('select#language option:selected', $tmp).text())\n        ;\n        params.event_overlay_selection = country + (language ? ', ' + language : '');\n      }\n      else if($elem.hasClass('marker-disclaimer-close')) {\n        params = Tracking.buildParamsStandard('cookie_layer', 'Close', psName, productId, productName, productBundleId);\n        subtype = 'close';\n      }\n      else if ($elem.selfOrClosest('.marker-cookie-disclaimer').length === 1) {\n        params = Tracking.buildParamsStandard('cookie_layer', linkName, psName, productId, productName, productBundleId);\n      }\n      else if ($elem.selfOrClosest('.eh-login-button').length === 1) {\n        params = Tracking.buildParamsStandard(headerEventName, linkName, psName, productId, productName, productBundleId);\n        params.event_subtype = $elem.selfOrClosest('.eh-login-button').hasClass('is-logged-in') ? 'icon_myeh' : 'login';\n      }\n      else if ($elem.selfOrClosest('.marker-login-link').length === 1) {\n        if (subtype === 'login/register') {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('banner', linkName, psName, productId, productName, productBundleId));\n          siu && this.appendSiuAdds(siu, params, $elem);\n          params.event_pub_spot = 'pc_banner';\n          params.page_name = Tracking.buildPageName([params.event_name])\n        } else{\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('login', linkName, psName, productId, productName, productBundleId));\n        }\n      }\n      else if (($tmp = $elem.selfOrClosest('.cs-flex-info')).length === 1 || ($tmp = $elem.selfOrClosest('.marker-flex-info')).length === 1) {\n        params = Tracking.buildParamsStandard('flex', linkName, psName, productId, productName, productBundleId);\n        subtype = $tmp.data('flexSegment');\n        targetId = undefined;\n      }\n      else if ($elem.selfOrClosest('.eh-product-specs-at-a-glance--close-button').length === 1) {\n        params = Tracking.buildParamsStandard('show_alternative', linkName, psName, productId, productName, productBundleId);\n        params.event_subtype = 'close';\n      }\n      else if ($elem.selfOrClosest('.eh-product-specs-at-a-glance--open-button').length === 1) {\n        params = Tracking.buildParamsStandard('show_alternative', linkName, psName, productId, productName, productBundleId);\n        params.event_subtype = 'open';\n      }\n      else if (($tmp = $elem.selfOrClosest('.trigger-details-toggle')).length === 1) {\n        const $activeElem = $tmp.selfOrFind('.eh-label--state-inactive:hidden').emptyToOptional() ??\n          $tmp.selfOrFind('.eh-label--state-active:hidden');\n        linkName = this.extractTrackingTitle($activeElem);\n        linkName = linkName || $elem.selfOrFind('*[data-cs-tracking-title]:hidden').data('csTrackingTitle');\n        params = Tracking.buildParamsStandard('show_more', linkName, psName, productId, productName, productBundleId);\n        subtype = $activeElem.selfOrClosest('*[data-cs-tracking-subtype]').data('csTrackingSubtype');\n      }\n      else if (($tmp = $elem.selfOrClosest('.marker-details-toggle')).length === 1) {\n        const $activeElem = $tmp.selfOrFind('.eh-label--state-inactive:hidden').emptyToOptional() ??\n          $tmp.selfOrFind('.eh-label--state-active:hidden');\n        linkName = this.extractTrackingTitle($activeElem);\n        linkName = linkName || $elem.selfOrFind('*[data-cs-tracking-title]:hidden').data('csTrackingTitle');\n        if($activeElem.length > 0) {\n          subtype = $activeElem.selfOrClosest('*[data-cs-tracking-subtype]').data('csTrackingSubtype') ;\n        }\n        params = Tracking.buildParamsStandard('show_more', linkName, psName, productId, productName, productBundleId);\n      }\n      // Groups of a local (client-side) filter: their wrapper also carries\n      // 'eh-accordion-ctrl--category-item', so without this branch the accordion\n      // below would win and overwrite the link name with an empty heading label and\n      // the subtype with open/close. The subtype is left to the caller\n      // (Flyout-/SearchInline controller), which knows whether the group was opened\n      // or a criterion was selected.\n      else if ($elem.selfOrClosest('*[data-trck-filter]').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('filter', linkName, psName, productId, productName, productBundleId));\n        subtype = undefined;\n      }\n      else if ($elem.selfOrClosest('.eh-accordion-ctrl--category-item').length === 1) {\n        linkName = $elem.selfOrFind('.eh-accordion-ctrl--category-heading-label').text();\n        params = Tracking.buildParamsStandard('accordion', linkName, psName, productId, productName, productBundleId);\n        subtype = $elem.selfOrFind('.is-open').length === 1 ? 'open' : 'close';\n      }\n      else if ($elem.selfOrClosest('.ehel-show-more--button').length === 1) {\n        // Buttons flagged with 'marker-trck-show-type' track as show_more/more;\n        // everywhere else the original accordion / teaser_group (touchpoint) labels apply.\n        const isShowType = $elem.selfOrClosest('.marker-trck-show-type').length === 1;\n        let evType: EventName = isShowType ? 'show_more' : ($elem.selfOrClosest('.ehel-touchpoint--category').length == 0 ? 'accordion' : 'teaser_group');\n        params = Tracking.buildParamsStandard(evType, linkName, psName, productId, productName, productBundleId);\n        subtype = isShowType ? 'more' : 'open';\n      }\n      else if ($elem.selfOrClosest('.ehel-show-less--button').length === 1) {\n        const isShowType = $elem.selfOrClosest('.marker-trck-show-type').length === 1;\n        let evType: EventName = isShowType ? 'show_more' : ($elem.selfOrClosest('.ehel-touchpoint--category').length == 0 ? 'accordion' : 'teaser_group');\n        params = Tracking.buildParamsStandard(evType, linkName, psName, productId, productName, productBundleId);\n        subtype = isShowType ? 'less' : 'close';\n      }\n      else if ($elem.selfOrClosest('.eh-slider-navigator--backward, .eh-slider-navigator--forward, ' +\n          '.eh-slider-navigator--item, .eh-slider-navigator--next, .eh-slider-navigator--previous, ' +\n          '.eh-slider-navigator--item, .eh-simple-navigator--indicator-bullet').length === 1) {\n        const eventType: EventName = 'slide',\n            map: {[key:string]: string} = {\n              'eh-slider-navigator--backward': 'thumb_btn_left',\n              'eh-slider-navigator--forward': 'thumb_btn_right',\n              'eh-slider-navigator--item': 'thumbnail',\n              'eh-slider-navigator--next': 'btn_right',\n              'eh-slider-navigator--previous': 'btn_left'\n            };\n\n        for (let markerClass in map) {\n          if ($elem.hasClass(markerClass)) {\n            linkName = (markerClass === 'eh-slider-navigator--item'\n                && $elem.hasClass( 'eh-simple-navigator--indicator-bullet')) ? 'bullet_navigation' : map[markerClass];\n            break;\n          }\n        }\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard(eventType, linkName, psName, productId, productName, productBundleId));\n        if($elem.data('csTrackingSubtype')) {\n          subtype = $elem.data('csTrackingSubtype');\n        }\n      }\n      else if ($elem.selfOrClosest('.ehel-gallery--indicators').length === 1) {\n        const eventType: EventName = 'slide',\n            map: {[key:string]: string} = {\n              'ehel-gallery--prev-btn':'btn_up',\n              'ehel-gallery--next-btn':'btn_down',\n              'ehel-gallery--indicator':'image_navigation',\n            };\n\n        for (let markerClass in map) {\n          if ($elem.hasClass(markerClass)) {\n            linkName = map[markerClass];\n            break;\n          }\n        }\n        params = Tracking.buildParamsStandard(eventType, linkName, psName, productId, productName, productBundleId);\n      }\n      else if($elem.selfOrClosest('.marker-track-overlay--close').length === 1) {\n        let ov = $elem.selfOrClosest('.eh-overlay');\n        let info= $elem.selfOrClosest('.eh-overlay').selfOrFind('.marker-track-overlay-closing-info');\n        if(info.length === 1) {\n          if(info.hasClass('cs-lightbox--picture')) {\n            this.injectTrackingEvent({event_subtype: 'shrink', event_name: 'image'}, info);\n          }\n        }\n        return null;\n      }\n      else if (($tmp = $elem.selfOrClosest('.marker-filter-link')).length === 1) {\n        params = Tracking.buildParamsStandard('filter_link', linkName, psName, productId, productName, productBundleId);\n        const href = $tmp.attr('href');\n        if (href) {\n          const formParamMap = eh.URLHelper.buildQueryParamMap(eh.URLHelper.parse(href).search);\n          const formParams = Object.keys(formParamMap).map(k => {return {'k': k, 'v': Array.isArray(formParamMap[k]) ? formParamMap[k][0] : formParamMap[k] as string}; });\n          $.extend(params, Tracking.analyzeFilterParams(formParams, 'event_filter_'));\n        }\n      }\n      else if ($elem.selfOrClosest('.marker-show-all').length === 1) {\n        params = Tracking.buildParamsStandard('show_all', linkName, psName, productId, productName, productBundleId);\n      }\n      else if ($elem.selfOrClosest('.marker-show-drawing').length === 1) {\n        // Tagplan (COM-3358): event_name = 'drawing' and the 'show_drawing' wording moves into\n        // event_subtype -- but only for the 5.15 spareparts drawer, which opts in via\n        // 'marker-trck-drawing'. The legacy UPID spareparts keep the previous 'show_drawing'.\n        const drawingEventName: EventName = $elem.selfOrClosest('.marker-trck-drawing').length === 1 ? 'drawing' : 'show_drawing';\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard(drawingEventName, linkName, psName, productId, productName, productBundleId));\n      }\n      else if ($elem.selfOrClosest('.marker-cta-section').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('cta_button', linkName, psName, productId, productName, productBundleId));\n      }\n      else if ($elem.selfOrClosest('.marker-anchor-navigation').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('anchor', linkName, psName, productId, productName, productBundleId));\n      }\n      else if ($elem.selfOrClosest('.marker-teaser-ref-all').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('teaser', linkName, psName, productId, productName, productBundleId));\n      }\n      else if ((subtype && ['search_button', 'search_bar_start'].indexOf(subtype) > -1)\n          || subtype?.indexOf('quicksearch_overlay_') === 0\n          || subtype?.indexOf('search_page_result_') === 0) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('search', linkName, psName, productId, productName, productBundleId));\n        if (subtype === 'search_button') {\n          subtype = undefined;\n        }\n      }\n      else if (($teaserInfo.length === 1) && !(subtype && ['view online', 'watch online'].indexOf(subtype) > -1)) {\n        const eventName = psName === 'PS.OfferingTeaser - Home' ? 'navi_teaser' : 'teaser';\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard(eventName, linkName, psName, productId, productName, productBundleId));\n        if (psName === 'PS.MarketProvenEvidence') {\n          subtype = 'success_stories';\n        }\n        if (subtype === 'cross_selling') {\n          params.event_crossselling_origin_product = crosssellingOriginProduct;\n        }\n        siu && this.appendSiuAdds(siu, params, $elem);\n      }\n      else if (subtype && subtype === 'cad_dropdown') {\n        const $cadValue = $elem.selfOrFind('.marker-cad-dropdown-value');\n        linkName = Tracking.extractTrackingTitle($cadValue)\n            || Tracking.extractTrackingTitle($elem.selfOrFind('.marker-cad-item-control:checked').closest('.ehel-menu-item'))\n            || linkName;\n        params = Tracking.buildParamsStandard('dropdown_expand', linkName, 'PS.supportProduct', productId, productName, productBundleId);\n      }\n      else if (subtype && subtype === 'cad_radio_button') {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('radio_button', linkName, psName, productId, productName, productBundleId));\n      } else if ($elem.selfOrClosest('svg').length === 1) {\n        const linkname = $elem.selfOrClosest('*[data-cs-tracking-linkname]').data('csTrackingLinkname');\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('svg', linkname, psName));\n\n        // link -> event_process_map_details\n        const processMapDetails = $elem.selfOrClosest('*[data-cs-tracking-process-map-details]').data('csTrackingProcessMapDetails');\n        params.event_process_map_details = processMapDetails;\n\n        const $svgOverview = $elem.selfOrClosest('.ehel-process-overview--svg');\n\n        if ($svgOverview) {\n\n          const applicationOverview = $svgOverview.data('csTrackingApplicationOverview');\n          const applicationArea = $svgOverview.data('csTrackingApplicationArea');\n\n          const industryOverview = $svgOverview.selfOrClosest('*[data-cs-tracking-industry-overview]').data('csTrackingIndustryOverview');\n\n          if (applicationArea) {\n            params.event_application_area = applicationArea;\n            params.event_industry_overview = industryOverview;\n          }\n\n          if (applicationOverview) {\n            params.event_application_overview = applicationOverview;\n          }\n\n        }\n\n        // idp -> event_industry_overview\n        // processmap -> event_application_overview\n        // parent -> event_application_area\n\n      }\n      else if ($elem.selfOrClosest('.ehel-segmented-button').length === 1) {\n        params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard('tab', linkName, psName));\n      }\n      else {\n        const map: {[key:string]: string} = {\n          'marker-footer-legal': 'footer_legal',\n          'marker-footer-nav': 'footer_main_navigation',\n          'marker-footer-quicklinks': 'footer_quick_links',\n          'marker-footer-myeh': 'footer_myeh'\n        };\n        //marker-footer-contact\n        if (psName === 'PS.MarketProvenEvidence') {\n          subtype = 'success_stories';\n        }\n        for (let markerClass in map) {\n          if ($elem.closest(`.${markerClass}`).length === 1) {\n            subtype = map[markerClass];\n            break;\n          }\n        }\n        let eventName:EventName = (subtype && ['more', 'less'].indexOf(subtype) > -1) ? 'show_more' : 'content_link';\n        eventName = (subtype && subtype === 'submit') ? 'form' : eventName;\n        if($elem.selfOrClosest('.marker-in-stock-wrapper').length === 0) {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard(eventName, linkName, psName, productId, productName, productBundleId));\n        } else {\n          params = Tracking.appendParamsExtern($elem, Tracking.buildParamsStandard(eventName, linkName, psName));\n        }``\n\n        if (teasername !== undefined) {\n          params.event_linkposition_teasername = teasername;\n        }\n      }\n      params.event_sft_for = sftFor;\n      params.event_target_id = params.event_target_id || targetId;\n      params.event_subtype = params.event_subtype || subtype;\n\n      // The \"back\" breadcrumb of the configuration view reports ck8 like the buttons inside the\n      // view. It sits outside the QuickSelect subtree, so the quickSelectTrackingInfo below never\n      // reaches it; it takes the order code from the attribute it carries as a marked receiver of\n      // eh.QuickSelectRv.writeOrderCode. Read from the element itself, not via selfOrClosest: the\n      // same marker also sits on containers (spare parts, cross-selling sliders) whose other\n      // links never reported ck8.\n      if ($elem.data(FullContentOverlayController.OVERLAY_TARGET_DATA) === FullContentOverlayController.OVERVIEW_TARGET) {\n        params.event_order_code = params.event_order_code ?? $elem.data('csTrackingOrderCode');\n      }\n\n      if (isQuickSelectEnabled) {\n        const trackingInfo = $elem.selfOrClosest( '.marker-cs-tracking-info').data('quickSelectTrackingInfo');\n        if (trackingInfo) {\n          params.event_order_code = params.event_order_code ?? trackingInfo.orderCode ?? productId;\n          if (!params.event_configuration_step) {\n            if (trackingInfo.fullyConfigured) {\n              params.event_configuration_step = 'fully configured';\n            }\n            else if (trackingInfo.currentStepIndex) {\n              params.event_configuration_step = `step ${trackingInfo.currentStepIndex}: ${trackingInfo.currentStepFeature ?? '00'}`;\n            }\n          }\n          const $btn = $elem.selfOrClosest('.eh-quickselector--toggle-row, .eh-quickselector--product-result-details-back-button');\n          let isShowMoreOrLess = $btn.length === 1;\n          if (isShowMoreOrLess) {\n            params.event_linkname = $btn.text().trim();\n          }\n          const $toggleButton = $elem.selfOrClosest('.eh-quickselector--toggle-button');\n          if ($toggleButton.length === 1) {\n            isShowMoreOrLess = true;\n            params.event_subtype = ($elem.selfOrClosest('.is-open').length === 1) ? 'quick_select_more' : 'quick_select_less';\n            params.event_linkname = $('.eh-label--state-inactive:hidden, .eh-label--state-active:hidden', $toggleButton).text().trim();\n          }\n          if (isShowMoreOrLess) {\n            params.event_name = 'show_more';\n          }\n        }\n        else if ($elem.selfOrClosest('.marker-configure-action').length === 1) {\n          delete params.event_subtype;\n        }\n        if (isPrefixContext && !isFooterSticky && params.event_subtype) {\n          params.event_subtype = 'quick_select_' + params.event_subtype;\n        }\n      }\n      else if ($quickSelect.length === 1 && $elem.selfOrClosest('.add-to-cart').length === 1) {\n        delete params.event_subtype;\n      }\n\n      const $trackingInfo = $elem.selfOrClosest('.marker-cs-tracking-info');\n      if ($trackingInfo.length === 1) {\n        params.event_document_doc_context = $trackingInfo.data('csTrackingDocumentContext');\n        params.event_document_doc_type = $trackingInfo.data('csTrackingDocumentType');\n        params.event_document_id = $trackingInfo.data('csTrackingDocumentId');\n        params.event_download_language = $trackingInfo.data('csTrackingDownloadLanguage');\n        params.event_download_type = $trackingInfo.data('csTrackingDownloadType');\n        params.event_download_version = $trackingInfo.data('csTrackingDownloadVersion');\n        params.event_headline_download = $trackingInfo.data('csTrackingDownloadTitle');\n      }\n      if (isPrefixContext && isFooterSticky && params.event_subtype) {\n        params.event_subtype = 'footer_' + params.event_subtype;\n      }\n      if(subtype && subtype.indexOf('search_page_result_', 0) === 0) {\n        $elem.selfOrClosest('.marker-quicksearch-results').each((_index, el) => {\n          const $resultInfo = $(el);\n          params.search_term =  $resultInfo.data('fulltextTerm')\n        })\n      } else if(subtype && subtype === 'close_drawer') {\n        params.event_pub_spot = null;\n        Tracking.setSiteExtendedEventId(params, 'warranty');\n      }\n      if($elem.hasClass('ehts-main-nav--close')) {\n        params.event_pub_spot = $elem.data('csTrackingPsName');\n      }\n      let dl = this.constructIdLayers($elem, params);\n      return {\n        target: $elem.get(0)!,\n        params: Tracking.revampEventParams(params)\n      };\n    }\n\n    private static revampEventParams(params: EventParams): EventParams {\n      $.each(params, (k, v) => {  // filter empty values\n        if (v === null || v === undefined || v.length === 0) {\n          delete params[k];\n        }\n        else {\n          params[k] = String(v).trim().replace(RegExp('\\\\s+', 'g'), ' ');\n        }\n        return true;\n      });\n      if(!params.event_id) {\n        params.event_id = Tracking.buildEventId(params);\n      }\n      return params;\n    }\n\n    private static buildEventId(params: EventParams): string {\n      const d = window.utag_data, arr = [\n        d.app_name,\n        d.site_country,\n        d.site_language,\n        d.site_h1,\n        d.site_h2,\n        d.site_h3,\n        d.site_h4,\n        d.site_h5,\n        d.site_h6,\n        d.site_h7,\n        params.event_name,\n        params.event_linkname\n      ];\n      return $.map(arr, function (item) {\n        return item;\n      }).join('.');\n    }\n\n    // uses 'data-cs-trck-pathid' 'data-cs-trck-vpage'\n    // search closest attr, if value starts with:\n    // '..' => search for next closest parent data attr and apply first (chaining)\n    // '.' => stop searching closest (boxing)\n    // collected values are applied in reverse order => outer to inner in html\n    // value examples\n    // '3.foo.bar' => parseIdPath(3.foo.bar); no further\n    // '..3.foo.bar' => search parent(s) and afterwards parseIdPath(3.foo.bar)\n    // '.' => stop chaining (defines a box); apply collected\n    // '.3.foo.bar' => add to collected and apply parseIdPath(3.foo.bar)\n    private static constructIdLayers(target: JQuery<HTMLElement>, params?: EventParams): { [key: string]: string } | null {\n      let attrNameS = params? 'data-cs-trck-pathid' : 'data-cs-trck-vpage';\n      let attrNameF =  params?  'csTrckPathid' : 'csTrckVpage';\n      let elm = target.selfOrClosest(`*[${attrNameS}]`);\n      let pathDesc = elm?.data(attrNameF);\n      if(pathDesc) {\n        let dataLayer: { [key: string]: string } = {};\n        dataLayer = $.extend({}, window.utag_data);\n        if(params) {\n          dataLayer.event_name = params.event_name;\n          dataLayer.event_linkname = params.event_linkname ?? '';\n        } else if(pathDesc.startsWith('*path')) {\n          pathDesc = pathDesc.substring(5);\n          attrNameS = 'data-cs-trck-pathid';\n          attrNameF = 'csTrckPathid';\n        }\n        let pathDescs = [];\n        let pd = pathDesc;\n        let el = elm;\n        while(pd && pd.startsWith('..')) {// find path-description in parents and apply first\n          pathDescs.push(pd.substring(2));// page, event only? impl: test for prefix\n          el = el.parent().closest(`*[${attrNameS}]`);\n          pd = el?.data(attrNameF);\n        }\n        pathDescs.push(pd);\n        pathDescs.reverse().forEach( (e) => this.parseIdPath(e, dataLayer));\n        if(!params) {\n          delete dataLayer.event_name ;\n          delete dataLayer.event_linkname ;\n          dataLayer.page_name = this.constructIdPath(dataLayer) || '';\n        } else {\n          if(dataLayer.event_name) {\n           params.event_name = dataLayer.event_name as EventName;\n          }\n          if(dataLayer.event_linkname) {\n            params.event_linkname = dataLayer.event_linkname;\n          }\n          params.event_id = Tracking.constructIdPath(dataLayer);\n        }\n        return dataLayer;\n      }\n      return null;\n    }\n\n    private static constructIdPath(dataLayer:{ [key: string]: string } | null): string | null {\n      if(dataLayer) {\n        let arr = [\n          dataLayer.app_name,\n          dataLayer.site_country,\n          dataLayer.site_language,\n          dataLayer.site_h1,\n          dataLayer.site_h2,\n          dataLayer.site_h3,\n          dataLayer.site_h4,\n          dataLayer.site_h5,\n          dataLayer.site_h6,\n          dataLayer.site_h7,\n          dataLayer.event_name,\n          dataLayer.event_linkname\n        ];\n        return $.map(arr, function (item) {\n          if(item) {\n            return item;\n          }\n        }).join('.');\n      }\n      return null;\n    }\n\n    // value examples\n    // 3.foo.bar => site_h3 = foo, site_h4 = bar, name=keep, linkname=keep\n    // .foo.bar => first empty site_hX = foo, site_hX+1 = bar, name = <keep>, linkname='space'\n    // foo.bar => first empty site_hX = foo, site_hX+1 = bar, name = <keep>, linkname='space'\n    // 3.foo.bar|open|more => site_h3 = foo, site_h4 = bar, name = open, linkname=more\n    // 3.foo.bar||more => site_h3 = foo, site_h4 = bar, name = <keep>, linkname=more\n    // .foo.bar| |more  => first empty site_hX = foo, site_hX+1 = bar, name = '', linkname='space'\n    private static parseIdPath(value: string, layers: {[key: string]: string}) {\n      if(value) {\n        let keyH = Tracking.findLastHeading(layers);\n        let keyHidx = parseInt(keyH?.substring('site_h'.length) ?? '0', 10) + 1;\n        let segm = value.split('.');\n        if(!segm[0]) {// '.3.foo|n|ln' => '','3','foo|n|ln'\n          segm = segm.slice(1);\n        }\n        if(!isNaN(+segm[0])) {// '3','foo|n|ln'\n          let keyHidx = +segm[0];\n          segm = segm.slice(1);\n        } // 'foo|n|ln'\n        let names = segm[segm.length-1]?.split('|') ?? [];\n        if(names.length > 1) {\n          segm[segm.length-1] = names[0];\n          if(names[1]) {\n            layers['event_name'] = names[1].trim();\n          }\n          if(names[2]) {\n            layers['event_linkname'] = names[2].trim();\n          }\n        }// 'foo'\n        if(!segm[0]) {\n          segm = segm.slice(1);\n        }\n        // The levels a path names can already sit in the data layer: an overlay keeps them\n        // there for as long as it is open, while the elements inside it still carry the same\n        // path. Writing at the first free slot would then repeat them (\"phase out.phase out\").\n        // Start where the existing tail already matches the head of the path, so a repeated\n        // write lands on top of itself and a deeper path only appends what is new.\n        let overlap = 0;\n        for(let k = Math.min(segm.length, keyHidx - 1); k > 0 && overlap === 0; k--) {\n          let same = true;\n          for(let n = 0; n < k && same; n++) {\n            same = layers['site_h'+(keyHidx - k + n)] === segm[n];\n          }\n          if(same) {\n            overlap = k;\n          }\n        }\n        keyHidx -= overlap;\n        let j = 0;\n        for(let i = keyHidx; i < 7; i++) {\n          layers['site_h'+i] = segm[j++];\n        }\n      }\n    }\n\n    private static setSiteExtendedEventId(params: EventParams, site_Next: string) {\n      const key = Tracking.findLastHeading(window.utag_data);\n      const nextKey = `site_h${parseInt(key?.substring('site_h'.length) ?? '0', 10) + 1}`;\n      const dataLayer: { [key: string]: string } = $.extend({}, window.utag_data);\n      dataLayer[nextKey] = site_Next;\n      params.event_id = Tracking.buildCustomEventId(dataLayer, params);\n    }\n\n    /* COM-2879 requires modified event_id on trackEvent()*/\n    private static buildCustomEventId(data: any, params: EventParams): string {\n      const arr = [\n        data.app_name,\n        data.site_country,\n        data.site_language,\n        data.site_h1,\n        data.site_h2,\n        data.site_h3,\n        data.site_h4,\n        data.site_h5,\n        data.site_h6,\n        data.site_h7,\n        params.event_name,\n        params.event_linkname\n      ];\n      return $.map(arr, function (item) {\n        if (item === null || item === undefined || item.length === 0) {\n          return undefined;\n        }\n        return item;\n      }).join('.');\n    }\n\n\n    public static trackForm($base: JQuery<HTMLElement>, isSnippetRequest = false) {\n      $('form.marker-tracking-form', $base).each((_index, elem) => {\n        const $form = $(elem),\n          $fields = $form.find('input, select, textarea'),\n          formName = Tracking.buildFormAction($form.data('csTrackingFormName'));\n        let errorFields = $form.data('csTrackingErrorFields');\n        if(!errorFields) {\n          errorFields = $fields.filter('.is-invalid').map((_index, elem) => {\n            return $(elem).data('trackId') || elem.id || $(elem).attr('name');\n          }).get().join('|');\n        }\n        let params: EventParams = {\n          event_name: 'form',\n          event_pub_spot: $form.selfOrClosest('*[data-cs-tracking-ps-name]').data('csTrackingPsName'),\n          form_asset_id: $form.data('fid')\n        };\n\n        if (errorFields) {\n          params.event_forms_error_message = $('.eh-validation-msg, .ehtw-form--error-message', $form).map((_index, elem) => {\n            return $(elem).text();\n          }).get().join(',');\n          params.event_forms_errors = errorFields;\n          params.event_forms_action = formName + '_error';\n          Tracking.trackEvent(Tracking.revampEventParams(params));\n        }\n        else {\n          const handleFieldFocus = () => {\n            $fields.off('focus', handleFieldFocus);\n            params.event_forms_action = formName + '_start';\n            Tracking.trackEvent(Tracking.revampEventParams(params));\n          };\n          $fields.on('focus', handleFieldFocus);\n        }\n        if($form.hasClass('marker-track-fields')) {\n          const handleFieldInteraction = ($event: TrackedEvent) =>  {\n            let $target = $($event.currentTarget);\n            let $initialTarget = $($event.target);\n            if ($event.__csTrackingProcessed === true\n              || $target.hasClass('disabled')\n              || $target.hasClass('inactive')\n              || $target.selfOrClosest('*[data-cs-tracking-no-track=\"true\"]').length === 1\n              || $target.closest('.flowplayer').length === 1\n              || $initialTarget.selfOrClosest('*[data-cs-tracking-no-track=\"true\"]').length === 1\n              || $initialTarget.selfOrClosest('.disabled').length === 1\n              || $initialTarget.selfOrClosest('.inactive').length === 1\n              || $target.hasClass('eh-trigger-link-target') && $initialTarget.selfOrClosest('.eh-link-target-exclude').length ===  1\n            ){\n              return;\n            }\n            $event.__csTrackingProcessed = true;\n\n            let evParams: EventParams = {\n              event_name: 'form',\n              event_pub_spot: $form.selfOrClosest('*[data-cs-tracking-ps-name]').data('csTrackingPsName')\n            };\n            if($target.is('select')) {\n              evParams.event_linkname = $target.find('option:selected').text();\n              let tid = $target.data('trackId') || $target.attr('id');\n              evParams.event_subtype = tid+':'+$target.val();\n              Tracking.trackEvent(Tracking.revampEventParams(evParams));\n            } else {\n              let inp = $target.selfOrFind('input:not(:hidden)') || $target.parent().find('input:not(:hidden)');\n              let $label = inp.parent().selfOrFind('label');\n              evParams.event_linkname = $label.text();\n              if(inp) {\n                let tid = inp.data('trackId') || inp.attr('id');\n                if(inp.is(':radio')) {\n                  evParams.event_subtype = tid+':'+inp.val();\n                } else if(inp.is(':checkbox')) {\n                  evParams.event_subtype = tid+':'+(inp.prop('checked') ?'check' : 'uncheck');\n                } else if(inp.is(':text')) {\n//                  if($event.type === 'change') {\n//                   evParams.event_subtype = tid + \":change\" ;\n//                  } else if($event.type === 'focusout') {\n//                    evParams.event_subtype = tid + \":autofill\";\n//                  } else {\n                    evParams.event_subtype = tid;\n//                  }\n                }\n                if(evParams.event_subtype) {\n                  Tracking.trackEvent(Tracking.revampEventParams(evParams));\n                }\n              }\n            }\n          };\n          $form.find('select').on('change', handleFieldInteraction);\n          $form.find('input:text, input:radio, input:checkbox').on('click', handleFieldInteraction);\n          $form.find('input:text').parent().selfOrFind('label').on('click', handleFieldInteraction);\n          $form.find('input:text').on('keyup', (ev) => {// keyup is only on focus gained\n            let code = ev.keyCode || ev.which;\n            if (code == 9) {\n              handleFieldInteraction(ev);\n            }\n          });\n          $form.find('input:text').on('change', (ev) => {\n            handleFieldInteraction(ev);\n          });\n        }\n      });\n\n      $('.marker-form-success', $base).each((_index, elem) => {\n        const $elem = $(elem),\n          params: EventParams = {\n          event_name: 'form',\n          event_forms_action: Tracking.buildFormAction($elem.data('csTrackingFormName') + '_success'),\n          event_pub_spot: $elem.selfOrClosest('*[data-cs-tracking-ps-name]').data('csTrackingPsName'),\n          form_asset_id: $elem.data('fid')\n        };\n        Tracking.trackEvent(Tracking.revampEventParams(params));\n\n        if (isSnippetRequest) {\n          Tracking.trackView($.extend({}, window.utag_data, {\n            goal_form_success: $elem.data('csTrackingFormSuccessGoal') || 'form_successful',\n            page_name: Tracking.buildPageName(['form successful']),\n            form_asset_id: $elem.data('fid')\n          }));\n        }\n      });\n    };\n\n    private static buildFormAction(formName: string): string {\n      const d = window.utag_data, arr = [\n        d.app_name,\n        d.site_country,\n        d.site_language,\n        formName\n      ];\n      return $.map(arr, function (item) {\n        return item;\n      }).join('.');\n    }\n\n    private static buildPageName(additionalSegments: string[], dataLayerOverrides = {}): string {\n      const d = $.extend({}, window.utag_data, dataLayerOverrides), arr = [\n        d.app_name,\n        d.site_country,\n        d.site_language,\n        d.site_h1,\n        d.site_h2,\n        d.site_h3,\n        d.site_h4,\n        d.site_h5,\n        d.site_h6,\n        d.site_h7\n      ].concat(additionalSegments || []);\n      return $.map(arr, function (item) {\n        return item;\n      }).join('.');\n    }\n\n    private static buildParamsStandard(eventName: EventName, linkName?: string, psName?: string, productId?: string, productName?: string, productBundleId?: string): EventParams {\n      return {\n        event_name: eventName,\n        event_linkname: linkName,\n        event_pub_spot: psName,\n        event_product_id: productId,\n        event_product_name: productName,\n        event_bundle_id: productBundleId\n      };\n    }\n\n    private static buildNavigationParams($navElem: JQuery<HTMLElement>, naviType: EventName): EventParams {\n      const successful = !!$navElem.attr('href'), targetId = $navElem.data('csTrackingTargetId'),\n          $segments = $navElem.add($navElem.parents()).map(function () {\n            const $el = $(this);\n            let $r;\n            $r = $el.filter('a');\n            if ($r.length > 0) {\n              return $r;\n            }\n            $r = $el.filter(function () {\n              return !!$(this).data('csTrackingTitle');\n            });\n            if ($r.length > 0) {\n              return $r;\n            }\n            return null;\n          }),\n          segments = $segments.map(function () {\n            return Tracking.trimStringOrNull($(this).data('csTrackingTitle') || $(this).text());\n          }).get()\n      ;\n      if ($navElem.parents('h3, article').length !== 0) {\n        segments.splice(segments.length - 1, 0, 'spot');\n      }\n      if (targetId) {\n        segments.push(targetId);\n      }\n      return Tracking.appendParamsExtern($navElem, {\n        event_name: naviType,\n        event_pub_spot: $navElem.data('csTrackingPsName'),\n        event_navpath: successful ? segments.join('.') : null,\n        event_target_id: successful ? targetId : null,\n        event_linkname: $navElem.filter('a').map(function () {\n          return Tracking.trimStringOrNull($(this).data('csTrackingTitle') || $(this).text());\n        }).get()[0],\n        event_subtype: $navElem.data('csTrackingTitleNormalized')\n      });\n    }\n\n    private static buildFlyoutNavigationParams($navElem: JQuery<HTMLElement>, naviType: EventName, psname?: string): EventParams {\n      const successful = !!$navElem.attr('href'), targetId = $navElem.data('csTrackingTargetId');\n      const navWrap = $navElem.closest('.ehel-navigation');\n      const isAddon = $navElem.selfOrClosest('.ehts-nav-addon').length > 0;\n      let pathElems: string[] = [];\n      let navCont = $navElem.closest('.marker-nav-main, .marker-nav-meta'), sel, navPar;\n      let linkname = $navElem.filter('a').map(function () {\n          return Tracking.trimStringOrNull($(this).data('csTrackingTitle') || $(this).text());\n        }).get()[0];\n      let linknameNorm = $navElem.filter('a').map(function () {\n          return Tracking.trimStringOrNull($(this).data('csTrackingTitleNormalized') || linkname);\n        }).get()[0];\n\n      let subtype: string | undefined = isAddon ? $navElem.selfOrClosest('*[data-cs-tracking-subtype]').data('csTrackingSubtype') : $navElem.selfOrClosest('*[data-cs-tracking-title-normalized]').data('csTrackingTitleNormalized');\n\n      let param = Tracking.appendParamsExtern($navElem, {\n        event_name: naviType,\n        event_pub_spot: psname,\n        event_target_id: successful && ('navi_main_expand' != naviType) ? targetId : null,\n        event_linkname: linkname,\n        event_subtype: subtype || $navElem.data('csTrackingTitleNormalized')\n      });\n\n      while(navCont.length) {\n        //console.log(\"nav len: \", navCont.length, navCont.hasClass('marker-nav-main'), navCont.data('csTrackingTitleNormalized'), navCont);\n        if(navCont.data('csTrackingTitleNormalized') && navCont.hasClass('marker-nav-main')) {\n          pathElems.unshift(navCont.data('csTrackingTitleNormalized'));\n        }\n        if(navCont.hasClass('ehts-nav-addon')) {\n          navCont = navCont.parent().closest('.marker-nav-main');\n        } else {\n          let sel = navCont.selfOrClosest('*[data-sub-navigation-menu]').data('subNavigationMenu');\n          if(sel) {\n            navCont = navWrap.find(`[data-navigation-menu=\"${sel}\"]`).selfOrClosest('.marker-nav-main');\n          } else {\n            navCont = $();\n          }\n        }\n      }\n      param.event_pub_spot = successful ? pathElems.join('|') : null;\n      pathElems.push(linknameNorm);\n      param.event_navpath = successful ? pathElems.join('.') : null;\n      param.event_subtype = subtype;\n      //console.log(\"DONE: \", param.event_pub_spot, $navElem, isAddon, subtype)\n      return param;\n    }\n\n\n    private static buildParamsBreadcrumbNavi($navElem: JQuery<HTMLElement>, productId?: string, productName?: string): EventParams | null {\n      if (!$navElem.attr('href')) {\n        return null;\n      }\n      const targetId = $navElem.data('csTrackingTargetId');\n      const segments = $navElem.closest('ul').find('li a:visible')\n          .add($navElem.closest('ol').find('li'))\n          .map((_index, el) => Tracking.trimStringOrNull($(el).data('csTrackingTitleNormalized') || $(el).text()))\n          .filter((_index, str) => str.length > 0)\n          .get()\n      ;\n      if (targetId) {\n        segments.push(targetId);\n      }\n\n      return Tracking.appendParamsExtern($navElem, {\n        event_name: 'breadcrumb',\n        event_pub_spot: $navElem.data('csTrackingPsName'),\n        event_navpath: segments.join('.'),\n        event_linkname: Tracking.extractTrackingTitle($navElem),\n        event_target_id: targetId,\n        event_product_id: productId,\n        event_product_name: productName\n      });\n    }\n\n    private static buildParamsSocialMedia($elem: JQuery<HTMLElement>): EventParams {\n      return {\n        event_name: 'socialmedia',\n        event_linkname: Tracking.trimStringOrNull($elem.data('csTrackingTitle') || $elem.text()),\n        event_subtype: 'footer_socialmedia'\n      };\n    }\n\n    private static appendParamsExtern($elem: JQuery<HTMLElement>, params: EventParams): EventParams {\n      const href = $elem.attr('href') || '',\n          targetHostname = $elem.prop('hostname'),\n          external = !!targetHostname && targetHostname !== window.location.hostname,\n          otherApp = external && new RegExp('^https?://(?:[^/]+\\\\.endress\\\\.com(?:\\\\.cn)?|endress[^/]*\\\\.my\\\\.site\\\\.com)(:[0-9]+)?($|/|\\\\?|#).*').test(href),\n          goals: string | string[] = $elem.closest('*[data-cs-tracking-goals]').data('csTrackingGoals')\n      ;\n      if (goals) {\n        if (Array.isArray(goals)) {\n          $.each(goals, function (index, value) {\n            params['goal_' + value] = value;\n          });\n        }\n        else {\n          params['goal_' + goals] = goals;\n        }\n      }\n      if (external) {\n        params.event_leaving_website = otherApp ? 'exit_other_application' : 'exit_non_endress';\n        params.event_outbound_link = href || null;\n        params.event_target_id = $elem.data('csTrackingTargetId');\n      }\n      return params;\n    }\n\n    private static trimStringOrNull(text: string): string {\n      return text.length > 0 ? text.trim() : text;\n    }\n\n    private static findLastHeading(stack: {[key: string]: string}) {\n      const prefix = 'site_h';\n      let i = 1;\n      let last: string | undefined;\n      do {\n        last = prefix + i;\n        i++;\n      }\n      while (i < 10 && stack[prefix + i] !== undefined);\n      return last;\n    }\n\n    private static trackSnippetContent($base: JQuery<HTMLElement>): void {\n      if($('.ehel-product-finder--results', $base).length > 0) {\n        return;\n      }\n      if($('.ehel-filter-block--results', $base).length > 0) {\n        return;\n      }\n      $('.marker-result-info', $base).each((_index, el) => {\n        const $resultInfo = $(el);\n        Tracking.trackView($.extend({}, window.utag_data, {\n          search_term: $resultInfo.data('fulltextTerm'),\n          search_results: $resultInfo.data('resultCount')\n        }));\n      });\n      Tracking.trackForm($base, true);\n    }\n\n    private static trackFilterSubmit($form: JQuery<HTMLElement>): void {\n      const formParams = Tracking.collectFormParams($form),\n        productBundleId = $form.selfOrClosest('*[data-cs-tracking-product-bundle-id]').data('csTrackingProductBundleId'),\n        productId = $form.selfOrClosest('*[data-cs-tracking-product-id]').data('csTrackingProductId')\n          || ($form.selfOrClosest('*[data-cs-product-root]').data('csProductRoot') || window.utag_data.product_id),\n        productName = $form.selfOrClosest('*[data-cs-tracking-product-name]').data('csTrackingProductName') || window.utag_data.product_name,\n        psName = $form.selfOrClosest('*[data-cs-tracking-ps-name]').data('csTrackingPsName'),\n        params = Tracking.buildParamsStandard('filter', undefined, psName, productId, productName, productBundleId),\n        change = $form.data('csTrackingAjaxChange'),\n        subtype = (change == 'filter_reset') ? 'reset filter' : (change == 'filters_clear')? 'reset filter' : 'filter_click';\n      ;\n      if (formParams.length === 0) {\n        return;\n      }\n      // Typing in the search field posts the filter form on every keystroke. That is not a\n      // filter change and must not be reported as one - EhFilterControls.trackTerm already\n      // reports the search itself, once as a search event and then as page views carrying\n      // the term.\n      if (change === eh.EhFilterRequest.CHANGE_TYPE_SEARCH) {\n        return;\n      }\n      if (subtype) {\n        if(subtype == 'reset filter') {// pc prodFinder\n          let linkName = (change == 'filters_clear')? Tracking.extractTrackingTitle($form.find('.marker-filters-clear')) : undefined;\n          let paramsExtra: EventParams = Tracking.buildParamsStandard('filter', linkName, psName, productId, productName, productBundleId);\n          paramsExtra.event_subtype = subtype;\n          Tracking.trackEvent(Tracking.revampEventParams(paramsExtra));\n        }\n        \n        params.event_subtype = subtype;\n        if(change === 'filter_sorting') {\n          let subtypeOpt = $form.find('.marker-sorting-click').data('csTrackingSubtype');\n          if(subtypeOpt) {\n            params.event_subtype = subtypeOpt;\n          }\n        }\n      }\n      $.extend(params, Tracking.analyzeFilterParams(formParams, 'event_filter_'));\n\n      if ($form.data('csTrackingIsSnippetRequest') !== true) {\n        Tracking.trackView($.extend({}, window.utag_data, {\n          page_name: Tracking.buildPageName([params.event_name])\n        }));\n      }\n\n      Tracking.trackEvent(Tracking.revampEventParams(params));\n    }\n\n\n    public static collectFormParams($form: JQuery<HTMLElement>): { 'k': string; 'v': string; }[] {\n      $form.find('input[type=\"text\"]').each(function () {\n        const $i = $(this);\n        if ($i.val() === $i.attr('placeholder')) {\n          $i.val('');\n        }\n      });\n      let noTrack = ($form.data('csTrackingNotrackParameter') || '').split(',');\n      return $.map($form.formSerialize().split('&'), function (kvStr) {\n        const kv = kvStr.split('=');\n        if (!kv[1]) {\n          return undefined;\n        }\n        if(noTrack.indexOf(kv[0]) > -1) {\n          return undefined;\n        }\n        const k = decodeURIComponent(kv[0]);\n        if (k.substring(k.length - 9) === '_original' && $form.find('input[type=\"hidden\"][name=\"' + k + '\"]').length === 1\n            && $form.find('input[type=\"checkbox\"][name=\"' + k.substring(0, k.length - 9) + '\"]').length === 1) {\n          return undefined;\n        }\n        // cut off scope\n        const sepPos = k.indexOf('.');\n        return {'k': (sepPos === -1 ? k : k.substring(sepPos + 1)).replace(/\\[\\d*]$/g, ''), 'v': decodeURIComponent(kv[1])};\n      })\n    }\n\n\n    /**\n     * Filter state of a *local* (client-side, non-AJAX) filter form, in the shape\n     * analyzeFilterParams expects. Counterpart of collectFormParams for filters that\n     * never issue a snippet request, so trackFilterSubmit never runs for them.\n     *\n     * Two sources, mirroring how a spare-parts filter selection is reported:\n     *  - the named option checkboxes -> collectFormParams gives the group from the\n     *    field name (\"spare.group[]\" -> \"group\"); the technical option value\n     *    (\"cat_Electronic_tac\") is reduced to the plain criterion (\"Electronic\")\n     *  - each filter group with a selection additionally contributes the dimension\n     *    declared on its wrapper as data-trck-filter=\"<group>:<value>\", e.g.\n     *    \"type:spareparts\" -- that one has no checkbox of its own\n     */\n    public static collectLocalFilterParams($form: JQuery<HTMLElement>): { 'k': string; 'v': string; }[] {\n      const params = Tracking.collectFormParams($form).map(param => {\n        return {k: param.k, v: param.v.replace(/^cat_/, '').replace(/_tac$/, '')};\n      });\n      $form.find(`.${FiltersLocalController.FILTER_WRAPPER_CLASSNAME}[data-trck-filter]`).each((_index, wrapper) => {\n        const $wrapper = $(wrapper);\n        if ($wrapper.find('input[type=\"checkbox\"]:checked').length === 0) {\n          return;\n        }\n        const declared = String($wrapper.data('trckFilter') || ''), sepPos = declared.indexOf(':');\n        if (sepPos > 0) {\n          params.push({k: declared.substring(0, sepPos), v: declared.substring(sepPos + 1)});\n        }\n      });\n      return params;\n    }\n\n\n    public static analyzeFilterParams(formParams: { 'k': string; 'v': string; }[], filterPrefix = ''): {[key: string]: string | undefined | null} {\n      let params: {[key: string]: string | undefined | null} = {};\n      const sep1 = ',', sep2 = '|', sep3 = ':';\n      let filterMap: {[key: string]: string[]} = {}, filterNames: string[], filterValues: string[] = [], filterCriteria: string[] = [];\n      $.each(formParams, function () {\n        if (filterMap[this.k] === undefined) {\n          filterMap[this.k] = [this.v];\n        }\n        else {\n          filterMap[this.k].push(this.v);\n        }\n      });\n      filterNames = $.map(filterMap, function (_v, k: string) {\n        return k;\n      });\n      filterNames.sort();\n      $.map(filterNames, function (k) {\n        filterMap[k].sort();\n        filterValues = filterValues.concat(filterMap[k]);\n        filterCriteria.push([k, filterMap[k].join(sep1)].join(sep3));\n        if (filterPrefix !== '') {\n          params[(filterPrefix + k).replace(/-/g, '_')] = filterMap[k].join(sep1);\n        }\n      });\n      params.event_filter_groups = filterNames.join(sep1);\n      params.event_filter_criteria = filterValues.join(sep1);\n      params.event_filter_combination = filterCriteria.join(sep2);\n      params.event_filter_amount_groups = String(filterNames.length);\n      return params;\n    }\n\n    public static analyzeFlyoutParams(formParams: { 'k': string; 'v': string; }[]): {[key: string]: string | undefined | null} {\n      let params: {[key: string]: string | undefined | null} = {};\n      const sep1 = ',', sep2 = '|', sep3 = ':';\n      let filterMap: {[key: string]: string[]} = {}, filterNames: string[], filterValues: string[] = [], filterCriteria: string[] = [];\n      let key, ks;\n      $.each(formParams, function () {\n        ks = this.k.split('.');\n        key = ks[ks.length-1].replace('[]', '');\n        if (filterMap[key] === undefined) {\n          filterMap[key] = [this.v];\n        }\n        else {\n          filterMap[key].push(this.v);\n        }\n      });\n      filterNames = $.map(filterMap, function (_v, k: string) {\n        return k;\n      });\n      if(filterNames.length) {\n        filterNames.sort();\n        $.map(filterNames, function (k) {\n          filterMap[k].sort();\n          filterValues = filterValues.concat(filterMap[k]);\n          filterCriteria.push([k, filterMap[k].join(sep1)].join(sep3));\n        });\n        //params.event_filter_groups = filterNames.join(sep1);\n        //params.event_filter_criteria = filterValues.join(sep1);\n        params.event_filter_combination = filterCriteria.join(sep2);\n        //params.event_filter_amount_groups = String(filterNames.length);\n      }\n      return params;\n    }\n\n    private static appendSiuAdds(siu: string, params: EventParams, $elem: JQuery<HTMLElement>) {\n      if(siu) {\n        switch(siu) {\n          case 'lrv':\n            params.learning_resource_type = 'Video (LRV)';\n            break;\n          case 'lra':\n            params.learning_resource_type = 'Article (LRA)';\n            break;\n        }\n      }\n    }\n      \n    private static appendSPDData($elem: JQuery<HTMLElement>, params: EventParams) {\n      let spdOrderCode: string | undefined;\n      let spdProductName: string | undefined;\n      try {\n        const locale = document.documentElement.lang || 'en';\n        const cached = window.localStorage.getItem(`eh.productInfo.${locale}.${$elem.data('csTrackingProductId') || params.event_product_id}`);\n        if (cached) {\n          const data = JSON.parse(cached);\n          spdOrderCode = data?.result?.orderCode;\n          spdProductName = data?.result?.productLabel;\n        }\n      } catch (_e) {}\n      params.event_product_name = spdProductName || $elem.data('csTrackingProductName') || params.event_product_name;\n      params.event_order_code = spdOrderCode || $elem.data('csTrackingOrderCode') || params.event_order_code;\n    }\n  }\n\n  class ScrollDepthTracker {\n    private reportMax = 100;\n    private reported = 0;\n    private reportStep = 10;\n\n    private scroller:HTMLElement|null = null;\n    private maxPos = -1;\n\n    private scheduled: any;\n\n    constructor() {\n      this.resized = this.resized.bind(this)\n      this.scrolled = this.scrolled.bind(this)\n      window.addEventListener(\"resize\", this.resized);\n      document.addEventListener(\"scroll\", (event) => {\n        let sp = this.scrolled();// scheduled\n        this.trackHeight(sp, true);\n      });\n      this.resized();\n      window.setTimeout(() => {\n        let sp = this.scrolled();\n        this.trackHeight(sp, false);\n      }, 1000);\n    }\n\n    resized():void {\n      this.scroller = this.getScrollParent($('.eh-main')[0]);\n      this.maxPos = -1;\n    }\n\n    scrolled():number {\n      if(this.scroller) {\n        let pos = this.scroller.scrollTop || 0;\n        if(pos > this.maxPos) {\n          this.maxPos = pos;\n          return ((pos + this.scroller.clientHeight) / this.scroller.scrollHeight) * 100;\n        }\n      }\n      return -1;\n    }\n\n    private normalizeStep(x:number):number {\n      if(this.reportStep > 0) {\n        return Math.min((Math.floor(x / this.reportStep) * this.reportStep), this.reportMax);\n      }\n      return Math.min(x, this.reportMax);\n    }\n\n    public trackHeight(h:number, stepping:boolean):void {\n      if(this.reported < h) {\n        //console.log(\"trackHeight 1: \", this.reported, h);\n        if(stepping && this.reportStep > 0) {\n          let t = this.normalizeStep(this.reported + this.reportStep);\n          while( t <= h && this.reported < this.reportMax) {\n            this.reported = t;\n            this.schedule(this.trackSD, this.reported);\n            t = this.normalizeStep(t + this.reportStep);\n          }\n        } else {\n          this.reported = this.normalizeStep(h);\n          this.schedule(this.trackSD, this.reported);\n        }\n      }\n    }\n\n    private trackSD(h:number):void {\n      //console.log(\"trakSD \", h);\n      Tracking.trackScrollDepth(''+h);\n    }\n\n    private schedule(f:Function, arg:any):void {\n      if(this.scheduled) {\n        window.clearTimeout(this.scheduled);\n        this.scheduled = null;\n      }\n      this.scheduled = window.setTimeout ( f, 250, arg);\n    }\n\n    private isScrollable = (node: Element) => {\n      if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n        return false\n      }\n      const style = getComputedStyle(node)\n      return ['overflow', 'overflow-x', 'overflow-y'].some((propertyName) => {\n        const value = style.getPropertyValue(propertyName)\n        return value === 'auto' || value === 'scroll'\n      })\n    }\n\n    private getScrollParent = (node: HTMLElement): HTMLElement => {\n      let currentParent = node.parentElement\n      while (currentParent) {\n        if (this.isScrollable(currentParent)) {\n          return currentParent\n        }\n        currentParent = currentParent.parentElement\n      }\n      return (document.scrollingElement || document.documentElement) as HTMLElement\n    }\n\n  }\n\n  class TrackingSiteHierarchy {\n\n    private static readonly DL_KEY_PREFIX = 'site_h';\n\n    private readonly headings: string[];\n\n    constructor(private readonly dataLayer: DataLayer) {\n      this.headings = [];\n      this.parseDataLayer();\n\n      Tracking.earlyOnsiteNavigations\n        .splice(0, Tracking.earlyOnsiteNavigations.length)\n        .forEach((args: OnsiteNavigation) => {\n        this.handleOnsiteNavigation.apply(this, args);\n      });\n    }\n\n    public handleOnsiteNavigation(newHeading: string, siblingHeadings: string[] = []) {\n      const index = this.headings.findIndex(heading => {\n        return siblingHeadings.indexOf(heading) !== -1;\n      });\n      if (index > -1) {\n        this.headings.splice(index);\n      }\n      if(newHeading && newHeading.length) {\n        this.headings.push(newHeading);\n      }\n      this.synchronizeDataLayer();\n    }\n\n    private parseDataLayer() {\n      for (let i = 1, key = TrackingSiteHierarchy.DL_KEY_PREFIX + i, heading = this.dataLayer[key];\n           heading;\n           i++, key = TrackingSiteHierarchy.DL_KEY_PREFIX + i, heading = this.dataLayer[key]) {\n        this.headings.push(heading);\n      }\n    }\n\n    private synchronizeDataLayer() {\n      for (let i = 1, key = TrackingSiteHierarchy.DL_KEY_PREFIX + i, heading = this.dataLayer[key];\n           heading;\n           i++, key = TrackingSiteHierarchy.DL_KEY_PREFIX + i, heading = this.dataLayer[key]) {\n        if (i > this.headings.length) {\n          delete this.dataLayer[key];\n        }\n      }\n      this.headings.forEach((heading, index) => {\n        this.dataLayer[`${TrackingSiteHierarchy.DL_KEY_PREFIX}${index + 1}`] = heading;\n      });\n    }\n\n  }\n\n\n  const monitorFunctionCall = (func: Function & {'name'?: string}, self: object) => {\n    //console.log('monitoring', func, self);\n    const functionName = func.name, fnDbg = (val: object) => {\n      //noinspection JSUnusedLocalSymbols\n      const fnPrintParam = (v: string, k: string) => {\n        Tracking.qaLogger.info(k + (k.length >= 8 ? '' : '\\t') + (k.length >= 16 ? '' : '\\t') + (k.length >= 24 ? '' : '\\t') + ' = ' + v);\n      };\n      if (typeof val === 'object') {\n        $.map(val, fnPrintParam);\n      }\n      return null;\n    };\n\n    return function () {\n      Tracking.qaLogger.info('#_#_#_#_#_#_#_#_#_#_#_#_#');\n      $.map(arguments, fnDbg);\n      const args = $.makeArray(arguments);\n      let formatStr = '#executing %s(';\n      args.unshift(functionName);\n      for (let i = 0; i < arguments.length; i++) {\n        if (i > 0) {\n          formatStr += ', ';\n        }\n        formatStr += '%o';\n      }\n      args.unshift(formatStr + ') context: %o');\n      args.push(self || undefined);\n      //console.log.apply(console, args);\n      return func.apply(self || undefined, arguments);\n    };\n  };\n\n  const fixUDO = (func: () => void, self: object) => {\n    return function () {\n      if (typeof arguments[0] === 'object') {\n        for (const p in arguments[0]) {\n          if (arguments[0].hasOwnProperty(p)) {\n            const v = arguments[0][p];\n            if (typeof v === 'boolean') {\n              arguments[0][p] = v ? '1' : '0';\n            }\n            else if (typeof v === 'number') {\n              arguments[0][p] = '' + v;\n            }\n          }\n        }\n      }\n      return func.apply(self || undefined, arguments);\n    };\n  };\n}","namespace eh {\n\n  interface EhVideoPlayer extends Flowplayer, JQuery<HTMLElement> {\n    lastScrollPosY: number;\n    ehFullScreenCloseHandler: () => void;\n  }\n  \n  export class VideoPlayer {\n    \n    private static readonly maxWidthForMobile = 1025;\n    \n    static init($base: JQuery<HTMLElement>): void {\n      $('.eh-player', $base).each((_index, element) => {\n        const $el = $(element);\n        try {\n          const player = $el.flowplayer({\n            'fullscreen': true,\n            'key': '$592552535714410, $727343743838562',\n            'logo': '',\n            'native_fullscreen': true,\n            'share': false,\n            'splash': false,\n            'chromecast': false\n          }).data('flowplayer');\n          // show the play button again when video has paused\n          player.on('pause', (): void => {\n            setTimeout(() => {\n              $('.fp-ui .fp-play', $(element)).addClass('fp-visible');\n            }, 250);\n          });\n          player.on('resume', (): void => {\n            $('.eh-player').each((idx, elem) => {\n              if($(elem).data('ignoreOneEvent')) {\n                $(elem).data('ignoreOneEvent', false);\n                return;\n              }\n              const fp: Flowplayer = $(elem).data('flowplayer');\n              if(fp !== player) {\n                fp.pause();\n              }\n            });\n          });\n          setTimeout(() => {\n            const fp = $el.data('flowplayer');\n            if (fp && !fp.ready) {\n              const v = $('video', $el).get(0);\n              if (v instanceof HTMLMediaElement) {\n                v.load();\n              }\n            }\n          }, 50);\n          $el.selfOrFind(`.${eh.OVERLAY_EVENTS.EVENT_NODE_CLASS}`).on(OVERLAY_EVENTS.LAYER_STATE_EVENT, (e: JQuery.TriggeredEvent, metrics: OVERLAY_EVENT_PARAMS) => {\n            if(metrics.state == OVERLAY_EVENTS.LAYER_STATE_CLOSED) {\n              player.pause();\n            } \n            if(metrics.state == OVERLAY_EVENTS.LAYER_STATE_OPENED && $el.hasClass('ehts-autoplay')) {\n              // player.play(); //demanded by testimonial video in overlay\n              $el.data('ignoreOneEvent', true);// !== fails in overlay ?!?\n              player.resume();\n            } \n          });\n        }\n        catch (e) {\n          // error in fp...\n        }\n      }).on('click', ($event) => {\n        const $el = $($event.currentTarget);\n        const fp: Flowplayer = $el.data('flowplayer');\n        if (fp && fp.paused && !fp.isFullscreen && window.screen.width < VideoPlayer.maxWidthForMobile) {\n          const ehFpInstance: EhVideoPlayer = fp as EhVideoPlayer;\n          ehFpInstance.lastScrollPosY = eh.ScrollPage.getScrollPosition();\n          if (eh.isIOSSafari() && !ehFpInstance.ehFullScreenCloseHandler) {\n            ehFpInstance.ehFullScreenCloseHandler = () => eh.ScrollPage.scrollTo(ehFpInstance.lastScrollPosY);\n            ehFpInstance.on('fullscreen-exit', ehFpInstance.ehFullScreenCloseHandler);\n          }\n          fp.fullscreen();\n        }\n      });\n    }\n  }\n  \n}\n","namespace eh {\n\n  /**\n   * Keyboard navigation for the quick-selection radio groups: ArrowUp/Down/Left/Right\n   * move focus between the (enabled) radios of a group WITHOUT selecting them, so a\n   * user can review options before committing with Space/Enter. Ported from the\n   * endress-webcomponents `eh-quick-selection` controller.\n   */\n  export class EhQuickSelectionController {\n\n    public static readonly INPUT_CLASSNAME = 'ehel-quick-selection--input';\n    public static readonly INPUT_SELECTOR = `.${EhQuickSelectionController.INPUT_CLASSNAME}`;\n\n    static init($base: JQuery<HTMLElement>): void {\n      $base.toArray().forEach((base: HTMLElement) => new EhQuickSelectionController(base));\n    }\n\n    private readonly radios: NodeListOf<HTMLInputElement> | undefined;\n\n    private vm: EhQuickSelectionViewModel;\n\n    constructor(\n      private readonly base: HTMLElement | null,\n    ) {\n      this.radios = this.base?.querySelectorAll<HTMLInputElement>(EhQuickSelectionController.INPUT_SELECTOR);\n      this.vm = new EhQuickSelectionViewModel();\n\n      this.init();\n    }\n\n    private init(): void {\n      this.registerControls();\n    }\n\n    private registerControls(): void {\n      this.radios?.forEach((radio: HTMLInputElement): void => {\n        radio.addEventListener('keydown', this.onRadioKeyDown);\n      });\n    }\n\n    private onRadioKeyDown = (event: KeyboardEvent): void => {\n      this.vm.keepFocusWithoutSelection(event);\n    }\n  }\n\n  class EhQuickSelectionViewModel {\n\n    public keepFocusWithoutSelection(event: KeyboardEvent): void {\n      if (!(event.target instanceof HTMLInputElement)) {\n        return;\n      }\n\n      const key = event.key;\n      const isForward = key === 'ArrowDown' || key === 'ArrowRight';\n      const isBackward = key === 'ArrowUp' || key === 'ArrowLeft';\n\n      if (!isForward && !isBackward) {\n        return;\n      }\n\n      event.preventDefault();\n\n      const radioGroup = document.querySelectorAll<HTMLInputElement>(`${EhQuickSelectionController.INPUT_SELECTOR}[name=\"${event.target.name}\"]`);\n      const radios = Array.from(radioGroup).filter((radio: HTMLInputElement) => !radio.disabled);\n\n      if (radios.length === 0) {\n        return;\n      }\n\n      const currentIndex = radios.indexOf(event.target);\n\n      if (currentIndex === -1) {\n        return;\n      }\n\n      const nextIndex = isForward\n        ? (currentIndex + 1) % radios.length\n        : (currentIndex - 1 + radios.length) % radios.length;\n\n      radios[nextIndex].focus();\n    }\n  }\n}\n"]}