{"version":3,"sources":["webpack:///./node_modules/@babel/runtime-corejs3/node_modules/core-js-pure/modules/es.string.trim.js","webpack:///./node_modules/@babel/runtime-corejs3/node_modules/core-js-pure/stable/instance/trim.js","webpack:///./node_modules/flightjs/build/flight.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/@babel/runtime-corejs3/node_modules/core-js-pure/es/string/virtual/trim.js","webpack:///./node_modules/@babel/runtime-corejs3/node_modules/core-js-pure/internals/string-trim-forced.js","webpack:///./node_modules/@babel/runtime-corejs3/node_modules/core-js-pure/es/instance/trim.js"],"names":["$","$trim","trim","target","proto","forced","forcedStringTrimMethod","this","parent","module","exports","factory","modules","installedModules","__webpack_require__","moduleId","id","loaded","call","m","c","p","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","undefined","advice","component","compose","debug","logger","registry","utils","apply","around","base","wrapped","i","l","arguments","length","args","Array","bind","before","beforeFn","obj","fnName","after","afterFn","res","unbound","withAdvice","forEach","method","fn","split","mutateProperty","withBase","withLogging","functionNameRegEx","ignoredMixin","teardownAll","componentInfo","findComponentInfo","Object","keys","instances","k","info","instance","teardown","attachTo","selector","Error","options","merge","each","node","isAttachedTo","initialize","prettyPrintMixins","mixedIn","prototype","map","mixin","name","toString","match","filter","Boolean","join","define","mixins","Component","enabled","describe","newComponent","newPrototype","create","concat","defaults","attrDef","constructor","unshift","withRegistration","components","slice","reset","dontLock","setWritability","writable","key","indexOf","propertyWritability","hasOwnProperty","push","traverse","util","searchTerm","window","path","prop","tests","console","log","search","expected","error","ALL","logFilter","eventNames","actions","saveLogFilter","localStorage","setItem","ignored","enable","getItem","thisProp","retrieveLogFilter","DEBUG","warn","message","find","byName","byNameContains","byType","byValue","byValueCoerced","custom","events","logByAction","logByName","logAll","logNone","actionSymbols","on","trigger","off","action","eventArgs","eventType","elem","payload","toRegExp","actionLoggable","nameLoggable","pop","$node","type","expr","test","RegExp","replace","some","e","result","tagName","toLowerCase","className","elemToString","groupCollapsed","Function","toArray","groupEnd","parseEventArgs","element","callback","end","matchEvent","a","b","ComponentInfo","attachedTo","addInstance","instanceInfo","InstanceInfo","identity","removeInstance","indexOfNode","splice","removeComponentInfo","addBind","event","removeBind","allInstances","inst","index","which","findInstanceInfo","getBoundEventNames","ev","findInstanceInfoByNode","thisInstanceInfo","componentOn","boundCallback","otherArgs","canWriteProtect","writeProtectSupported","propertyIsEnumerable","getOwnPropertyDescriptor","isDomObj","nodeType","from","len","arr","extend","extra","protect","getEnumerableProperty","funcs","uniqueArray","array","u","debounce","func","wait","immediate","timeout","context","later","callNow","clearTimeout","setTimeout","throttle","throttling","more","whenDone","countThen","num","delegate","rules","data","isPropagationStopped","closest","currentTarget","el","once","ran","defineProperty","op","componentId","checkSerializable","postMessage","warnAboutReferenceType","initAttributes","attrs","incomingKeys","definedKeys","attr","initDeprecatedAttributes","proxyEventTo","targetEvent","$element","defaultFn","lastIndex","lastArg","defaultBehavior","Event","eventData","isDefaultPrevented","originalCb","origin","resolveDelegateRules","bound","boundFunctions","ruleInfo","r","select","attributeKey","attributes","Attributes","defaultAttrs","jquery","global","noGlobal","deletedIds","class2type","hasOwn","support","version","jQuery","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","isArraylike","isWindow","get","pushStack","elems","ret","prevObject","first","eq","last","j","sort","src","copyIsArray","copy","clone","deep","isFunction","isPlainObject","isArray","expando","Math","random","isReady","msg","noop","isNumeric","parseFloat","isEmptyObject","ownLast","globalEval","execScript","camelCase","string","nodeName","text","makeArray","results","inArray","max","second","grep","invert","matches","callbackExpect","arg","value","guid","proxy","tmp","now","Date","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","MAX_NEGATIVE","push_native","list","booleans","whitespace","characterEncoding","identifier","pseudos","rwhitespace","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","els","seed","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","getElementsByTagName","getElementsByClassName","qsa","getAttribute","setAttribute","toSelector","testContext","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","shift","markFunction","assert","div","createElement","removeChild","addHandle","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","hasCompare","doc","defaultView","top","addEventListener","attachEvent","appendChild","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","elements","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","dir","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","matcher","unmatched","innerText","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","disabled","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","tokens","addCombinator","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","needsContext","rsingleTag","risSimple","winnow","qualifier","not","self","is","rootjQuery","charAt","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","sibling","until","n","has","targets","pos","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","readyList","rnotwhite","optionsCache","detach","removeEventListener","completed","detachEvent","readyState","Callbacks","object","flag","createOptions","firing","memory","fired","firingLength","firingIndex","firingStart","stack","fire","stopOnFalse","disable","remove","empty","lock","locked","fireWith","Deferred","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","remaining","updateFunc","values","notifyWith","resolveWith","readyWait","holdReady","hold","body","triggerHandler","frameElement","doScroll","doScrollCheck","strundefined","inlineBlockNeedsLayout","container","style","cssText","zoom","offsetWidth","deleteExpando","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","thisCache","internalKey","isNode","toJSON","internalRemoveData","cleanData","hasData","removeData","_data","_removeData","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","css","access","chainable","emptyGet","raw","bulk","rcheckableType","fragment","createDocumentFragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","createSafeFragment","nodeNames","safeFrag","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","isTrigger","namespace_re","noBubble","parentWindow","preventDefault","_default","fix","handlerQueue","delegateTarget","preDispatch","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","button","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","focus","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","fragmentDiv","getAll","found","fixDefaultChecked","defaultChecked","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultSelected","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","shrinkWrapBlocksVal","elemdisplay","actualDisplay","display","getDefaultComputedStyle","defaultDisplay","write","close","shrinkWrapBlocks","width","getStyles","curCSS","rmargin","rnumnonpx","rposition","addGetHookIf","conditionFn","hookFn","condition","getComputedStyle","opener","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","pixelPositionVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","computeStyleTests","marginRight","offsetHeight","opacity","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","boxSizingReliable","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","showHide","show","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","cssNumber","cssProps","$1","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","swing","cos","PI","fxNow","timerId","opt","rfxtypes","rfxnum","rrun","animationPrefilters","opts","oldfire","anim","dataShow","unqueued","overflow","overflowX","overflowY","createTween","tweeners","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","tweens","specialEasing","originalProperties","originalOptions","gotoEnd","rejectWith","propFilter","timer","complete","tweener","prefilter","speed","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","bool","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","unbind","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","parseXML","DOMParser","parseFromString","ActiveXObject","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","s","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","code","status","abort","statusText","finalText","success","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","response","modified","firstDataType","ct","finalDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","createStandardXHR","createActiveXHR","xhrId","xhrCallbacks","xhrSupported","XMLHttpRequest","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","_jQuery","_$","noConflict","w","entryVirtual","PROPER_FUNCTION_NAME","PROPER","fails","whitespaces","METHOD_NAME","isPrototypeOf","StringPrototype","it","own"],"mappings":";iGACA,IAAIA,EAAI,EAAQ,YACZC,EAAQ,EAAQ,YAA4BC,KAKhDF,EAAE,CAAEG,OAAQ,SAAUC,OAAO,EAAMC,OAJN,EAAQ,WAIMC,CAAuB,SAAW,CAC3EJ,KAAM,WACJ,OAAOD,EAAMM,U,2BCTjB,IAAIC,EAAS,EAAQ,YAErBC,EAAOC,QAAUF,G,4BCFjB,YACA,IAAiDG,IASxC,WACT,OAAgB,SAAUC,GAEhB,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUL,QAGnC,IAAID,EAASI,EAAiBE,GAAY,CACzCL,QAAS,GACTM,GAAID,EACJE,QAAQ,GAUT,OANAL,EAAQG,GAAUG,KAAKT,EAAOC,QAASD,EAAQA,EAAOC,QAASI,GAG/DL,EAAOQ,QAAS,EAGTR,EAAOC,QAcf,OATAI,EAAoBK,EAAIP,EAGxBE,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,GAGjBP,EAAoB,GAvCrB,CA0CN,CAEJ,SAASL,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAC7BR,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,SAc4DU,KAb/ED,EAAgC,SAASE,EAAQC,EAAWC,EAASC,EAAOC,EAAQC,EAAUC,GAC/F,aAEA,MAAO,CACLN,OAAQA,EACRC,UAAWA,EACXC,QAASA,EACTC,MAAOA,EACPC,OAAQA,EACRC,SAAUA,EACVC,MAAOA,IAGTC,MAAMtB,EAASY,MAA+Eb,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAC7BR,EAAoB,IACnBS,EAAgC,SAASQ,GAC1C,aAEA,IAAIN,EAAS,CAEXQ,OAAQ,SAASC,EAAMC,GACrB,OAAO,WAEL,IAAIC,EAAI,EAAGC,EAAIC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,EAAI,GAEtD,IADAG,EAAK,GAAKN,EAAKQ,KAAKnC,MACb6B,EAAIC,EAAGD,IACZI,EAAKJ,EAAI,GAAKE,UAAUF,GAE1B,OAAOD,EAAQH,MAAMzB,KAAMiC,KAI/BG,OAAQ,SAAST,EAAMS,GACrB,IAAIC,EAA6B,mBAAVD,EAAwBA,EAASA,EAAOE,IAAIF,EAAOG,QAC1E,OAAO,WAEL,OADAF,EAASZ,MAAMzB,KAAM+B,WACdJ,EAAKF,MAAMzB,KAAM+B,aAI5BS,MAAO,SAASb,EAAMa,GACpB,IAAIC,EAA2B,mBAATD,EAAuBA,EAAQA,EAAMF,IAAIE,EAAMD,QACrE,OAAO,WACL,IAAIG,GAAOf,EAAKgB,SAAWhB,GAAMF,MAAMzB,KAAM+B,WAE7C,OADAU,EAAQhB,MAAMzB,KAAM+B,WACbW,IAMXE,WAAY,WACV,CAAC,SAAU,QAAS,UAAUC,SAAQ,SAASjC,GAC7CZ,KAAKY,GAAK,SAASkC,EAAQC,GACXD,EAAOnD,OAAOqD,MAAM,KAE1BH,SAAQ,SAAShB,GACvBL,EAAMyB,eAAejD,KAAM6B,GAAG,WAO5B,MANsB,mBAAX7B,KAAK6B,GACd7B,KAAK6B,GAAKX,EAAON,GAAGZ,KAAK6B,GAAIkB,GAE7B/C,KAAK6B,GAAKkB,EAGL/C,KAAK6B,QAEb7B,SAEJA,QAIP,OAAOkB,GACPO,MAAMtB,EAASY,QAAiEE,IAAlCD,IAAgDd,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAC7BR,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,IACnBS,EAAgC,SAASE,EAAQM,EAAOJ,EAAS8B,EAAU3B,EAAU4B,EAAa9B,GACnG,aAEA,IAAI+B,EAAoB,sBACpBC,EAAe,CACjBH,UAAU,EACVC,aAAa,GAIf,SAASG,IACP,IAAIC,EAAgBhC,EAASiC,kBAAkBxD,MAE/CuD,GAAiBE,OAAOC,KAAKH,EAAcI,WAAWd,SAAQ,SAASe,GACrE,IAAIC,EAAON,EAAcI,UAAUC,GAG/BC,GAAQA,EAAKC,UACfD,EAAKC,SAASC,cAKpB,SAASC,EAASC,GAIhB,IAFA,IAAInC,EAAIC,UAAUC,OACdC,EAAO,IAAIC,MAAMJ,EAAI,GAChBD,EAAI,EAAGA,EAAIC,EAAGD,IACrBI,EAAKJ,EAAI,GAAKE,UAAUF,GAG1B,IAAKoC,EACH,MAAM,IAAIC,MAAM,oFAGlB,IAAIC,EAAU3C,EAAM4C,MAAM3C,MAAMD,EAAOS,GACnCsB,EAAgBhC,EAASiC,kBAAkBxD,MAE/CP,EAAEwE,GAAUI,KAAK,SAASxC,EAAGyC,GACvBf,GAAiBA,EAAcgB,aAAaD,KAKhD,IAAKtE,MAAMwE,WAAWF,EAAMH,IAC5BhC,KAAKnC,OAGT,SAASyE,IAGP,OADczE,KAAK0E,SAAW1E,KAAK2E,UAAUD,SAAW,IACzCE,KAAI,SAASC,GAC1B,GAAkB,MAAdA,EAAMC,KAAc,CAEtB,IAAIlE,EAAIiE,EAAME,WAAWC,MAAM5B,GAC/B,OAAQxC,GAAKA,EAAE,GAAMA,EAAE,GAAK,GAE9B,OAASyC,EAAawB,EAAMC,MAAqB,GAAbD,EAAMC,QACzCG,OAAOC,SAASC,KAAK,MAO1B,SAASC,IAIP,IAFA,IAAItD,EAAIC,UAAUC,OACdqD,EAAS,IAAInD,MAAMJ,GACdD,EAAI,EAAGA,EAAIC,EAAGD,IACrBwD,EAAOxD,GAAKE,UAAUF,GAGxB,IAAIyD,EAAY,aA8BhB,OA5BAA,EAAUP,SAAWO,EAAUX,UAAUI,SAAWN,EAChDpD,EAAMkE,UACRD,EAAUE,SAAWF,EAAUX,UAAUa,SAAWF,EAAUP,YAIhEO,EAAUtB,SAAWA,EAErBsB,EAAUT,MAAQ,WAChB,IAAIY,EAAeL,IACfM,EAAejC,OAAOkC,OAAOL,EAAUX,WAO3C,OANAe,EAAahB,QAAU,GAAGkB,OAAON,EAAUX,UAAUD,SACrDgB,EAAaG,SAAWrE,EAAM4C,MAAMkB,EAAUX,UAAUkB,UACxDH,EAAaI,QAAUR,EAAUX,UAAUmB,QAC3C1E,EAAQyD,MAAMa,EAAc3D,WAC5B0D,EAAad,UAAYe,EACzBD,EAAad,UAAUoB,YAAcN,EAC9BA,GAETH,EAAUhC,YAAcA,EAGpBjC,EAAMkE,SACRF,EAAOW,QAAQ7C,GAEjBkC,EAAOW,QAAQ9C,EAAUhC,EAAO0B,WAAYrB,EAAS0E,kBACrD7E,EAAQyD,MAAMS,EAAUX,UAAWU,GAE5BC,EAUT,OAPAF,EAAO9B,YAAc,WACnB/B,EAAS2E,WAAWC,QAAQtD,SAAQ,SAAShC,GAC3CA,EAAEM,UAAUmC,iBAEd/B,EAAS6E,SAGJhB,GACP3D,MAAMtB,EAASY,QAAiEE,IAAlCD,IAAgDd,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAC7BR,EAAoB,SAgC4DU,KA/B/ED,EAAgC,SAASQ,GAC1C,aAEA,IAAI6E,EAAW,CAAC,UAAW,WAE3B,SAASC,EAAehE,EAAKiE,GAC3B9C,OAAOC,KAAKpB,GAAKO,SAAQ,SAAU2D,GAC7BH,EAASI,QAAQD,GAAO,GAC1BhF,EAAMkF,oBAAoBpE,EAAKkE,EAAKD,MAmB1C,MAAO,CACL1B,MAfF,SAAelD,EAAM0D,GACnB1D,EAAK+C,QAAUjB,OAAOkB,UAAUgC,eAAehG,KAAKgB,EAAM,WAAaA,EAAK+C,QAAU,GAEtF,IAAK,IAAI7C,EAAI,EAAGA,EAAIwD,EAAOrD,OAAQH,KACO,GAApCF,EAAK+C,QAAQ+B,QAAQpB,EAAOxD,MAC9ByE,EAAe3E,GAAM,GACrB0D,EAAOxD,GAAGlB,KAAKgB,GACfA,EAAK+C,QAAQkC,KAAKvB,EAAOxD,KAI7ByE,EAAe3E,GAAM,MAOvBF,MAAMtB,EAASY,MAA+Eb,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAACR,EAAoB,IAAKS,EAAgC,SAASO,GAChG,aAMA,SAASsF,EAASC,EAAMC,EAAY5C,GAElC,IAAI7B,GADJ6B,EAAUA,GAAW,IACH7B,KAAO0E,OACrBC,EAAO9C,EAAQ8C,OAAU3E,GAAO0E,OAAU,SAAW,IAC7CvD,OAAOC,KAAKpB,GAClBO,SAAQ,SAASqE,IAChBC,EAAML,IAASA,GAAMC,EAAYzE,EAAK4E,IACzCE,QAAQC,IAAI,CAACJ,EAAM,IAAKC,GAAM/B,KAAK,IAAK,KAAM,CAAC,WAAY7C,EAAI4E,GAAO,KAAK/B,KAAK,IAAK7C,EAAI4E,IAE1C,mBAA7CzD,OAAOkB,UAAUI,SAASpE,KAAK2B,EAAI4E,KAAgC5E,EAAI4E,IAAS5E,IAA0C,GAAlC2E,EAAKjE,MAAM,KAAKyD,QAAQS,IAClHL,EAASC,EAAMC,EAAY,CAACzE,IAAKA,EAAI4E,GAAOD,KAAM,CAACA,EAAKC,GAAM/B,KAAK,UAKzE,SAASmC,EAAOR,EAAMS,EAAUR,EAAY5C,GACrCoD,UAAmBR,GAAcQ,EAGpCH,QAAQI,MAAM,CAACT,EAAY,UAAWQ,GAAUpC,KAAK,MAFrD0B,EAASC,EAAMC,EAAY5C,GAM/B,IAAIgD,EAAQ,CACV,KAAQ,SAASJ,EAAYzE,EAAK4E,GAAO,OAAOH,GAAcG,GAC9D,aAAgB,SAASH,EAAYzE,EAAK4E,GAAO,OAAOA,EAAKT,QAAQM,IAAe,GACpF,KAAQ,SAASA,EAAYzE,EAAK4E,GAAO,OAAO5E,EAAI4E,aAAiBH,GACrE,MAAS,SAASA,EAAYzE,EAAK4E,GAAO,OAAO5E,EAAI4E,KAAUH,GAC/D,aAAgB,SAASA,EAAYzE,EAAK4E,GAAO,OAAO5E,EAAI4E,IAASH,IAcnEU,EAAM,MAGNC,EAAY,CACdC,WAAY,GACZC,QAAS,IA+BX,SAASC,IACP,IACMb,OAAOc,eACTA,aAAaC,QAAQ,uBAAwBL,EAAUC,YACvDG,aAAaC,QAAQ,oBAAqBL,EAAUE,UAEtD,MAAOI,KAuBX,MAAO,CAELC,OAAQ,SAASA,GACfjI,KAAKuF,UAAY0C,EAEbA,GAAUjB,OAAOI,UACnBA,QAAQvD,KAAK,yBACbuD,QAAQvD,KAAK,mGA3BnB,WACE,IAAI8D,EAAYC,EAChB,IACED,EAAcX,OAAOc,cAAgBA,aAAaI,QAAQ,wBAC1DN,EAAWZ,OAAOc,cAAgBA,aAAaI,QAAQ,qBACvD,MAAOF,GACP,OAEFL,IAAeD,EAAUC,WAAaA,GACtCC,IAAYF,EAAUE,QAAUA,GAGhCnE,OAAOC,KAAKgE,GAAW7E,SAAQ,SAASe,GACtC,IAAIuE,EAAWT,EAAU9D,GACF,iBAAZuE,GAAwBA,IAAaV,IAC9CC,EAAU9D,GAAKuE,EAAWA,EAASnF,MAAM,KAAO,OAelDoF,GAEApB,OAAOqB,MAAQrI,MAGjBsI,KAAM,SAAUC,GACTvB,OAAOI,UACFA,QAAQkB,MAAQlB,QAAQC,KAC/B1G,KAAKyG,QAASpH,KAAK+E,WAAa,KAAOwD,IAG5ChH,SAAUA,EAEViH,KAAM,CACJC,OApGJ,SAAgB1B,EAAY5C,GAAUmD,EAAO,OAAQ,SAAUP,EAAY5C,IAqGvEuE,eApGJ,SAAwB3B,EAAY5C,GAAUmD,EAAO,eAAgB,SAAUP,EAAY5C,IAqGvFwE,OApGJ,SAAgB5B,EAAY5C,GAAUmD,EAAO,OAAQ,WAAYP,EAAY5C,IAqGzEyE,QApGJ,SAAiB7B,EAAY5C,GAAUmD,EAAO,QAAS,KAAMP,EAAY5C,IAqGrE0E,eApGJ,SAAwB9B,EAAY5C,GAAUmD,EAAO,eAAgB,KAAMP,EAAY5C,IAqGnF2E,OApGJ,SAAgB/F,EAAIoB,GAAU0C,EAAS9D,EAAI,KAAMoB,KAuG/C4E,OAAQ,CACNrB,UAAWA,EAIXsB,YA9FJ,WACE,IAAIpB,EAAU,GAAGzB,MAAMxF,KAAKoB,WAE5B2F,EAAUC,WAAW3F,SAAW0F,EAAUC,WAAaF,GACvDC,EAAUE,QAAUA,EAAQ5F,OAAS4F,EAAUH,EAC/CI,KA6FEoB,UA1FJ,WACE,IAAItB,EAAa,GAAGxB,MAAMxF,KAAKoB,WAE/B2F,EAAUE,QAAQ5F,SAAW0F,EAAUE,QAAUH,GACjDC,EAAUC,WAAaA,EAAW3F,OAAS2F,EAAaF,EACxDI,KAuFEqB,OA9EJ,WACExB,EAAUE,QAAUH,EACpBC,EAAUC,WAAaF,EACvBI,KA4EEsB,QArFJ,WACEzB,EAAUE,QAAU,GACpBF,EAAUC,WAAa,GACvBE,QAqFFpG,MAAMtB,EAASY,QAAiEE,IAAlCD,IAAgDd,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAC7BR,EAAoB,IACnBS,EAAgC,SAASQ,GAC1C,aAEA,IAAI4H,EAAgB,CAClBC,GAAI,KACJC,QAAS,KACTC,IAAK,MAUP,SAASlC,EAAImC,EAAQrI,EAAWsI,GAI9B,IAAI3E,EAAM4E,EAAWC,EAAM5G,EAAI6G,EAASlC,EAAWmC,EAAUC,EAAgBC,EAAclG,EAHtFmD,OAAOqB,OAAUrB,OAAOqB,MAAM9C,UAKW,mBAAnCkE,EAAUA,EAAUzH,OAAS,KAEtCe,GADAA,EAAK0G,EAAUO,OACPrH,SAAWI,GAGG,GAApB0G,EAAUzH,QACZ2H,EAAOxI,EAAU8I,MAAM,GACvBP,EAAYD,EAAU,IACQ,GAApBA,EAAUzH,QAAuC,iBAAhByH,EAAU,IAAmBA,EAAU,GAAGS,MASrFP,EAAOF,EAAU,GACjBC,EAAYD,EAAU,GACR,WAAVD,IACFI,EAAUH,EAAU,MAVtBE,EAAOxI,EAAU8I,MAAM,GACvBP,EAAYD,EAAU,GACR,WAAVD,IACFI,EAAUH,EAAU,KAWxB3E,EAA2B,iBAAb4E,EAAwBA,EAAUQ,KAAOR,EAKvDI,EAAsC,QAHtCpC,EAAYW,MAAMU,OAAOrB,WAGEE,SAAqBF,EAAUE,QAAQnB,QAAQ+C,IAAW,EAErFK,EAAW,SAASM,GAClB,OAAOA,EAAKC,KAAOD,EAAO,IAAIE,OAAO,IAAMF,EAAKG,QAAQ,MAAO,MAAQ,MAEzEP,EAC0B,OAAxBrC,EAAUC,YACVD,EAAUC,WAAW4C,MAAK,SAASC,GAAI,OAAOX,EAASW,GAAGJ,KAAKtF,MAE7DgF,GAAkBC,IACpBlG,EAAO,CAACuF,EAAcI,GAASA,EAAQ,IAAM1E,EAAO,KACpD8E,GAAW/F,EAAK+C,KAAKgD,GACrB/F,EAAK+C,KAtDT,SAAsB+C,GACpB,IAEIc,GAFSd,EAAKe,QAAUf,EAAKe,QAAQC,cAAgBhB,EAAK5E,aAC/C4E,EAAKiB,UAAY,IAAOjB,EAAc,UAAI,IAEzD,OAAOA,EAAKe,QAAU,CAAC,IAAM,KAAMvF,KAAKsF,GAAUA,EAkDtCI,CAAalB,IACvB9F,EAAK+C,KAAKzF,EAAU4E,YAAYP,SAASxC,MAAM,KAAKmD,MAAM,EAAE,GAAGhB,KAAK,MACpEiC,QAAQ0D,gBAA4B,WAAVtB,GAAuBpC,QAAQ0D,eAAetB,EAAQ1E,GAEhFiG,SAASpG,UAAUlD,MAAMd,KAAKyG,QAAQvD,KAAMuD,QAASvD,KAqBzD,OAjBA,WACE7D,KAAKoC,OAAO,WAAW,WACrBiF,EAAI,UAAWrH,KAAMwB,EAAMwJ,QAAQjJ,eAEjCqF,QAAQ0D,gBACV9K,KAAKwC,MAAM,WAAW,WACpB4E,QAAQ6D,cAGZjL,KAAKoC,OAAO,MAAM,WAChBiF,EAAI,KAAMrH,KAAMwB,EAAMwJ,QAAQjJ,eAEhC/B,KAAKoC,OAAO,OAAO,WACjBiF,EAAI,MAAOrH,KAAMwB,EAAMwJ,QAAQjJ,iBAKnCN,MAAMtB,EAASY,QAAiEE,IAAlCD,IAAgDd,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAkCS,EAEGA,EAAgC,WACjE,aAEA,SAASkK,EAAepH,EAAU7B,GAChC,IAAIkJ,EAASjB,EAAMkB,EACfC,EAAMpJ,EAAKD,OAmBf,MAjB4B,mBAAjBC,EAAKoJ,EAAM,KAEpBD,EAAWnJ,EADXoJ,GAAO,IAImB,iBAAjBpJ,EAAKoJ,EAAM,KACpBA,GAAO,GAGE,GAAPA,GACFF,EAAUlJ,EAAK,GACfiI,EAAOjI,EAAK,KAEZkJ,EAAUrH,EAASQ,KACnB4F,EAAOjI,EAAK,IAGP,CACLkJ,QAASA,EACTjB,KAAMA,EACNkB,SAAUA,GAId,SAASE,EAAWC,EAAGC,GACrB,OACGD,EAAEJ,SAAWK,EAAEL,SACfI,EAAErB,MAAQsB,EAAEtB,OACE,MAAdsB,EAAEJ,UAAqBG,EAAEH,UAAYI,EAAEJ,UAoL5C,OAAO,IAhLP,WAEE,IAAI7J,EAAWvB,KAQf,SAASyL,EAActK,GACrBnB,KAAKmB,UAAYA,EACjBnB,KAAK0L,WAAa,GAClB1L,KAAK2D,UAAY,GAEjB3D,KAAK2L,YAAc,SAAS7H,GAC1B,IAAI8H,EAAe,IAAIC,EAAa/H,GAIpC,OAHA9D,KAAK2D,UAAUG,EAASgI,UAAYF,EACpC5L,KAAK0L,WAAW9E,KAAK9C,EAASQ,MAEvBsH,GAGT5L,KAAK+L,eAAiB,SAASjI,UACtB9D,KAAK2D,UAAUG,EAASgI,UAC/B,IAAIE,EAAchM,KAAK0L,WAAWjF,QAAQ3C,EAASQ,MAClD0H,GAAe,GAAMhM,KAAK0L,WAAWO,OAAOD,EAAa,GAErDvI,OAAOC,KAAK1D,KAAK2D,WAAW3B,QAE/BT,EAAS2K,oBAAoBlM,OAIjCA,KAAKuE,aAAe,SAASD,GAC3B,OAAOtE,KAAK0L,WAAWjF,QAAQnC,IAAS,GAI5C,SAASuH,EAAa/H,GACpB9D,KAAK8D,SAAWA,EAChB9D,KAAK+I,OAAS,GAEd/I,KAAKmM,QAAU,SAASC,GACtBpM,KAAK+I,OAAOnC,KAAKwF,GACjB7K,EAASwH,OAAOnC,KAAKwF,IAGvBpM,KAAKqM,WAAa,SAASD,GACzB,IAAK,IAAW5B,EAAP3I,EAAI,EAAM2I,EAAIxK,KAAK+I,OAAOlH,GAAIA,IACjCyJ,EAAWd,EAAG4B,IAChBpM,KAAK+I,OAAOkD,OAAOpK,EAAG,KA/C7B7B,KAAKoG,MAAQ,WACZpG,KAAKkG,WAAa,GAClBlG,KAAKsM,aAAe,GACpBtM,KAAK+I,OAAS,KACbpI,KAAKX,MAiDRA,KAAK2L,YAAc,SAAS7H,GAC1B,IAAI3C,EAAYnB,KAAKwD,kBAAkBM,GAElC3C,IACHA,EAAY,IAAIsK,EAAc3H,EAASiC,aACvC/F,KAAKkG,WAAWU,KAAKzF,IAGvB,IAAIoL,EAAOpL,EAAUwK,YAAY7H,GAIjC,OAFA9D,KAAKsM,aAAaxI,EAASgI,UAAYS,EAEhCpL,GAGTnB,KAAK+L,eAAiB,SAASjI,GAE7B,IAAIP,EAAgBvD,KAAKwD,kBAAkBM,GAC3CP,GAAiBA,EAAcwI,eAAejI,UAGvC9D,KAAKsM,aAAaxI,EAASgI,WAGpC9L,KAAKkM,oBAAsB,SAAS3I,GAClC,IAAIiJ,EAAQxM,KAAKkG,WAAWO,QAAQlD,GACnCiJ,GAAS,GAAMxM,KAAKkG,WAAW+F,OAAOO,EAAO,IAGhDxM,KAAKwD,kBAAoB,SAASiJ,GAGhC,IAFA,IAEgB5L,EAFZM,EAAYsL,EAAMzI,SAAWyI,EAAQA,EAAM1G,YAEtClE,EAAI,EAAMhB,EAAIb,KAAKkG,WAAWrE,GAAIA,IACzC,GAAIhB,EAAEM,YAAcA,EAClB,OAAON,EAIX,OAAO,MAGTb,KAAK0M,iBAAmB,SAAS5I,GAC/B,OAAO9D,KAAKsM,aAAaxI,EAASgI,WAAa,MAGjD9L,KAAK2M,mBAAqB,SAAS7I,GACjC,OAAO9D,KAAK0M,iBAAiB5I,GAAUiF,OAAOnE,KAAI,SAASgI,GACzD,OAAOA,EAAG1C,SAIdlK,KAAK6M,uBAAyB,SAASvI,GACrC,IAAImG,EAAS,GAOb,OANAhH,OAAOC,KAAK1D,KAAKsM,cAAczJ,SAAQ,SAASe,GAC9C,IAAIkJ,EAAmB9M,KAAKsM,aAAa1I,GACrCkJ,EAAiBhJ,SAASQ,OAASA,GACrCmG,EAAO7D,KAAKkG,KAEb9M,MACIyK,GAGTzK,KAAKqJ,GAAK,SAAS0D,GAMjB,IALA,IAAgDC,EAA5ClJ,EAAWvC,EAASmL,iBAAiB1M,MAGrC8B,EAAIC,UAAUC,OAAQH,EAAI,EAC1BoL,EAAY,IAAI/K,MAAMJ,EAAI,GACvBD,EAAIC,EAAGD,IACZoL,EAAUpL,EAAI,GAAKE,UAAUF,GAG/B,GAAIiC,EAAU,EACZkJ,EAAgBD,EAAYtL,MAAM,KAAMwL,MAEtCA,EAAUA,EAAUjL,OAAS,GAAKgL,GAEpC,IAAIZ,EAAQlB,EAAelL,KAAMiN,GACjCnJ,EAASqI,QAAQC,KAIrBpM,KAAKuJ,IAAM,WACT,IAAI6C,EAAQlB,EAAelL,KAAM+B,WAC7B+B,EAAWvC,EAASmL,iBAAiB1M,MAErC8D,GACFA,EAASuI,WAAWD,GAItB,IAAK,IAAW5B,EAAP3I,EAAI,EAAM2I,EAAIjJ,EAASwH,OAAOlH,GAAIA,IACrCyJ,EAAWd,EAAG4B,IAChB7K,EAASwH,OAAOkD,OAAOpK,EAAG,IAMhCN,EAAS+H,QAAU,aAEnBtJ,KAAK+D,SAAW,WACdxC,EAASwK,eAAe/L,OAG1BA,KAAKiG,iBAAmB,WACtBjG,KAAKwC,MAAM,cAAc,WACvBjB,EAASoK,YAAY3L,SAGvBA,KAAK0B,OAAO,KAAMH,EAAS8H,IAC3BrJ,KAAKwC,MAAM,MAAOjB,EAASgI,KAE3BvC,OAAOqB,SAAS,GAAQ9C,SAAWvF,KAAKwC,MAAM,UAAWjB,EAAS+H,SAClEtJ,KAAKwC,MAAM,WAAY,CAACF,IAAKf,EAAUgB,OAAQ,gBAMnDd,MAAMtB,EAxNuB,SAwNmDc,IAAlCD,IAAgDd,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAACR,EAAoB,IAAKS,EAAgC,SAASK,GAChG,aAIA,SAAS6L,IACP,IAAIC,EAAwB9L,EAAMkE,UAAY9B,OAAO2J,qBAAqB,4BAC1E,GAAID,EAEF,IACE1J,OAAO4J,yBAAyB5J,OAAQ,QACxC,MAAO+G,GACR,OAAO,EAIV,OAAO2C,EAGT,IAAI3L,EAAQ,CAEV8L,SAAU,SAAShL,GACjB,SAAUA,EAAIiL,UAAajL,IAAQ0E,SAGrCgE,QAAS,SAAS1I,EAAKkL,GACrBA,EAAOA,GAAQ,EAEf,IADA,IAAIC,EAAMnL,EAAIN,OAAQ0L,EAAM,IAAIxL,MAAMuL,EAAMD,GACnC3L,EAAI2L,EAAM3L,EAAI4L,EAAK5L,IAC1B6L,EAAI7L,EAAI2L,GAAQlL,EAAIT,GAEtB,OAAO6L,GAwBTtJ,MAAO,WAEL,IAAItC,EAAIC,UAAUC,OACdC,EAAO,IAAIC,MAAMJ,EAAI,GAEzB,GAAU,IAANA,EACF,MAAO,GAGT,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAGD,IACrBI,EAAKJ,EAAI,GAAKE,UAAUF,GAY1B,OARAI,EAAK,GAAK,IAEoB,IAA1BA,EAAKA,EAAKD,OAAS,KAErBC,EAAK+H,MACL/H,EAAK+D,SAAQ,IAGRvG,EAAEkO,OAAOlM,WAAMR,EAAWgB,IAsBnC2E,KAAM,SAASjF,EAAMiM,EAAOC,GAiB1B,OAhBIlM,GACF8B,OAAOC,KAAKkK,GAAS,IAAI/K,SAAQ,SAAS2D,GACxC,GAAI7E,EAAK6E,IAAQqH,EACf,MAAM,IAAI3J,MAAM,sCAAwCsC,EAAM,qCAGxC,iBAAb7E,EAAK6E,IAAyC,iBAAdoH,EAAMpH,GAE/CxG,KAAK4G,KAAKjF,EAAK6E,GAAMoH,EAAMpH,IAG3B7E,EAAK6E,GAAOoH,EAAMpH,KAEnBxG,MAGE2B,GAKTmM,sBAAuB,SAASxL,EAAKkE,GACnC,OAAOlE,EAAI8K,qBAAqB5G,GAAOlE,EAAIkE,QAAOvF,GAMpDG,QAAS,WACP,IAAI2M,EAAQhM,UAEZ,OAAO,WAGL,IAFA,IAAIE,EAAOF,UAEFF,EAAIkM,EAAM/L,OAAS,EAAGH,GAAK,EAAGA,IACrCI,EAAO,CAAC8L,EAAMlM,GAAGJ,MAAMzB,KAAMiC,IAG/B,OAAOA,EAAK,KAKhB+L,YAAa,SAASC,GAGpB,IAFA,IAAIC,EAAI,GAAI3C,EAAI,GAEP1J,EAAI,EAAGC,EAAImM,EAAMjM,OAAQH,EAAIC,IAAKD,EACrCqM,EAAEvH,eAAesH,EAAMpM,MAI3B0J,EAAE3E,KAAKqH,EAAMpM,IACbqM,EAAED,EAAMpM,IAAM,GAGhB,OAAO0J,GAGT4C,SAAU,SAASC,EAAMC,EAAMC,GAK7B,IAAIC,EAAS9D,EAEb,MANmB,iBAAR4D,IACTA,EA7JiB,KAkKZ,WACL,IAAIG,EAAUxO,KAAMiC,EAAOF,UACvB0M,EAAQ,WACVF,EAAU,KACLD,IACH7D,EAAS2D,EAAK3M,MAAM+M,EAASvM,KAG7ByM,EAAUJ,IAAcC,EAS5B,OAPAA,GAAWI,aAAaJ,GACxBA,EAAUK,WAAWH,EAAOJ,GAExBK,IACFjE,EAAS2D,EAAK3M,MAAM+M,EAASvM,IAGxBwI,IAIXoE,SAAU,SAAST,EAAMC,GAKvB,IAAIG,EAASvM,EAAMsM,EAASO,EAAYC,EAAMtE,EAJ3B,iBAAR4D,IACTA,EAzLiB,KA6LnB,IAAIW,EAAWhP,KAAKmO,UAAS,WAC3BY,EAAOD,GAAa,IACnBT,GAEH,OAAO,WACLG,EAAUxO,KAAMiC,EAAOF,UACvB,IAAI0M,EAAQ,WACVF,EAAU,KACNQ,IACFtE,EAAS2D,EAAK3M,MAAM+M,EAASvM,IAE/B+M,KAeF,OAZKT,IACHA,EAAUK,WAAWH,EAAOJ,IAG1BS,EACFC,GAAO,GAEPD,GAAa,EACbrE,EAAS2D,EAAK3M,MAAM+M,EAASvM,IAG/B+M,IACOvE,IAIXwE,UAAW,SAASC,EAAKvN,GACvB,OAAO,WACL,MAAOuN,EAAO,OAAOvN,EAAKF,MAAMzB,KAAM+B,aAI1CoN,SAAU,SAASC,GACjB,OAAO,SAAS5E,EAAG6E,GACjB,IAA0BpP,EAAtBL,EAASH,EAAE+K,EAAE5K,QAEjB6D,OAAOC,KAAK0L,GAAOvM,SAAQ,SAASoB,GAClC,IAAKuG,EAAE8E,yBAA2BrP,EAASL,EAAO2P,QAAQtL,IAAWjC,OAGnE,OAFAqN,EAAOA,GAAQ,GACf7E,EAAEgF,cAAgBH,EAAKI,GAAKxP,EAAO,GAC5BmP,EAAMnL,GAAUxC,MAAMzB,KAAM,CAACwK,EAAG6E,MAExCrP,QAiBP0P,KAAM,SAAStB,GACb,IAAIuB,EAAKlF,EAET,OAAO,WACL,OAAIkF,EACKlF,GAGTkF,GAAM,EACNlF,EAAS2D,EAAK3M,MAAMzB,KAAM+B,cAM9B2E,oBAAqB,SAASpE,EAAK4E,EAAMX,GACnC2G,KAAqB5K,EAAIqE,eAAeO,IAC1CzD,OAAOmM,eAAetN,EAAK4E,EAAM,CAAEX,SAAUA,KAKjDtD,eAAgB,SAASX,EAAK4E,EAAM2I,GAClC,IAAItJ,EAEC2G,KAAsB5K,EAAIqE,eAAeO,IAK9CX,EAAW9C,OAAO4J,yBAAyB/K,EAAK4E,GAAMX,SAEtD9C,OAAOmM,eAAetN,EAAK4E,EAAM,CAAEX,UAAU,IAC7CsJ,EAAGlP,KAAK2B,GACRmB,OAAOmM,eAAetN,EAAK4E,EAAM,CAAEX,SAAUA,KAR3CsJ,EAAGlP,KAAK2B,KAcd,OAAOd,GACPC,MAAMtB,EAASY,QAAiEE,IAAlCD,IAAgDd,EAAOC,QAAUa,IAK7G,SAASd,EAAQC,EAASI,GAEhC,IAAIQ,EAA8BC,EAEhCD,EAA+B,CAC7BR,EAAoB,GACpBA,EAAoB,GACpBA,EAAoB,IACnBS,EAAgC,SAASQ,EAAOD,EAAUF,GAC3D,aAIA,IAAIyO,EAAc,EAalB,SAASC,EAAkB7F,EAAMmF,GAC/B,IACErI,OAAOgJ,YAAYX,EAAM,KACzB,MAAO7E,GACPnJ,EAAMiH,KAAK3H,KAAKX,KAAM,CACpB,UAAWkK,EAAM,+CACjB,wEACA/E,KAAK,MAIX,SAAS8K,EAAuBzJ,GAC9BnF,EAAMiH,KAAK3H,KAAKX,KAAM,CACpB,cAAewG,EAAK,qCACpB,4EACArB,KAAK,KAGT,SAAS+K,EAAeC,GACtB,IAAsBC,EAAlBC,EAAc,GAIlB,GAFArQ,KAAKsQ,KAAO,IAAItQ,KAAK8F,QAEjBzE,EAAMkE,SAAWyB,OAAOI,QAAS,CACnC,IAAK,IAAIZ,KAAOxG,KAAK8F,QAAQnB,UAC3B0L,EAAYzJ,KAAKJ,GAInB,IAAK,IAAI3E,GAFTuO,EAAe3M,OAAOC,KAAKyM,IAEDnO,OAAS,EAAGH,GAAK,EAAGA,IAC5C,IAA6C,GAAzCwO,EAAY5J,QAAQ2J,EAAavO,IAAW,CAC9CR,EAAMiH,KAAK3H,KAAKX,KAAM,4BAA8BoQ,EAAavO,GAAK,MACtE,OAKN,IAAK,IAAI2E,KAAOxG,KAAK8F,QAAQnB,UAAW,CACtC,QAAyB,IAAdwL,EAAM3J,GAAqB,CACpC,GAAuB,OAAnBxG,KAAKsQ,KAAK9J,GACZ,MAAM,IAAItC,MAAM,uBAAyBsC,EACzB,8CAAgDxG,KAAK+E,WAAa,MAGhF1D,EAAMkE,SAAqC,iBAAnBvF,KAAKsQ,KAAK9J,IACpCyJ,EAAuBtP,KAAKX,KAAMwG,QAGpCxG,KAAKsQ,KAAK9J,GAAO2J,EAAM3J,GAGI,mBAAlBxG,KAAKsQ,KAAK9J,KACnBxG,KAAKsQ,KAAK9J,GAAOxG,KAAKsQ,KAAK9J,GAAK7F,KAAKX,QAM3C,SAASuQ,EAAyBJ,GAGhC,IAAIG,EAAO7M,OAAOkC,OAAOwK,GAEzB,IAAK,IAAI3J,KAAOxG,KAAK6F,SACdsK,EAAMxJ,eAAeH,KACxB8J,EAAK9J,GAAOxG,KAAK6F,SAASW,GAEtBnF,EAAMkE,SAAyC,iBAAvBvF,KAAK6F,SAASW,IACxCyJ,EAAuBtP,KAAKX,KAAMwG,IAKxCxG,KAAKsQ,KAAOA,EAEZ7M,OAAOC,KAAK1D,KAAK6F,UAAY,IAAIhD,SAAQ,SAAS2D,GAChD,GAA2B,OAAvBxG,KAAK6F,SAASW,IAAoC,OAAnBxG,KAAKsQ,KAAK9J,GAC3C,MAAM,IAAItC,MAAM,uBAAyBsC,EACzB,8CAAgDxG,KAAK+E,WAAa,QAEnF/E,MAGL,SAASwQ,EAAaC,GACpB,OAAO,SAASjG,EAAG6E,GACjB5P,EAAE+K,EAAE5K,QAAQ0J,QAAQmH,EAAapB,IA+MrC,OA3MA,WAQErP,KAAKsJ,QAAU,WACb,IAAIoH,EAAUxG,EAAMmF,EAAMjD,EAAOuE,EAC7BC,EAAY7O,UAAUC,OAAS,EAAG6O,EAAU9O,UAAU6O,GAoC1D,MAlCsB,iBAAXC,GAAyBA,GAAWA,EAAQC,kBACrDF,IACAvB,EAAOwB,GAGQ,GAAbD,GACFF,EAAWjR,EAAEsC,UAAU,IACvBqK,EAAQrK,UAAU,KAElB2O,EAAW1Q,KAAKiK,MAChBmC,EAAQrK,UAAU,IAGhBqK,EAAM0E,kBACRH,EAAYvE,EAAM0E,gBAClB1E,EAAQ3M,EAAEsR,MAAM3E,EAAMlC,OAGxBA,EAAOkC,EAAMlC,MAAQkC,EAEjB/K,EAAMkE,SAAWyB,OAAOgJ,aAC1BD,EAAkBpP,KAAKX,KAAMkK,EAAMmF,GAGH,iBAAvBrP,KAAKsQ,KAAKU,YACnB3B,EAAO5P,EAAEkO,QAAO,EAAM,GAAI3N,KAAKsQ,KAAKU,UAAW3B,IAGjDqB,EAASpH,QAAS8C,GAASlC,EAAOmF,GAE9BsB,IAAcvE,EAAM6E,uBACrBjR,KAAK2Q,IAAcA,GAAWhQ,KAAKX,KAAMoM,EAAOiD,GAG5CqB,GAIT1Q,KAAKqJ,GAAK,WACR,IAAIqH,EAAUxG,EAAMkB,EAAU8F,EAC1BN,EAAY7O,UAAUC,OAAS,EAAGmP,EAASpP,UAAU6O,GAqBzD,GAjBEM,EAFmB,iBAAVC,EAEI3P,EAAM2N,SACjBnP,KAAKoR,qBAAqBD,IAEF,iBAAVA,EACHX,EAAaW,GAEbA,EAGE,GAAbP,GACFF,EAAWjR,EAAEsC,UAAU,IACvBmI,EAAOnI,UAAU,KAEjB2O,EAAW1Q,KAAKiK,MAChBC,EAAOnI,UAAU,IAGM,mBAAdmP,GAAiD,iBAAdA,EAC5C,MAAM,IAAIhN,MAAM,sBAAwBgG,EACxB,+DAalB,OAVAkB,EAAW8F,EAAW/O,KAAKnC,OAClBJ,OAASsR,EAClB9F,EAASoD,QAAUxO,KAEnB0Q,EAASrH,GAAGa,EAAMkB,GAGlB8F,EAAWG,QAAUH,EAAWG,MAAQ,IACxCH,EAAWG,MAAMzK,KAAKwE,GAEfA,GAGTpL,KAAKuJ,IAAM,WACT,IAAImH,EAAUxG,EAAMkB,EAChBwF,EAAY7O,UAAUC,OAAS,EAenC,GAbmC,mBAAxBD,UAAU6O,KACnBxF,EAAWrJ,UAAU6O,GACrBA,GAAa,GAGE,GAAbA,GACFF,EAAWjR,EAAEsC,UAAU,IACvBmI,EAAOnI,UAAU,KAEjB2O,EAAW1Q,KAAKiK,MAChBC,EAAOnI,UAAU,IAGfqJ,EAAU,CAEZ,IAAIkG,EAAiBlG,EAASxL,OAASwL,EAASxL,OAAOyR,MAAQjG,EAASiG,OAAS,GAEjFC,GAAkBA,EAAe/G,MAAK,SAASxH,EAAIlB,EAAG6L,GACpD,GAAI3K,EAAGyL,SAAYxO,KAAK8L,UAAY/I,EAAGyL,QAAQ1C,SAG7C,OAFA4B,EAAIzB,OAAOpK,EAAG,GACduJ,EAAWrI,GACJ,IAER/C,MACH0Q,EAASnH,IAAIW,EAAMkB,QAInB7J,EAASmL,iBAAiB1M,MAAM+I,OAAOlG,SAAQ,SAAUuJ,GACnDlC,GAAQkC,EAAMlC,MAChBwG,EAASnH,IAAIW,EAAMkC,EAAMhB,aAK/B,OAAOsF,GAGT1Q,KAAKoR,qBAAuB,SAASG,GACnC,IAAInC,EAAQ,GASZ,OAPA3L,OAAOC,KAAK6N,GAAU1O,SAAQ,SAAS2O,GACrC,KAAMA,KAAKxR,KAAKsQ,MACd,MAAM,IAAIpM,MAAM,cAAgBlE,KAAK+E,WAAa,yBAA2ByM,EAAI,wCAEnFpC,EAAMpP,KAAKsQ,KAAKkB,IAA6B,iBAAfD,EAASC,GAAkBhB,EAAae,EAASC,IAAMD,EAASC,KAC7FxR,MAEIoP,GAGTpP,KAAKyR,OAAS,SAASC,GACrB,OAAO1R,KAAKiK,MAAMzB,KAAKxI,KAAKsQ,KAAKoB,KAKnC1R,KAAK2R,WAAa,SAASxB,GAEzB,IAAIyB,EAAa,aAMjB,IAAK,IAAI9M,KAJL9E,KAAK8F,UACP8L,EAAWjN,UAAY,IAAI3E,KAAK8F,SAGjBqK,EACfyB,EAAWjN,UAAUG,GAAQqL,EAAMrL,GAGrC9E,KAAK8F,QAAU8L,GAKjB5R,KAAK6R,aAAe,SAAShM,GAC3BrE,EAAMoF,KAAK5G,KAAK6F,SAAUA,GAAU,KAAU7F,KAAK6F,SAAWA,IAGhE7F,KAAKwE,WAAa,SAASF,EAAM6L,GAI/B,GAHAA,EAAQA,GAAS,GACjBnQ,KAAK8L,WAAa9L,KAAK8L,SAAWgE,MAE7BxL,EACH,MAAM,IAAIJ,MAAM,0BAiBlB,OAdII,EAAKwN,QACP9R,KAAKsE,KAAOA,EAAK,GACjBtE,KAAKiK,MAAQ3F,IAEbtE,KAAKsE,KAAOA,EACZtE,KAAKiK,MAAQxK,EAAE6E,IAGbtE,KAAK8F,QACPoK,EAAevP,KAAKX,KAAMmQ,GAE1BI,EAAyB5P,KAAKX,KAAMmQ,GAG/BnQ,MAGTA,KAAK+D,SAAW,WA1SlB,IAA0B6H,KA2SLrK,EAASmL,iBAAiB1M,OA1ShC+I,OAAO5C,QAAQtD,SAAQ,SAASuJ,GAC3C,IAAInK,EAAO,CAACmK,EAAMlC,MAElBkC,EAAMjB,SAAWlJ,EAAK+D,QAAQoG,EAAMjB,SACV,mBAAlBiB,EAAMhB,UAA2BnJ,EAAK2E,KAAKwF,EAAMhB,UAEzDpL,KAAKuJ,IAAI9H,MAAMzB,KAAMiC,KACpB2J,EAAa9H,aAwSlBrC,MAAMtB,EAASY,QAAiEE,IAAlCD,IAAgDd,EAAOC,QAAUa,OAn6CjHd,EAAOC,QAAUC,M,qDCHnBF,EAAOC,QAAU,EAAQ,a,2BCAzB,MAcW4R,EAAQ3R,EAAR2R,EAuBS,oBAAX/K,OAAyBA,OAAShH,KAvBxBI,EAuB8B,SAAU4G,EAAQgL,GAQnE,IAAIC,EAAa,GAEb9L,EAAQ8L,EAAW9L,MAEnBP,EAASqM,EAAWrM,OAEpBgB,EAAOqL,EAAWrL,KAElBH,EAAUwL,EAAWxL,QAErByL,EAAa,GAEbnN,EAAWmN,EAAWnN,SAEtBoN,EAASD,EAAWvL,eAEpByL,EAAU,GAKbC,EAAU,SAGVC,EAAS,SAAUrO,EAAUuK,GAG5B,OAAO,IAAI8D,EAAOvP,GAAGwP,KAAMtO,EAAUuK,IAKtCgE,EAAQ,qCAGRC,EAAY,QACZC,EAAa,eAGbC,EAAa,SAAUC,EAAKC,GAC3B,OAAOA,EAAOC,eAqehB,SAASC,EAAazQ,GACrB,IAAIN,EAASM,EAAIN,OAChBkI,EAAOoI,EAAOpI,KAAM5H,GAErB,MAAc,aAAT4H,IAAuBoI,EAAOU,SAAU1Q,OAIvB,IAAjBA,EAAIiL,WAAkBvL,IAIX,UAATkI,GAA+B,IAAXlI,GACR,iBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAOM,GA/ehEgQ,EAAOvP,GAAKuP,EAAO3N,UAAY,CAE9BmN,OAAQO,EAERtM,YAAauM,EAGbrO,SAAU,GAGVjC,OAAQ,EAERgJ,QAAS,WACR,OAAO7E,EAAMxF,KAAMX,OAKpBiT,IAAK,SAAU/D,GACd,OAAc,MAAPA,EAGJA,EAAM,EAAIlP,KAAMkP,EAAMlP,KAAKgC,QAAWhC,KAAMkP,GAG9C/I,EAAMxF,KAAMX,OAKdkT,UAAW,SAAUC,GAGpB,IAAIC,EAAMd,EAAOlO,MAAOpE,KAAK+F,cAAeoN,GAO5C,OAJAC,EAAIC,WAAarT,KACjBoT,EAAI5E,QAAUxO,KAAKwO,QAGZ4E,GAMR/O,KAAM,SAAU+G,EAAUnJ,GACzB,OAAOqQ,EAAOjO,KAAMrE,KAAMoL,EAAUnJ,IAGrC2C,IAAK,SAAUwG,GACd,OAAOpL,KAAKkT,UAAWZ,EAAO1N,IAAI5E,MAAM,SAAU2J,EAAM9H,GACvD,OAAOuJ,EAASzK,KAAMgJ,EAAM9H,EAAG8H,QAIjCxD,MAAO,WACN,OAAOnG,KAAKkT,UAAW/M,EAAM1E,MAAOzB,KAAM+B,aAG3CuR,MAAO,WACN,OAAOtT,KAAKuT,GAAI,IAGjBC,KAAM,WACL,OAAOxT,KAAKuT,IAAK,IAGlBA,GAAI,SAAU1R,GACb,IAAI4L,EAAMzN,KAAKgC,OACdyR,GAAK5R,GAAMA,EAAI,EAAI4L,EAAM,GAC1B,OAAOzN,KAAKkT,UAAWO,GAAK,GAAKA,EAAIhG,EAAM,CAAEzN,KAAKyT,IAAO,KAG1DpI,IAAK,WACJ,OAAOrL,KAAKqT,YAAcrT,KAAK+F,YAAY,OAK5Ca,KAAMA,EACN8M,KAAMzB,EAAWyB,KACjBzH,OAAQgG,EAAWhG,QAGpBqG,EAAO3E,OAAS2E,EAAOvP,GAAG4K,OAAS,WAClC,IAAIgG,EAAKC,EAAaC,EAAM/O,EAAMX,EAAS2P,EAC1ClU,EAASmC,UAAU,IAAM,GACzBF,EAAI,EACJG,EAASD,UAAUC,OACnB+R,GAAO,EAsBR,IAnBuB,kBAAXnU,IACXmU,EAAOnU,EAGPA,EAASmC,UAAWF,IAAO,GAC3BA,KAIsB,iBAAXjC,GAAwB0S,EAAO0B,WAAWpU,KACrDA,EAAS,IAILiC,IAAMG,IACVpC,EAASI,KACT6B,KAGOA,EAAIG,EAAQH,IAEnB,GAAmC,OAA7BsC,EAAUpC,UAAWF,IAE1B,IAAMiD,KAAQX,EACbwP,EAAM/T,EAAQkF,GAITlF,KAHLiU,EAAO1P,EAASW,MAQXiP,GAAQF,IAAUvB,EAAO2B,cAAcJ,KAAUD,EAActB,EAAO4B,QAAQL,MAC7ED,GACJA,GAAc,EACdE,EAAQH,GAAOrB,EAAO4B,QAAQP,GAAOA,EAAM,IAG3CG,EAAQH,GAAOrB,EAAO2B,cAAcN,GAAOA,EAAM,GAIlD/T,EAAQkF,GAASwN,EAAO3E,OAAQoG,EAAMD,EAAOD,SAGzB5S,IAAT4S,IACXjU,EAAQkF,GAAS+O,IAOrB,OAAOjU,GAGR0S,EAAO3E,OAAO,CAEbwG,QAAS,UAAa9B,EAAU+B,KAAKC,UAAW/J,QAAS,MAAO,IAGhEgK,SAAS,EAET9M,MAAO,SAAU+M,GAChB,MAAM,IAAIrQ,MAAOqQ,IAGlBC,KAAM,aAKNR,WAAY,SAAU1R,GACrB,MAA4B,aAArBgQ,EAAOpI,KAAK5H,IAGpB4R,QAAShS,MAAMgS,SAAW,SAAU5R,GACnC,MAA4B,UAArBgQ,EAAOpI,KAAK5H,IAGpB0Q,SAAU,SAAU1Q,GAEnB,OAAc,MAAPA,GAAeA,GAAOA,EAAI0E,QAGlCyN,UAAW,SAAUnS,GAKpB,OAAQgQ,EAAO4B,QAAS5R,IAAUA,EAAMoS,WAAYpS,GAAQ,GAAM,GAGnEqS,cAAe,SAAUrS,GACxB,IAAIwC,EACJ,IAAMA,KAAQxC,EACb,OAAO,EAER,OAAO,GAGR2R,cAAe,SAAU3R,GACxB,IAAIkE,EAKJ,IAAMlE,GAA4B,WAArBgQ,EAAOpI,KAAK5H,IAAqBA,EAAIiL,UAAY+E,EAAOU,SAAU1Q,GAC9E,OAAO,EAGR,IAEC,GAAKA,EAAIyD,cACPoM,EAAOxR,KAAK2B,EAAK,iBACjB6P,EAAOxR,KAAK2B,EAAIyD,YAAYpB,UAAW,iBACxC,OAAO,EAEP,MAAQ6F,GAET,OAAO,EAKR,GAAK4H,EAAQwC,QACZ,IAAMpO,KAAOlE,EACZ,OAAO6P,EAAOxR,KAAM2B,EAAKkE,GAM3B,IAAMA,KAAOlE,GAEb,YAAerB,IAARuF,GAAqB2L,EAAOxR,KAAM2B,EAAKkE,IAG/C0D,KAAM,SAAU5H,GACf,OAAY,MAAPA,EACGA,EAAM,GAEQ,iBAARA,GAAmC,mBAARA,EACxC4P,EAAYnN,EAASpE,KAAK2B,KAAU,gBAC7BA,GAMTuS,WAAY,SAAUxF,GAChBA,GAAQiD,EAAO3S,KAAM0P,KAIvBrI,EAAO8N,YAAc,SAAUzF,GAChCrI,EAAe,KAAErG,KAAMqG,EAAQqI,KAC3BA,IAMP0F,UAAW,SAAUC,GACpB,OAAOA,EAAO1K,QAASmI,EAAW,OAAQnI,QAASoI,EAAYC,IAGhEsC,SAAU,SAAUtL,EAAM7E,GACzB,OAAO6E,EAAKsL,UAAYtL,EAAKsL,SAAStK,gBAAkB7F,EAAK6F,eAI9DtG,KAAM,SAAU/B,EAAK8I,EAAUnJ,GAC9B,IACCJ,EAAI,EACJG,EAASM,EAAIN,OACbkS,EAAUnB,EAAazQ,GAExB,GAAKL,GACJ,GAAKiS,EACJ,KAAQrS,EAAIG,IAGI,IAFPoJ,EAAS3J,MAAOa,EAAKT,GAAKI,GADfJ,UAQpB,IAAMA,KAAKS,EAGV,IAAe,IAFP8I,EAAS3J,MAAOa,EAAKT,GAAKI,GAGjC,WAOH,GAAKiS,EACJ,KAAQrS,EAAIG,IAGI,IAFPoJ,EAASzK,KAAM2B,EAAKT,GAAKA,EAAGS,EAAKT,IADtBA,UAQpB,IAAMA,KAAKS,EAGV,IAAe,IAFP8I,EAASzK,KAAM2B,EAAKT,GAAKA,EAAGS,EAAKT,IAGxC,MAMJ,OAAOS,GAIR3C,KAAM,SAAUuV,GACf,OAAe,MAARA,EACN,IACEA,EAAO,IAAK5K,QAASkI,EAAO,KAIhC2C,UAAW,SAAUzH,EAAK0H,GACzB,IAAIhC,EAAMgC,GAAW,GAarB,OAXY,MAAP1H,IACCqF,EAAatP,OAAOiK,IACxB4E,EAAOlO,MAAOgP,EACE,iBAAR1F,EACP,CAAEA,GAAQA,GAGX9G,EAAKjG,KAAMyS,EAAK1F,IAIX0F,GAGRiC,QAAS,SAAU1L,EAAM+D,EAAK7L,GAC7B,IAAI4L,EAEJ,GAAKC,EAAM,CACV,GAAKjH,EACJ,OAAOA,EAAQ9F,KAAM+M,EAAK/D,EAAM9H,GAMjC,IAHA4L,EAAMC,EAAI1L,OACVH,EAAIA,EAAIA,EAAI,EAAIuS,KAAKkB,IAAK,EAAG7H,EAAM5L,GAAMA,EAAI,EAErCA,EAAI4L,EAAK5L,IAEhB,GAAKA,KAAK6L,GAAOA,EAAK7L,KAAQ8H,EAC7B,OAAO9H,EAKV,OAAQ,GAGTuC,MAAO,SAAUkP,EAAOiC,GAKvB,IAJA,IAAI9H,GAAO8H,EAAOvT,OACjByR,EAAI,EACJ5R,EAAIyR,EAAMtR,OAEHyR,EAAIhG,GACX6F,EAAOzR,KAAQ0T,EAAQ9B,KAKxB,GAAKhG,GAAQA,EACZ,UAAsBxM,IAAdsU,EAAO9B,IACdH,EAAOzR,KAAQ0T,EAAQ9B,KAMzB,OAFAH,EAAMtR,OAASH,EAERyR,GAGRkC,KAAM,SAAUrC,EAAO/H,EAAUqK,GAShC,IARA,IACCC,EAAU,GACV7T,EAAI,EACJG,EAASmR,EAAMnR,OACf2T,GAAkBF,EAIX5T,EAAIG,EAAQH,KACAuJ,EAAU+H,EAAOtR,GAAKA,KAChB8T,GACxBD,EAAQ9O,KAAMuM,EAAOtR,IAIvB,OAAO6T,GAIR9Q,IAAK,SAAUuO,EAAO/H,EAAUwK,GAC/B,IAAIC,EACHhU,EAAI,EACJG,EAASmR,EAAMnR,OAEfoR,EAAM,GAGP,GAJWL,EAAaI,GAKvB,KAAQtR,EAAIG,EAAQH,IAGL,OAFdgU,EAAQzK,EAAU+H,EAAOtR,GAAKA,EAAG+T,KAGhCxC,EAAIxM,KAAMiP,QAMZ,IAAMhU,KAAKsR,EAGI,OAFd0C,EAAQzK,EAAU+H,EAAOtR,GAAKA,EAAG+T,KAGhCxC,EAAIxM,KAAMiP,GAMb,OAAOjQ,EAAOnE,MAAO,GAAI2R,IAI1B0C,KAAM,EAINC,MAAO,SAAUhT,EAAIyL,GACpB,IAAIvM,EAAM8T,EAAOC,EAUjB,GARwB,iBAAZxH,IACXwH,EAAMjT,EAAIyL,GACVA,EAAUzL,EACVA,EAAKiT,GAKA1D,EAAO0B,WAAYjR,GAazB,OARAd,EAAOkE,EAAMxF,KAAMoB,UAAW,GAC9BgU,EAAQ,WACP,OAAOhT,EAAGtB,MAAO+M,GAAWxO,KAAMiC,EAAK2D,OAAQO,EAAMxF,KAAMoB,cAI5DgU,EAAMD,KAAO/S,EAAG+S,KAAO/S,EAAG+S,MAAQxD,EAAOwD,OAElCC,GAGRE,IAAK,WACJ,OAAQ,IAAMC,MAKf9D,QAASA,IAIVE,EAAOjO,KAAK,gEAAgErB,MAAM,MAAM,SAASnB,EAAGiD,GACnGoN,EAAY,WAAapN,EAAO,KAAQA,EAAK6F,iBAkB9C,IAAIwL,EAWJ,SAAWnP,GAEX,IAAInF,EACHuQ,EACAgE,EACAC,EACAC,EACAC,EACAC,EACA/E,EACAgF,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAvB,EACAwB,EAGA/C,EAAU,SAAW,EAAI,IAAI+B,KAC7BiB,EAAenQ,EAAO6P,SACtBO,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAY,SAAUnM,EAAGC,GAIxB,OAHKD,IAAMC,IACVmL,GAAe,GAET,GAIRgB,EAAe,GAAK,GAGpBxF,EAAS,GAAKxL,eACd+G,EAAM,GACN1D,EAAM0D,EAAI1D,IACV4N,EAAclK,EAAI9G,KAClBA,EAAO8G,EAAI9G,KACXT,EAAQuH,EAAIvH,MAGZM,EAAU,SAAUoR,EAAMlO,GAGzB,IAFA,IAAI9H,EAAI,EACP4L,EAAMoK,EAAK7V,OACJH,EAAI4L,EAAK5L,IAChB,GAAKgW,EAAKhW,KAAO8H,EAChB,OAAO9H,EAGT,OAAQ,GAGTiW,EAAW,6HAKXC,EAAa,sBAEbC,EAAoB,mCAKpBC,EAAaD,EAAkB1N,QAAS,IAAK,MAG7CqH,EAAa,2BAA4BqG,EAAoB,OAASD,EAErE,gBAAkBA,EAElB,2DAA6DE,EAAa,OAASF,EACnF,OAEDG,EAAU,KAAOF,EAAP,wFAKoBrG,EALpB,eAWVwG,EAAc,IAAI9N,OAAQ0N,EAAa,IAAK,KAC5CvF,EAAQ,IAAInI,OAAQ,uEAAsE,KAE1F+N,EAAS,IAAI/N,OAAQ,8CACrBgO,EAAe,IAAIhO,OAAQ,wEAE3BiO,EAAmB,IAAIjO,OAAQ,4DAA2D,KAE1FkO,EAAU,IAAIlO,OAAQ6N,GACtBM,EAAc,IAAInO,OAAQ,IAAM4N,EAAa,KAE7CQ,EAAY,CACX,GAAM,IAAIpO,OAAQ,MAAQ2N,EAAoB,KAC9C,MAAS,IAAI3N,OAAQ,QAAU2N,EAAoB,KACnD,IAAO,IAAI3N,OAAQ,KAAO2N,EAAkB1N,QAAS,IAAK,MAAS,KACnE,KAAQ,IAAID,OAAQ,IAAMsH,GAC1B,OAAU,IAAItH,OAAQ,IAAM6N,GAC5B,MAAS,IAAI7N,OAAQ,4LAEkB,KACvC,KAAQ,IAAIA,OAAQ,OAASyN,EAAW,KAAM,KAG9C,aAAgB,IAAIzN,OAAQ,6IACwC,MAGrEqO,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OACXC,GAAU,QAGVC,GAAY,IAAI3O,OAAQ,kEAAiE,MACzF4O,GAAY,SAAUC,EAAGC,EAASC,GACjC,IAAIC,EAAO,KAAOF,EAAU,MAI5B,OAAOE,GAASA,GAAQD,EACvBD,EACAE,EAAO,EAENC,OAAOC,aAAcF,EAAO,OAE5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,QAO5DG,GAAgB,WACf5C,KAIF,IACChQ,EAAKnF,MACHiM,EAAMvH,EAAMxF,KAAMwW,EAAasC,YAChCtC,EAAasC,YAId/L,EAAKyJ,EAAasC,WAAWzX,QAASuL,SACrC,MAAQ/C,GACT5D,EAAO,CAAEnF,MAAOiM,EAAI1L,OAGnB,SAAUpC,EAAQ8Z,GACjB9B,EAAYnW,MAAO7B,EAAQuG,EAAMxF,KAAK+Y,KAKvC,SAAU9Z,EAAQ8Z,GAIjB,IAHA,IAAIjG,EAAI7T,EAAOoC,OACdH,EAAI,EAEIjC,EAAO6T,KAAOiG,EAAI7X,OAC3BjC,EAAOoC,OAASyR,EAAI,IAKvB,SAAS0C,GAAQlS,EAAUuK,EAAS4G,EAASuE,GAC5C,IAAI3U,EAAO2E,EAAM/I,EAAG2M,EAEnB1L,EAAG+X,EAAQC,EAAKC,EAAKC,EAAYC,EAUlC,IAROxL,EAAUA,EAAQyL,eAAiBzL,EAAU2I,KAAmBN,GACtED,EAAapI,GAId4G,EAAUA,GAAW,GACrB7H,GAFAiB,EAAUA,GAAWqI,GAEFtJ,SAEM,iBAAbtJ,IAA0BA,GACxB,IAAbsJ,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAO6H,EAGR,IAAMuE,GAAQ5C,EAAiB,CAG9B,GAAkB,KAAbxJ,IAAoBvI,EAAQ6T,EAAWqB,KAAMjW,IAEjD,GAAMrD,EAAIoE,EAAM,IACf,GAAkB,IAAbuI,EAAiB,CAIrB,KAHA5D,EAAO6E,EAAQ2L,eAAgBvZ,MAGlB+I,EAAKyQ,WAQjB,OAAOhF,EALP,GAAKzL,EAAKlJ,KAAOG,EAEhB,OADAwU,EAAQxO,KAAM+C,GACPyL,OAOT,GAAK5G,EAAQyL,gBAAkBtQ,EAAO6E,EAAQyL,cAAcE,eAAgBvZ,KAC3EsW,EAAU1I,EAAS7E,IAAUA,EAAKlJ,KAAOG,EAEzC,OADAwU,EAAQxO,KAAM+C,GACPyL,MAKH,IAAKpQ,EAAM,GAEjB,OADA4B,EAAKnF,MAAO2T,EAAS5G,EAAQ6L,qBAAsBpW,IAC5CmR,EAGD,IAAMxU,EAAIoE,EAAM,KAAOoN,EAAQkI,uBAErC,OADA1T,EAAKnF,MAAO2T,EAAS5G,EAAQ8L,uBAAwB1Z,IAC9CwU,EAKT,GAAKhD,EAAQmI,OAASvD,IAAcA,EAAU5M,KAAMnG,IAAc,CASjE,GARA6V,EAAMD,EAAM1F,EACZ4F,EAAavL,EACbwL,EAA2B,IAAbzM,GAAkBtJ,EAMd,IAAbsJ,GAAqD,WAAnCiB,EAAQyG,SAAStK,cAA6B,CAWpE,IAVAiP,EAASrD,EAAUtS,IAEb4V,EAAMrL,EAAQgM,aAAa,OAChCV,EAAMD,EAAIvP,QAASyO,GAAS,QAE5BvK,EAAQiM,aAAc,KAAMX,GAE7BA,EAAM,QAAUA,EAAM,MAEtBjY,EAAI+X,EAAO5X,OACHH,KACP+X,EAAO/X,GAAKiY,EAAMY,GAAYd,EAAO/X,IAEtCkY,EAAajB,GAAS1O,KAAMnG,IAAc0W,GAAanM,EAAQ4L,aAAgB5L,EAC/EwL,EAAcJ,EAAOzU,KAAK,KAG3B,GAAK6U,EACJ,IAIC,OAHApT,EAAKnF,MAAO2T,EACX2E,EAAWa,iBAAkBZ,IAEvB5E,EACN,MAAMyF,IACN,QACKhB,GACLrL,EAAQsM,gBAAgB,QAQ7B,OAAOrJ,EAAQxN,EAASqG,QAASkI,EAAO,MAAQhE,EAAS4G,EAASuE,GASnE,SAASpC,KACR,IAAI7T,EAAO,GAUX,OARA,SAASqX,EAAOvU,EAAKqP,GAMpB,OAJKnS,EAAKkD,KAAMJ,EAAM,KAAQ4P,EAAK4E,oBAE3BD,EAAOrX,EAAKuX,SAEZF,EAAOvU,EAAM,KAAQqP,GAS/B,SAASqF,GAAcnY,GAEtB,OADAA,EAAIoR,IAAY,EACTpR,EAOR,SAASoY,GAAQpY,GAChB,IAAIqY,EAAMvE,EAASwE,cAAc,OAEjC,IACC,QAAStY,EAAIqY,GACZ,MAAO5Q,GACR,OAAO,EACN,QAEI4Q,EAAIhB,YACRgB,EAAIhB,WAAWkB,YAAaF,GAG7BA,EAAM,MASR,SAASG,GAAWpL,EAAOqL,GAI1B,IAHA,IAAI9N,EAAMyC,EAAMnN,MAAM,KACrBnB,EAAIsO,EAAMnO,OAEHH,KACPuU,EAAKqF,WAAY/N,EAAI7L,IAAO2Z,EAU9B,SAASE,GAAcnQ,EAAGC,GACzB,IAAImQ,EAAMnQ,GAAKD,EACdqQ,EAAOD,GAAsB,IAAfpQ,EAAEgC,UAAiC,IAAf/B,EAAE+B,YAChC/B,EAAEqQ,aAAelE,KACjBpM,EAAEsQ,aAAelE,GAGtB,GAAKiE,EACJ,OAAOA,EAIR,GAAKD,EACJ,KAASA,EAAMA,EAAIG,aAClB,GAAKH,IAAQnQ,EACZ,OAAQ,EAKX,OAAOD,EAAI,GAAK,EAOjB,SAASwQ,GAAmB7R,GAC3B,OAAO,SAAUP,GAEhB,MAAgB,UADLA,EAAKsL,SAAStK,eACEhB,EAAKO,OAASA,GAQ3C,SAAS8R,GAAoB9R,GAC5B,OAAO,SAAUP,GAChB,IAAI7E,EAAO6E,EAAKsL,SAAStK,cACzB,OAAiB,UAAT7F,GAA6B,WAATA,IAAsB6E,EAAKO,OAASA,GAQlE,SAAS+R,GAAwBlZ,GAChC,OAAOmY,IAAa,SAAUgB,GAE7B,OADAA,GAAYA,EACLhB,IAAa,SAAUvB,EAAMjE,GAMnC,IALA,IAAIjC,EACH0I,EAAepZ,EAAI,GAAI4W,EAAK3X,OAAQka,GACpCra,EAAIsa,EAAana,OAGVH,KACF8X,EAAOlG,EAAI0I,EAAata,MAC5B8X,EAAKlG,KAAOiC,EAAQjC,GAAKkG,EAAKlG,WAYnC,SAASkH,GAAanM,GACrB,OAAOA,QAAmD,IAAjCA,EAAQ6L,sBAAwC7L,EAw+B1E,IAAM3M,KAp+BNuQ,EAAU+D,GAAO/D,QAAU,GAO3BkE,EAAQH,GAAOG,MAAQ,SAAU3M,GAGhC,IAAIyS,EAAkBzS,IAASA,EAAKsQ,eAAiBtQ,GAAMyS,gBAC3D,QAAOA,GAA+C,SAA7BA,EAAgBnH,UAQ1C2B,EAAcT,GAAOS,YAAc,SAAUtS,GAC5C,IAAI+X,EAAYpc,EACfqc,EAAMhY,EAAOA,EAAK2V,eAAiB3V,EAAO6S,EAG3C,OAAKmF,IAAQzF,GAA6B,IAAjByF,EAAI/O,UAAmB+O,EAAIF,iBAKpDvF,EAAWyF,EACXxF,EAAUwF,EAAIF,iBACdnc,EAASqc,EAAIC,cAMEtc,IAAWA,EAAOuc,MAE3Bvc,EAAOwc,iBACXxc,EAAOwc,iBAAkB,SAAUjD,IAAe,GACvCvZ,EAAOyc,aAClBzc,EAAOyc,YAAa,WAAYlD,KAMlCzC,GAAkBT,EAAOgG,GAQzBlK,EAAQT,WAAawJ,IAAO,SAAUC,GAErC,OADAA,EAAIxQ,UAAY,KACRwQ,EAAIZ,aAAa,gBAO1BpI,EAAQiI,qBAAuBc,IAAO,SAAUC,GAE/C,OADAA,EAAIuB,YAAaL,EAAIM,cAAc,MAC3BxB,EAAIf,qBAAqB,KAAKrY,UAIvCoQ,EAAQkI,uBAAyB1B,EAAQxO,KAAMkS,EAAIhC,wBAMnDlI,EAAQyK,QAAU1B,IAAO,SAAUC,GAElC,OADAtE,EAAQ6F,YAAavB,GAAM3a,GAAK0T,GACxBmI,EAAIQ,oBAAsBR,EAAIQ,kBAAmB3I,GAAUnS,UAI/DoQ,EAAQyK,SACZzG,EAAK5N,KAAS,GAAI,SAAU/H,EAAI+N,GAC/B,QAAuC,IAA3BA,EAAQ2L,gBAAkCpD,EAAiB,CACtE,IAAInW,EAAI4N,EAAQ2L,eAAgB1Z,GAGhC,OAAOG,GAAKA,EAAEwZ,WAAa,CAAExZ,GAAM,KAGrCwV,EAAKnR,OAAW,GAAI,SAAUxE,GAC7B,IAAIsc,EAAStc,EAAG6J,QAAS0O,GAAWC,IACpC,OAAO,SAAUtP,GAChB,OAAOA,EAAK6Q,aAAa,QAAUuC,aAM9B3G,EAAK5N,KAAS,GAErB4N,EAAKnR,OAAW,GAAK,SAAUxE,GAC9B,IAAIsc,EAAStc,EAAG6J,QAAS0O,GAAWC,IACpC,OAAO,SAAUtP,GAChB,IAAIrF,OAAwC,IAA1BqF,EAAKqT,kBAAoCrT,EAAKqT,iBAAiB,MACjF,OAAO1Y,GAAQA,EAAKuR,QAAUkH,KAMjC3G,EAAK5N,KAAU,IAAI4J,EAAQiI,qBAC1B,SAAU4C,EAAKzO,GACd,YAA6C,IAAjCA,EAAQ6L,qBACZ7L,EAAQ6L,qBAAsB4C,GAG1B7K,EAAQmI,IACZ/L,EAAQoM,iBAAkBqC,QAD3B,GAKR,SAAUA,EAAKzO,GACd,IAAI7E,EACHqM,EAAM,GACNnU,EAAI,EAEJuT,EAAU5G,EAAQ6L,qBAAsB4C,GAGzC,GAAa,MAARA,EAAc,CAClB,KAAStT,EAAOyL,EAAQvT,MACA,IAAlB8H,EAAK4D,UACTyI,EAAIpP,KAAM+C,GAIZ,OAAOqM,EAER,OAAOZ,GAITgB,EAAK5N,KAAY,MAAI4J,EAAQkI,wBAA0B,SAAU1P,EAAW4D,GAC3E,GAAKuI,EACJ,OAAOvI,EAAQ8L,uBAAwB1P,IAUzCqM,EAAgB,GAOhBD,EAAY,IAEN5E,EAAQmI,IAAM3B,EAAQxO,KAAMkS,EAAI1B,qBAGrCO,IAAO,SAAUC,GAMhBtE,EAAQ6F,YAAavB,GAAM8B,UAAY,UAAY/I,EAAZ,qBACrBA,EADqB,iEAQlCiH,EAAIR,iBAAiB,wBAAwB5Y,QACjDgV,EAAUpQ,KAAM,yCAKXwU,EAAIR,iBAAiB,cAAc5Y,QACxCgV,EAAUpQ,KAAM,mCAAoCkR,EAAW,KAI1DsD,EAAIR,iBAAkB,QAAUzG,EAAU,MAAOnS,QACtDgV,EAAUpQ,KAAK,MAMVwU,EAAIR,iBAAiB,YAAY5Y,QACtCgV,EAAUpQ,KAAK,YAMVwU,EAAIR,iBAAkB,KAAOzG,EAAU,MAAOnS,QACnDgV,EAAUpQ,KAAK,eAIjBuU,IAAO,SAAUC,GAGhB,IAAI+B,EAAQb,EAAIjB,cAAc,SAC9B8B,EAAM1C,aAAc,OAAQ,UAC5BW,EAAIuB,YAAaQ,GAAQ1C,aAAc,OAAQ,KAI1CW,EAAIR,iBAAiB,YAAY5Y,QACrCgV,EAAUpQ,KAAM,sCAKXwU,EAAIR,iBAAiB,YAAY5Y,QACtCgV,EAAUpQ,KAAM,WAAY,aAI7BwU,EAAIR,iBAAiB,QACrB5D,EAAUpQ,KAAK,aAIXwL,EAAQgL,gBAAkBxE,EAAQxO,KAAOsL,EAAUoB,EAAQpB,SAChEoB,EAAQuG,uBACRvG,EAAQwG,oBACRxG,EAAQyG,kBACRzG,EAAQ0G,qBAERrC,IAAO,SAAUC,GAGhBhJ,EAAQqL,kBAAoB/H,EAAQ/U,KAAMya,EAAK,OAI/C1F,EAAQ/U,KAAMya,EAAK,aACnBnE,EAAcrQ,KAAM,KAAMsR,MAI5BlB,EAAYA,EAAUhV,QAAU,IAAIqI,OAAQ2M,EAAU7R,KAAK,MAC3D8R,EAAgBA,EAAcjV,QAAU,IAAIqI,OAAQ4M,EAAc9R,KAAK,MAIvEkX,EAAazD,EAAQxO,KAAM0M,EAAQ4G,yBAKnCxG,EAAWmF,GAAczD,EAAQxO,KAAM0M,EAAQI,UAC9C,SAAU3L,EAAGC,GACZ,IAAImS,EAAuB,IAAfpS,EAAEgC,SAAiBhC,EAAE6Q,gBAAkB7Q,EAClDqS,EAAMpS,GAAKA,EAAE4O,WACd,OAAO7O,IAAMqS,MAAWA,GAAwB,IAAjBA,EAAIrQ,YAClCoQ,EAAMzG,SACLyG,EAAMzG,SAAU0G,GAChBrS,EAAEmS,yBAA8D,GAAnCnS,EAAEmS,wBAAyBE,MAG3D,SAAUrS,EAAGC,GACZ,GAAKA,EACJ,KAASA,EAAIA,EAAE4O,YACd,GAAK5O,IAAMD,EACV,OAAO,EAIV,OAAO,GAOTmM,EAAY2E,EACZ,SAAU9Q,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,OADAmL,GAAe,EACR,EAIR,IAAIkH,GAAWtS,EAAEmS,yBAA2BlS,EAAEkS,wBAC9C,OAAKG,IAYU,GAPfA,GAAYtS,EAAE0O,eAAiB1O,MAAUC,EAAEyO,eAAiBzO,GAC3DD,EAAEmS,wBAAyBlS,GAG3B,KAIE4G,EAAQ0L,cAAgBtS,EAAEkS,wBAAyBnS,KAAQsS,EAGxDtS,IAAM+Q,GAAO/Q,EAAE0O,gBAAkB9C,GAAgBD,EAASC,EAAc5L,IACpE,EAEJC,IAAM8Q,GAAO9Q,EAAEyO,gBAAkB9C,GAAgBD,EAASC,EAAc3L,GACrE,EAIDkL,EACJjQ,EAASiQ,EAAWnL,GAAM9E,EAASiQ,EAAWlL,GAChD,EAGe,EAAVqS,GAAe,EAAI,IAE3B,SAAUtS,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,OADAmL,GAAe,EACR,EAGR,IAAIgF,EACH9Z,EAAI,EACJkc,EAAMxS,EAAE6O,WACRwD,EAAMpS,EAAE4O,WACR4D,EAAK,CAAEzS,GACP0S,EAAK,CAAEzS,GAGR,IAAMuS,IAAQH,EACb,OAAOrS,IAAM+Q,GAAO,EACnB9Q,IAAM8Q,EAAM,EACZyB,GAAO,EACPH,EAAM,EACNlH,EACEjQ,EAASiQ,EAAWnL,GAAM9E,EAASiQ,EAAWlL,GAChD,EAGK,GAAKuS,IAAQH,EACnB,OAAOlC,GAAcnQ,EAAGC,GAKzB,IADAmQ,EAAMpQ,EACGoQ,EAAMA,EAAIvB,YAClB4D,EAAGhY,QAAS2V,GAGb,IADAA,EAAMnQ,EACGmQ,EAAMA,EAAIvB,YAClB6D,EAAGjY,QAAS2V,GAIb,KAAQqC,EAAGnc,KAAOoc,EAAGpc,IACpBA,IAGD,OAAOA,EAEN6Z,GAAcsC,EAAGnc,GAAIoc,EAAGpc,IAGxBmc,EAAGnc,KAAOsV,GAAgB,EAC1B8G,EAAGpc,KAAOsV,EAAe,EACzB,GAGKmF,GA1WCzF,GA6WTV,GAAOT,QAAU,SAAUvL,EAAM+T,GAChC,OAAO/H,GAAQhM,EAAM,KAAM,KAAM+T,IAGlC/H,GAAOiH,gBAAkB,SAAUzT,EAAMQ,GASxC,IAPOR,EAAKsQ,eAAiBtQ,KAAWkN,GACvCD,EAAajN,GAIdQ,EAAOA,EAAKG,QAASgO,EAAkB,UAElClG,EAAQgL,iBAAmBrG,KAC5BE,IAAkBA,EAAc7M,KAAMD,OACtC6M,IAAkBA,EAAU5M,KAAMD,IAErC,IACC,IAAIiJ,EAAMsC,EAAQ/U,KAAMgJ,EAAMQ,GAG9B,GAAKiJ,GAAOhB,EAAQqL,mBAGlB9T,EAAKkN,UAAuC,KAA3BlN,EAAKkN,SAAStJ,SAChC,OAAO6F,EAEP,MAAO5I,IAGV,OAAO2L,GAAQhM,EAAM0M,EAAU,KAAM,CAAElN,IAAS3H,OAAS,GAG1DmU,GAAOe,SAAW,SAAU1I,EAAS7E,GAKpC,OAHO6E,EAAQyL,eAAiBzL,KAAcqI,GAC7CD,EAAapI,GAEP0I,EAAU1I,EAAS7E,IAG3BwM,GAAO7F,KAAO,SAAU3G,EAAM7E,IAEtB6E,EAAKsQ,eAAiBtQ,KAAWkN,GACvCD,EAAajN,GAGd,IAAI5G,EAAKqT,EAAKqF,WAAY3W,EAAK6F,eAE9BwT,EAAMpb,GAAMoP,EAAOxR,KAAMyV,EAAKqF,WAAY3W,EAAK6F,eAC9C5H,EAAI4G,EAAM7E,GAAOiS,QACjB9V,EAEF,YAAeA,IAARkd,EACNA,EACA/L,EAAQT,aAAeoF,EACtBpN,EAAK6Q,aAAc1V,IAClBqZ,EAAMxU,EAAKqT,iBAAiBlY,KAAUqZ,EAAIC,UAC1CD,EAAItI,MACJ,MAGJM,GAAO3O,MAAQ,SAAU+M,GACxB,MAAM,IAAIrQ,MAAO,0CAA4CqQ,IAO9D4B,GAAOkI,WAAa,SAAUjJ,GAC7B,IAAIzL,EACH2U,EAAa,GACb7K,EAAI,EACJ5R,EAAI,EAOL,GAJA8U,GAAgBvE,EAAQmM,iBACxB7H,GAAatE,EAAQoM,YAAcpJ,EAAQjP,MAAO,GAClDiP,EAAQ1B,KAAMgE,GAETf,EAAe,CACnB,KAAShN,EAAOyL,EAAQvT,MAClB8H,IAASyL,EAASvT,KACtB4R,EAAI6K,EAAW1X,KAAM/E,IAGvB,KAAQ4R,KACP2B,EAAQnJ,OAAQqS,EAAY7K,GAAK,GAQnC,OAFAiD,EAAY,KAELtB,GAORiB,EAAUF,GAAOE,QAAU,SAAU1M,GACpC,IAAIrF,EACH8O,EAAM,GACNvR,EAAI,EACJ0L,EAAW5D,EAAK4D,SAEjB,GAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,iBAArB5D,EAAK8U,YAChB,OAAO9U,EAAK8U,YAGZ,IAAM9U,EAAOA,EAAK+U,WAAY/U,EAAMA,EAAOA,EAAKmS,YAC/C1I,GAAOiD,EAAS1M,QAGZ,GAAkB,IAAb4D,GAA+B,IAAbA,EAC7B,OAAO5D,EAAKgV,eAhBZ,KAASra,EAAOqF,EAAK9H,MAEpBuR,GAAOiD,EAAS/R,GAkBlB,OAAO8O,GAGRgD,EAAOD,GAAOyI,UAAY,CAGzB5D,YAAa,GAEb6D,aAAc3D,GAEdlW,MAAOyT,EAEPgD,WAAY,GAEZjT,KAAM,GAENsW,SAAU,CACT,IAAK,CAAEC,IAAK,aAAczL,OAAO,GACjC,IAAK,CAAEyL,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmBzL,OAAO,GACtC,IAAK,CAAEyL,IAAK,oBAGbC,UAAW,CACV,KAAQ,SAAUha,GAUjB,OATAA,EAAM,GAAKA,EAAM,GAAGsF,QAAS0O,GAAWC,IAGxCjU,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKsF,QAAS0O,GAAWC,IAExD,OAAbjU,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAMmB,MAAO,EAAG,IAGxB,MAAS,SAAUnB,GA6BlB,OAlBAA,EAAM,GAAKA,EAAM,GAAG2F,cAEY,QAA3B3F,EAAM,GAAGmB,MAAO,EAAG,IAEjBnB,EAAM,IACXmR,GAAO3O,MAAOxC,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBmR,GAAO3O,MAAOxC,EAAM,IAGdA,GAGR,OAAU,SAAUA,GACnB,IAAIia,EACHC,GAAYla,EAAM,IAAMA,EAAM,GAE/B,OAAKyT,EAAiB,MAAErO,KAAMpF,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxBka,GAAY3G,EAAQnO,KAAM8U,KAEpCD,EAAS1I,EAAU2I,GAAU,MAE7BD,EAASC,EAASzY,QAAS,IAAKyY,EAASld,OAASid,GAAWC,EAASld,UAGvEgD,EAAM,GAAKA,EAAM,GAAGmB,MAAO,EAAG8Y,GAC9Bja,EAAM,GAAKka,EAAS/Y,MAAO,EAAG8Y,IAIxBja,EAAMmB,MAAO,EAAG,MAIzBlB,OAAQ,CAEP,IAAO,SAAUka,GAChB,IAAIlK,EAAWkK,EAAiB7U,QAAS0O,GAAWC,IAAYtO,cAChE,MAA4B,MAArBwU,EACN,WAAa,OAAO,GACpB,SAAUxV,GACT,OAAOA,EAAKsL,UAAYtL,EAAKsL,SAAStK,gBAAkBsK,IAI3D,MAAS,SAAUrK,GAClB,IAAIwU,EAAU9H,EAAY1M,EAAY,KAEtC,OAAOwU,IACLA,EAAU,IAAI/U,OAAQ,0BAA2BO,EAAY,IAAMmN,EAAa,SACjFT,EAAY1M,GAAW,SAAUjB,GAChC,OAAOyV,EAAQhV,KAAgC,iBAAnBT,EAAKiB,WAA0BjB,EAAKiB,gBAA0C,IAAtBjB,EAAK6Q,cAAgC7Q,EAAK6Q,aAAa,UAAY,QAI1J,KAAQ,SAAU1V,EAAMua,EAAUC,GACjC,OAAO,SAAU3V,GAChB,IAAIc,EAAS0L,GAAO7F,KAAM3G,EAAM7E,GAEhC,OAAe,MAAV2F,EACgB,OAAb4U,GAEFA,IAIN5U,GAAU,GAEU,MAAb4U,EAAmB5U,IAAW6U,EACvB,OAAbD,EAAoB5U,IAAW6U,EAClB,OAAbD,EAAoBC,GAAqC,IAA5B7U,EAAOhE,QAAS6Y,GAChC,OAAbD,EAAoBC,GAAS7U,EAAOhE,QAAS6Y,IAAW,EAC3C,OAAbD,EAAoBC,GAAS7U,EAAOtE,OAAQmZ,EAAMtd,UAAasd,EAClD,OAAbD,GAAsB,IAAM5U,EAAOH,QAAS6N,EAAa,KAAQ,KAAM1R,QAAS6Y,IAAW,EAC9E,OAAbD,IAAoB5U,IAAW6U,GAAS7U,EAAOtE,MAAO,EAAGmZ,EAAMtd,OAAS,KAAQsd,EAAQ,QAK3F,MAAS,SAAUpV,EAAMqV,EAAMrD,EAAU5I,EAAOE,GAC/C,IAAIgM,EAAgC,QAAvBtV,EAAK/D,MAAO,EAAG,GAC3BsZ,EAA+B,SAArBvV,EAAK/D,OAAQ,GACvBuZ,EAAkB,YAATH,EAEV,OAAiB,IAAVjM,GAAwB,IAATE,EAGrB,SAAU7J,GACT,QAASA,EAAKyQ,YAGf,SAAUzQ,EAAM6E,EAASmR,GACxB,IAAI5E,EAAO6E,EAAYtb,EAAMsX,EAAMiE,EAAWC,EAC7Cf,EAAMS,IAAWC,EAAU,cAAgB,kBAC3Cxf,EAAS0J,EAAKyQ,WACdtV,EAAO4a,GAAU/V,EAAKsL,SAAStK,cAC/BoV,GAAYJ,IAAQD,EAErB,GAAKzf,EAAS,CAGb,GAAKuf,EAAS,CACb,KAAQT,GAAM,CAEb,IADAza,EAAOqF,EACErF,EAAOA,EAAMya,IACrB,GAAKW,EAASpb,EAAK2Q,SAAStK,gBAAkB7F,EAAyB,IAAlBR,EAAKiJ,SACzD,OAAO,EAITuS,EAAQf,EAAe,SAAT7U,IAAoB4V,GAAS,cAE5C,OAAO,EAMR,GAHAA,EAAQ,CAAEL,EAAUxf,EAAOye,WAAaze,EAAO+f,WAG1CP,GAAWM,GAQf,IAJAF,GADA9E,GADA6E,EAAa3f,EAAQkU,KAAclU,EAAQkU,GAAY,KACnCjK,IAAU,IACZ,KAAOkN,GAAW2D,EAAM,GAC1Ca,EAAOb,EAAM,KAAO3D,GAAW2D,EAAM,GACrCzW,EAAOub,GAAa5f,EAAOwZ,WAAYoG,GAE9Bvb,IAASub,GAAavb,GAAQA,EAAMya,KAG3CnD,EAAOiE,EAAY,IAAMC,EAAM9V,OAGhC,GAAuB,IAAlB1F,EAAKiJ,YAAoBqO,GAAQtX,IAASqF,EAAO,CACrDiW,EAAY1V,GAAS,CAAEkN,EAASyI,EAAWjE,GAC3C,YAKI,GAAKmE,IAAahF,GAASpR,EAAMwK,KAAcxK,EAAMwK,GAAY,KAAMjK,KAAW6Q,EAAM,KAAO3D,EACrGwE,EAAOb,EAAM,QAKb,MAASzW,IAASub,GAAavb,GAAQA,EAAMya,KAC3CnD,EAAOiE,EAAY,IAAMC,EAAM9V,UAEzB0V,EAASpb,EAAK2Q,SAAStK,gBAAkB7F,EAAyB,IAAlBR,EAAKiJ,cAAsBqO,IAE5EmE,KACHzb,EAAM6P,KAAc7P,EAAM6P,GAAY,KAAMjK,GAAS,CAAEkN,EAASwE,IAG7DtX,IAASqF,MASjB,OADAiS,GAAQpI,KACQF,GAAWsI,EAAOtI,GAAU,GAAKsI,EAAOtI,GAAS,KAKrE,OAAU,SAAU2M,EAAQ/D,GAK3B,IAAIja,EACHc,EAAKqT,EAAK8B,QAAS+H,IAAY7J,EAAK8J,WAAYD,EAAOtV,gBACtDwL,GAAO3O,MAAO,uBAAyByY,GAKzC,OAAKld,EAAIoR,GACDpR,EAAImZ,GAIPnZ,EAAGf,OAAS,GAChBC,EAAO,CAAEge,EAAQA,EAAQ,GAAI/D,GACtB9F,EAAK8J,WAAWvZ,eAAgBsZ,EAAOtV,eAC7CuQ,IAAa,SAAUvB,EAAMjE,GAI5B,IAHA,IAAIyK,EACHC,EAAUrd,EAAI4W,EAAMuC,GACpBra,EAAIue,EAAQpe,OACLH,KAEP8X,EADAwG,EAAM1Z,EAASkT,EAAMyG,EAAQve,OACZ6T,EAASyK,GAAQC,EAAQve,OAG5C,SAAU8H,GACT,OAAO5G,EAAI4G,EAAM,EAAG1H,KAIhBc,IAITmV,QAAS,CAER,IAAOgD,IAAa,SAAUjX,GAI7B,IAAIkZ,EAAQ,GACX/H,EAAU,GACViL,EAAU7J,EAASvS,EAASqG,QAASkI,EAAO,OAE7C,OAAO6N,EAASlM,GACf+G,IAAa,SAAUvB,EAAMjE,EAASlH,EAASmR,GAM9C,IALA,IAAIhW,EACH2W,EAAYD,EAAS1G,EAAM,KAAMgG,EAAK,IACtC9d,EAAI8X,EAAK3X,OAGFH,MACD8H,EAAO2W,EAAUze,MACtB8X,EAAK9X,KAAO6T,EAAQ7T,GAAK8H,OAI5B,SAAUA,EAAM6E,EAASmR,GAKxB,OAJAxC,EAAM,GAAKxT,EACX0W,EAASlD,EAAO,KAAMwC,EAAKvK,GAE3B+H,EAAM,GAAK,MACH/H,EAAQpL,UAInB,IAAOkR,IAAa,SAAUjX,GAC7B,OAAO,SAAU0F,GAChB,OAAOwM,GAAQlS,EAAU0F,GAAO3H,OAAS,MAI3C,SAAYkZ,IAAa,SAAUhG,GAElC,OADAA,EAAOA,EAAK5K,QAAS0O,GAAWC,IACzB,SAAUtP,GAChB,OAASA,EAAK8U,aAAe9U,EAAK4W,WAAalK,EAAS1M,IAASlD,QAASyO,IAAU,MAWtF,KAAQgG,IAAc,SAAUsF,GAM/B,OAJMhI,EAAYpO,KAAKoW,GAAQ,KAC9BrK,GAAO3O,MAAO,qBAAuBgZ,GAEtCA,EAAOA,EAAKlW,QAAS0O,GAAWC,IAAYtO,cACrC,SAAUhB,GAChB,IAAI8W,EACJ,GACC,GAAMA,EAAW1J,EAChBpN,EAAK6W,KACL7W,EAAK6Q,aAAa,aAAe7Q,EAAK6Q,aAAa,QAGnD,OADAiG,EAAWA,EAAS9V,iBACA6V,GAA2C,IAAnCC,EAASha,QAAS+Z,EAAO,YAE5C7W,EAAOA,EAAKyQ,aAAiC,IAAlBzQ,EAAK4D,UAC3C,OAAO,MAKT,OAAU,SAAU5D,GACnB,IAAI+W,EAAO1Z,EAAO2Z,UAAY3Z,EAAO2Z,SAASD,KAC9C,OAAOA,GAAQA,EAAKva,MAAO,KAAQwD,EAAKlJ,IAGzC,KAAQ,SAAUkJ,GACjB,OAAOA,IAASmN,GAGjB,MAAS,SAAUnN,GAClB,OAAOA,IAASkN,EAAS+J,iBAAmB/J,EAASgK,UAAYhK,EAASgK,gBAAkBlX,EAAKO,MAAQP,EAAKmX,OAASnX,EAAKoX,WAI7H,QAAW,SAAUpX,GACpB,OAAyB,IAAlBA,EAAKqX,UAGb,SAAY,SAAUrX,GACrB,OAAyB,IAAlBA,EAAKqX,UAGb,QAAW,SAAUrX,GAGpB,IAAIsL,EAAWtL,EAAKsL,SAAStK,cAC7B,MAAqB,UAAbsK,KAA0BtL,EAAKsX,SAA0B,WAAbhM,KAA2BtL,EAAKuX,UAGrF,SAAY,SAAUvX,GAOrB,OAJKA,EAAKyQ,YACTzQ,EAAKyQ,WAAW+G,eAGQ,IAAlBxX,EAAKuX,UAIb,MAAS,SAAUvX,GAKlB,IAAMA,EAAOA,EAAK+U,WAAY/U,EAAMA,EAAOA,EAAKmS,YAC/C,GAAKnS,EAAK4D,SAAW,EACpB,OAAO,EAGT,OAAO,GAGR,OAAU,SAAU5D,GACnB,OAAQyM,EAAK8B,QAAe,MAAGvO,IAIhC,OAAU,SAAUA,GACnB,OAAOgP,EAAQvO,KAAMT,EAAKsL,WAG3B,MAAS,SAAUtL,GAClB,OAAO+O,EAAQtO,KAAMT,EAAKsL,WAG3B,OAAU,SAAUtL,GACnB,IAAI7E,EAAO6E,EAAKsL,SAAStK,cACzB,MAAgB,UAAT7F,GAAkC,WAAd6E,EAAKO,MAA8B,WAATpF,GAGtD,KAAQ,SAAU6E,GACjB,IAAI2G,EACJ,MAAuC,UAAhC3G,EAAKsL,SAAStK,eACN,SAAdhB,EAAKO,OAImC,OAArCoG,EAAO3G,EAAK6Q,aAAa,UAA2C,SAAvBlK,EAAK3F,gBAIvD,MAASsR,IAAuB,WAC/B,MAAO,CAAE,MAGV,KAAQA,IAAuB,SAAUE,EAAcna,GACtD,MAAO,CAAEA,EAAS,MAGnB,GAAMia,IAAuB,SAAUE,EAAcna,EAAQka,GAC5D,MAAO,CAAEA,EAAW,EAAIA,EAAWla,EAASka,MAG7C,KAAQD,IAAuB,SAAUE,EAAcna,GAEtD,IADA,IAAIH,EAAI,EACAA,EAAIG,EAAQH,GAAK,EACxBsa,EAAavV,KAAM/E,GAEpB,OAAOsa,KAGR,IAAOF,IAAuB,SAAUE,EAAcna,GAErD,IADA,IAAIH,EAAI,EACAA,EAAIG,EAAQH,GAAK,EACxBsa,EAAavV,KAAM/E,GAEpB,OAAOsa,KAGR,GAAMF,IAAuB,SAAUE,EAAcna,EAAQka,GAE5D,IADA,IAAIra,EAAIqa,EAAW,EAAIA,EAAWla,EAASka,IACjCra,GAAK,GACdsa,EAAavV,KAAM/E,GAEpB,OAAOsa,KAGR,GAAMF,IAAuB,SAAUE,EAAcna,EAAQka,GAE5D,IADA,IAAIra,EAAIqa,EAAW,EAAIA,EAAWla,EAASka,IACjCra,EAAIG,GACbma,EAAavV,KAAM/E,GAEpB,OAAOsa,OAKV/F,EAAK8B,QAAa,IAAI9B,EAAK8B,QAAY,GAG5B,CAAEkJ,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5EpL,EAAK8B,QAASrW,GAAMka,GAAmBla,GAExC,IAAMA,IAAK,CAAE4f,QAAQ,EAAMrb,OAAO,GACjCgQ,EAAK8B,QAASrW,GAAMma,GAAoBna,GAIzC,SAASqe,MAuET,SAASxF,GAAYgH,GAIpB,IAHA,IAAI7f,EAAI,EACP4L,EAAMiU,EAAO1f,OACbiC,EAAW,GACJpC,EAAI4L,EAAK5L,IAChBoC,GAAYyd,EAAO7f,GAAGgU,MAEvB,OAAO5R,EAGR,SAAS0d,GAAetB,EAASuB,EAAYjgB,GAC5C,IAAIod,EAAM6C,EAAW7C,IACpB8C,EAAmBlgB,GAAgB,eAARod,EAC3B+C,EAAWzK,IAEZ,OAAOuK,EAAWtO,MAEjB,SAAU3J,EAAM6E,EAASmR,GACxB,KAAShW,EAAOA,EAAMoV,IACrB,GAAuB,IAAlBpV,EAAK4D,UAAkBsU,EAC3B,OAAOxB,EAAS1W,EAAM6E,EAASmR,IAMlC,SAAUhW,EAAM6E,EAASmR,GACxB,IAAIoC,EAAUnC,EACboC,EAAW,CAAE5K,EAAS0K,GAGvB,GAAKnC,GACJ,KAAShW,EAAOA,EAAMoV,IACrB,IAAuB,IAAlBpV,EAAK4D,UAAkBsU,IACtBxB,EAAS1W,EAAM6E,EAASmR,GAC5B,OAAO,OAKV,KAAShW,EAAOA,EAAMoV,IACrB,GAAuB,IAAlBpV,EAAK4D,UAAkBsU,EAAmB,CAE9C,IAAME,GADNnC,EAAajW,EAAMwK,KAAcxK,EAAMwK,GAAY,KACtB4K,KAC5BgD,EAAU,KAAQ3K,GAAW2K,EAAU,KAAQD,EAG/C,OAAQE,EAAU,GAAMD,EAAU,GAMlC,GAHAnC,EAAYb,GAAQiD,EAGdA,EAAU,GAAM3B,EAAS1W,EAAM6E,EAASmR,GAC7C,OAAO,IASf,SAASsC,GAAgBC,GACxB,OAAOA,EAASlgB,OAAS,EACxB,SAAU2H,EAAM6E,EAASmR,GAExB,IADA,IAAI9d,EAAIqgB,EAASlgB,OACTH,KACP,IAAMqgB,EAASrgB,GAAI8H,EAAM6E,EAASmR,GACjC,OAAO,EAGT,OAAO,GAERuC,EAAS,GAYX,SAASC,GAAU7B,EAAW1b,EAAKK,EAAQuJ,EAASmR,GAOnD,IANA,IAAIhW,EACHyY,EAAe,GACfvgB,EAAI,EACJ4L,EAAM6S,EAAUte,OAChBqgB,EAAgB,MAAPzd,EAEF/C,EAAI4L,EAAK5L,KACV8H,EAAO2W,EAAUze,MAChBoD,IAAUA,EAAQ0E,EAAM6E,EAASmR,KACtCyC,EAAaxb,KAAM+C,GACd0Y,GACJzd,EAAIgC,KAAM/E,KAMd,OAAOugB,EAGR,SAASE,GAAYtD,EAAW/a,EAAUoc,EAASkC,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAYpO,KAC/BoO,EAAaD,GAAYC,IAErBC,IAAeA,EAAYrO,KAC/BqO,EAAaF,GAAYE,EAAYC,IAE/BvH,IAAa,SAAUvB,EAAMvE,EAAS5G,EAASmR,GACrD,IAAI+C,EAAM7gB,EAAG8H,EACZgZ,EAAS,GACTC,EAAU,GACVC,EAAczN,EAAQpT,OAGtBmR,EAAQwG,GA5CX,SAA2B1V,EAAU6e,EAAU1N,GAG9C,IAFA,IAAIvT,EAAI,EACP4L,EAAMqV,EAAS9gB,OACRH,EAAI4L,EAAK5L,IAChBsU,GAAQlS,EAAU6e,EAASjhB,GAAIuT,GAEhC,OAAOA,EAsCW2N,CAAkB9e,GAAY,IAAKuK,EAAQjB,SAAW,CAAEiB,GAAYA,EAAS,IAG7FwU,GAAYhE,IAAerF,GAAS1V,EAEnCkP,EADAgP,GAAUhP,EAAOwP,EAAQ3D,EAAWxQ,EAASmR,GAG9CsD,EAAa5C,EAEZmC,IAAgB7I,EAAOqF,EAAY6D,GAAeN,GAGjD,GAGAnN,EACD4N,EAQF,GALK3C,GACJA,EAAS2C,EAAWC,EAAYzU,EAASmR,GAIrC4C,EAMJ,IALAG,EAAOP,GAAUc,EAAYL,GAC7BL,EAAYG,EAAM,GAAIlU,EAASmR,GAG/B9d,EAAI6gB,EAAK1gB,OACDH,MACD8H,EAAO+Y,EAAK7gB,MACjBohB,EAAYL,EAAQ/gB,MAASmhB,EAAWJ,EAAQ/gB,IAAO8H,IAK1D,GAAKgQ,GACJ,GAAK6I,GAAcxD,EAAY,CAC9B,GAAKwD,EAAa,CAIjB,IAFAE,EAAO,GACP7gB,EAAIohB,EAAWjhB,OACPH,MACD8H,EAAOsZ,EAAWphB,KAEvB6gB,EAAK9b,KAAOoc,EAAUnhB,GAAK8H,GAG7B6Y,EAAY,KAAOS,EAAa,GAAKP,EAAM/C,GAK5C,IADA9d,EAAIohB,EAAWjhB,OACPH,MACD8H,EAAOsZ,EAAWphB,MACtB6gB,EAAOF,EAAa/b,EAASkT,EAAMhQ,GAASgZ,EAAO9gB,KAAO,IAE3D8X,EAAK+I,KAAUtN,EAAQsN,GAAQ/Y,UAOlCsZ,EAAad,GACZc,IAAe7N,EACd6N,EAAWhX,OAAQ4W,EAAaI,EAAWjhB,QAC3CihB,GAEGT,EACJA,EAAY,KAAMpN,EAAS6N,EAAYtD,GAEvC/Y,EAAKnF,MAAO2T,EAAS6N,MAMzB,SAASC,GAAmBxB,GAwB3B,IAvBA,IAAIyB,EAAc9C,EAAS5M,EAC1BhG,EAAMiU,EAAO1f,OACbohB,EAAkBhN,EAAK0I,SAAU4C,EAAO,GAAGxX,MAC3CmZ,EAAmBD,GAAmBhN,EAAK0I,SAAS,KACpDjd,EAAIuhB,EAAkB,EAAI,EAG1BE,EAAe3B,IAAe,SAAUhY,GACvC,OAAOA,IAASwZ,IACdE,GAAkB,GACrBE,EAAkB5B,IAAe,SAAUhY,GAC1C,OAAOlD,EAAS0c,EAAcxZ,IAAU,IACtC0Z,GAAkB,GACrBnB,EAAW,CAAE,SAAUvY,EAAM6E,EAASmR,GACrC,IAAIvM,GAASgQ,IAAqBzD,GAAOnR,IAAYiI,MACnD0M,EAAe3U,GAASjB,SACxB+V,EAAc3Z,EAAM6E,EAASmR,GAC7B4D,EAAiB5Z,EAAM6E,EAASmR,IAGlC,OADAwD,EAAe,KACR/P,IAGDvR,EAAI4L,EAAK5L,IAChB,GAAMwe,EAAUjK,EAAK0I,SAAU4C,EAAO7f,GAAGqI,MACxCgY,EAAW,CAAEP,GAAcM,GAAgBC,GAAY7B,QACjD,CAIN,IAHAA,EAAUjK,EAAKnR,OAAQyc,EAAO7f,GAAGqI,MAAOzI,MAAO,KAAMigB,EAAO7f,GAAG6T,UAGjDvB,GAAY,CAGzB,IADAV,IAAM5R,EACE4R,EAAIhG,IACN2I,EAAK0I,SAAU4C,EAAOjO,GAAGvJ,MADduJ,KAKjB,OAAO6O,GACNzgB,EAAI,GAAKogB,GAAgBC,GACzBrgB,EAAI,GAAK6Y,GAERgH,EAAOvb,MAAO,EAAGtE,EAAI,GAAI+D,OAAO,CAAEiQ,MAAgC,MAAzB6L,EAAQ7f,EAAI,GAAIqI,KAAe,IAAM,MAC7EI,QAASkI,EAAO,MAClB6N,EACAxe,EAAI4R,GAAKyP,GAAmBxB,EAAOvb,MAAOtE,EAAG4R,IAC7CA,EAAIhG,GAAOyV,GAAoBxB,EAASA,EAAOvb,MAAOsN,IACtDA,EAAIhG,GAAOiN,GAAYgH,IAGzBQ,EAAStb,KAAMyZ,GAIjB,OAAO4B,GAAgBC,GAkRxB,OAvlBAhC,GAAWvb,UAAYyR,EAAKoN,QAAUpN,EAAK8B,QAC3C9B,EAAK8J,WAAa,IAAIA,GAEtB3J,EAAWJ,GAAOI,SAAW,SAAUtS,EAAUwf,GAChD,IAAIrD,EAASpb,EAAO0c,EAAQxX,EAC3BwZ,EAAO9J,EAAQ+J,EACfC,EAASpM,EAAYvT,EAAW,KAEjC,GAAK2f,EACJ,OAAOH,EAAY,EAAIG,EAAOzd,MAAO,GAOtC,IAJAud,EAAQzf,EACR2V,EAAS,GACT+J,EAAavN,EAAK4I,UAEV0E,GAAQ,CAyBf,IAAMxZ,KAtBAkW,KAAYpb,EAAQoT,EAAO8B,KAAMwJ,MACjC1e,IAEJ0e,EAAQA,EAAMvd,MAAOnB,EAAM,GAAGhD,SAAY0hB,GAE3C9J,EAAOhT,KAAO8a,EAAS,KAGxBtB,GAAU,GAGJpb,EAAQqT,EAAa6B,KAAMwJ,MAChCtD,EAAUpb,EAAMiW,QAChByG,EAAO9a,KAAK,CACXiP,MAAOuK,EAEPlW,KAAMlF,EAAM,GAAGsF,QAASkI,EAAO,OAEhCkR,EAAQA,EAAMvd,MAAOia,EAAQpe,SAIhBoU,EAAKnR,SACZD,EAAQyT,EAAWvO,GAAOgQ,KAAMwJ,KAAcC,EAAYzZ,MAC9DlF,EAAQ2e,EAAYzZ,GAAQlF,MAC7Bob,EAAUpb,EAAMiW,QAChByG,EAAO9a,KAAK,CACXiP,MAAOuK,EACPlW,KAAMA,EACNwL,QAAS1Q,IAEV0e,EAAQA,EAAMvd,MAAOia,EAAQpe,SAI/B,IAAMoe,EACL,MAOF,OAAOqD,EACNC,EAAM1hB,OACN0hB,EACCvN,GAAO3O,MAAOvD,GAEduT,EAAYvT,EAAU2V,GAASzT,MAAO,IAwWzCqQ,EAAUL,GAAOK,QAAU,SAAUvS,EAAUe,GAC9C,IAAInD,EACHgiB,EAAc,GACdC,EAAkB,GAClBF,EAASnM,EAAexT,EAAW,KAEpC,IAAM2f,EAAS,CAMd,IAJM5e,IACLA,EAAQuR,EAAUtS,IAEnBpC,EAAImD,EAAMhD,OACFH,MACP+hB,EAASV,GAAmBle,EAAMnD,KACrBsS,GACZ0P,EAAYjd,KAAMgd,GAElBE,EAAgBld,KAAMgd,GAKxBA,EAASnM,EAAexT,EAzH1B,SAAmC6f,EAAiBD,GACnD,IAAIE,EAAQF,EAAY7hB,OAAS,EAChCgiB,EAAYF,EAAgB9hB,OAAS,EACrCiiB,EAAe,SAAUtK,EAAMnL,EAASmR,EAAKvK,EAAS8O,GACrD,IAAIva,EAAM8J,EAAG4M,EACZ8D,EAAe,EACftiB,EAAI,IACJye,EAAY3G,GAAQ,GACpByK,EAAa,GACbC,EAAgB5N,EAEhBtD,EAAQwG,GAAQqK,GAAa5N,EAAK5N,KAAU,IAAG,IAAK0b,GAEpDI,EAAiBlN,GAA4B,MAAjBiN,EAAwB,EAAIjQ,KAAKC,UAAY,GACzE5G,EAAM0F,EAAMnR,OAUb,IARKkiB,IACJzN,EAAmBjI,IAAYqI,GAAYrI,GAOpC3M,IAAM4L,GAA4B,OAApB9D,EAAOwJ,EAAMtR,IAAaA,IAAM,CACrD,GAAKmiB,GAAara,EAAO,CAExB,IADA8J,EAAI,EACK4M,EAAUyD,EAAgBrQ,MAClC,GAAK4M,EAAS1W,EAAM6E,EAASmR,GAAQ,CACpCvK,EAAQxO,KAAM+C,GACd,MAGGua,IACJ9M,EAAUkN,GAKPP,KAEEpa,GAAQ0W,GAAW1W,IACxBwa,IAIIxK,GACJ2G,EAAU1Z,KAAM+C,IAOnB,GADAwa,GAAgBtiB,EACXkiB,GAASliB,IAAMsiB,EAAe,CAElC,IADA1Q,EAAI,EACK4M,EAAUwD,EAAYpQ,MAC9B4M,EAASC,EAAW8D,EAAY5V,EAASmR,GAG1C,GAAKhG,EAAO,CAEX,GAAKwK,EAAe,EACnB,KAAQtiB,KACAye,EAAUze,IAAMuiB,EAAWviB,KACjCuiB,EAAWviB,GAAKmI,EAAIrJ,KAAMyU,IAM7BgP,EAAajC,GAAUiC,GAIxBxd,EAAKnF,MAAO2T,EAASgP,GAGhBF,IAAcvK,GAAQyK,EAAWpiB,OAAS,GAC5CmiB,EAAeN,EAAY7hB,OAAW,GAExCmU,GAAOkI,WAAYjJ,GAUrB,OALK8O,IACJ9M,EAAUkN,EACV7N,EAAmB4N,GAGb/D,GAGT,OAAOyD,EACN7I,GAAc+I,GACdA,EAyBkCM,CAA0BT,EAAiBD,IAG7ED,EAAO3f,SAAWA,EAEnB,OAAO2f,GAYRnS,EAAS0E,GAAO1E,OAAS,SAAUxN,EAAUuK,EAAS4G,EAASuE,GAC9D,IAAI9X,EAAG6f,EAAQ8C,EAAOta,EAAM1B,EAC3Bic,EAA+B,mBAAbxgB,GAA2BA,EAC7Ce,GAAS2U,GAAQpD,EAAWtS,EAAWwgB,EAASxgB,UAAYA,GAK7D,GAHAmR,EAAUA,GAAW,GAGC,IAAjBpQ,EAAMhD,OAAe,CAIzB,IADA0f,EAAS1c,EAAM,GAAKA,EAAM,GAAGmB,MAAO,IACxBnE,OAAS,GAAkC,QAA5BwiB,EAAQ9C,EAAO,IAAIxX,MAC5CkI,EAAQyK,SAAgC,IAArBrO,EAAQjB,UAAkBwJ,GAC7CX,EAAK0I,SAAU4C,EAAO,GAAGxX,MAAS,CAGnC,KADAsE,GAAY4H,EAAK5N,KAAS,GAAGgc,EAAM9O,QAAQ,GAAGpL,QAAQ0O,GAAWC,IAAYzK,IAAa,IAAK,IAE9F,OAAO4G,EAGIqP,IACXjW,EAAUA,EAAQ4L,YAGnBnW,EAAWA,EAASkC,MAAOub,EAAOzG,QAAQpF,MAAM7T,QAKjD,IADAH,EAAI4W,EAAwB,aAAErO,KAAMnG,GAAa,EAAIyd,EAAO1f,OACpDH,MACP2iB,EAAQ9C,EAAO7f,IAGVuU,EAAK0I,SAAW5U,EAAOsa,EAAMta,QAGlC,IAAM1B,EAAO4N,EAAK5N,KAAM0B,MAEjByP,EAAOnR,EACZgc,EAAM9O,QAAQ,GAAGpL,QAAS0O,GAAWC,IACrCH,GAAS1O,KAAMsX,EAAO,GAAGxX,OAAUyQ,GAAanM,EAAQ4L,aAAgB5L,IACpE,CAKJ,GAFAkT,EAAOzV,OAAQpK,EAAG,KAClBoC,EAAW0V,EAAK3X,QAAU0Y,GAAYgH,IAGrC,OADA9a,EAAKnF,MAAO2T,EAASuE,GACdvE,EAGR,OAeJ,OAPEqP,GAAYjO,EAASvS,EAAUe,IAChC2U,EACAnL,GACCuI,EACD3B,EACA0D,GAAS1O,KAAMnG,IAAc0W,GAAanM,EAAQ4L,aAAgB5L,GAE5D4G,GAMRhD,EAAQoM,WAAarK,EAAQnR,MAAM,IAAI0Q,KAAMgE,GAAYvS,KAAK,MAAQgP,EAItE/B,EAAQmM,mBAAqB5H,EAG7BC,IAIAxE,EAAQ0L,aAAe3C,IAAO,SAAUuJ,GAEvC,OAAuE,EAAhEA,EAAKhH,wBAAyB7G,EAASwE,cAAc,WAMvDF,IAAO,SAAUC,GAEtB,OADAA,EAAI8B,UAAY,mBAC+B,MAAxC9B,EAAIsD,WAAWlE,aAAa,YAEnCe,GAAW,0BAA0B,SAAU5R,EAAM7E,EAAMwR,GAC1D,IAAMA,EACL,OAAO3M,EAAK6Q,aAAc1V,EAA6B,SAAvBA,EAAK6F,cAA2B,EAAI,MAOjEyH,EAAQT,YAAewJ,IAAO,SAAUC,GAG7C,OAFAA,EAAI8B,UAAY,WAChB9B,EAAIsD,WAAWjE,aAAc,QAAS,IACY,KAA3CW,EAAIsD,WAAWlE,aAAc,aAEpCe,GAAW,SAAS,SAAU5R,EAAM7E,EAAMwR,GACzC,IAAMA,GAAyC,UAAhC3M,EAAKsL,SAAStK,cAC5B,OAAOhB,EAAKgb,gBAOTxJ,IAAO,SAAUC,GACtB,OAAuC,MAAhCA,EAAIZ,aAAa,gBAExBe,GAAWzD,GAAU,SAAUnO,EAAM7E,EAAMwR,GAC1C,IAAI6H,EACJ,IAAM7H,EACL,OAAwB,IAAjB3M,EAAM7E,GAAkBA,EAAK6F,eACjCwT,EAAMxU,EAAKqT,iBAAkBlY,KAAWqZ,EAAIC,UAC7CD,EAAItI,MACL,QAKGM,GA7/DP,CA+/DInP,GAIJsL,EAAO9J,KAAO2N,EACd7D,EAAOnI,KAAOgM,EAAOyI,UACrBtM,EAAOnI,KAAK,KAAOmI,EAAOnI,KAAK+N,QAC/B5F,EAAOsS,OAASzO,EAAOkI,WACvB/L,EAAO4C,KAAOiB,EAAOE,QACrB/D,EAAOuS,SAAW1O,EAAOG,MACzBhE,EAAO4E,SAAWf,EAAOe,SAIzB,IAAI4N,EAAgBxS,EAAOnI,KAAKnF,MAAM+f,aAElCC,EAAa,6BAIbC,EAAY,iBAGhB,SAASC,EAAQhH,EAAUiH,EAAWC,GACrC,GAAK9S,EAAO0B,WAAYmR,GACvB,OAAO7S,EAAOkD,KAAM0I,GAAU,SAAUvU,EAAM9H,GAE7C,QAASsjB,EAAUxkB,KAAMgJ,EAAM9H,EAAG8H,KAAWyb,KAK/C,GAAKD,EAAU5X,SACd,OAAO+E,EAAOkD,KAAM0I,GAAU,SAAUvU,GACvC,OAASA,IAASwb,IAAgBC,KAKpC,GAA0B,iBAAdD,EAAyB,CACpC,GAAKF,EAAU7a,KAAM+a,GACpB,OAAO7S,EAAOrN,OAAQkgB,EAAWjH,EAAUkH,GAG5CD,EAAY7S,EAAOrN,OAAQkgB,EAAWjH,GAGvC,OAAO5L,EAAOkD,KAAM0I,GAAU,SAAUvU,GACvC,OAAS2I,EAAO+C,QAAS1L,EAAMwb,IAAe,IAAQC,KAIxD9S,EAAOrN,OAAS,SAAUkF,EAAMgJ,EAAOiS,GACtC,IAAIzb,EAAOwJ,EAAO,GAMlB,OAJKiS,IACJjb,EAAO,QAAUA,EAAO,KAGD,IAAjBgJ,EAAMnR,QAAkC,IAAlB2H,EAAK4D,SACjC+E,EAAO9J,KAAK4U,gBAAiBzT,EAAMQ,GAAS,CAAER,GAAS,GACvD2I,EAAO9J,KAAKkN,QAASvL,EAAMmI,EAAOkD,KAAMrC,GAAO,SAAUxJ,GACxD,OAAyB,IAAlBA,EAAK4D,cAIf+E,EAAOvP,GAAG4K,OAAO,CAChBnF,KAAM,SAAUvE,GACf,IAAIpC,EACHuR,EAAM,GACNiS,EAAOrlB,KACPyN,EAAM4X,EAAKrjB,OAEZ,GAAyB,iBAAbiC,EACX,OAAOjE,KAAKkT,UAAWZ,EAAQrO,GAAWgB,QAAO,WAChD,IAAMpD,EAAI,EAAGA,EAAI4L,EAAK5L,IACrB,GAAKyQ,EAAO4E,SAAUmO,EAAMxjB,GAAK7B,MAChC,OAAO,MAMX,IAAM6B,EAAI,EAAGA,EAAI4L,EAAK5L,IACrByQ,EAAO9J,KAAMvE,EAAUohB,EAAMxjB,GAAKuR,GAMnC,OAFAA,EAAMpT,KAAKkT,UAAWzF,EAAM,EAAI6E,EAAOsS,OAAQxR,GAAQA,IACnDnP,SAAWjE,KAAKiE,SAAWjE,KAAKiE,SAAW,IAAMA,EAAWA,EACzDmP,GAERnO,OAAQ,SAAUhB,GACjB,OAAOjE,KAAKkT,UAAWgS,EAAOllB,KAAMiE,GAAY,IAAI,KAErDmhB,IAAK,SAAUnhB,GACd,OAAOjE,KAAKkT,UAAWgS,EAAOllB,KAAMiE,GAAY,IAAI,KAErDqhB,GAAI,SAAUrhB,GACb,QAASihB,EACRllB,KAIoB,iBAAbiE,GAAyB6gB,EAAc1a,KAAMnG,GACnDqO,EAAQrO,GACRA,GAAY,IACb,GACCjC,UASJ,IAAIujB,EAGH1O,EAAW7P,EAAO6P,SAKlBgC,EAAa,uCAENvG,EAAOvP,GAAGwP,KAAO,SAAUtO,EAAUuK,GAC3C,IAAIxJ,EAAO2E,EAGX,IAAM1F,EACL,OAAOjE,KAIR,GAAyB,iBAAbiE,EAAwB,CAUnC,KAPCe,EAF2B,MAAvBf,EAASuhB,OAAO,IAAyD,MAA3CvhB,EAASuhB,OAAQvhB,EAASjC,OAAS,IAAeiC,EAASjC,QAAU,EAE/F,CAAE,KAAMiC,EAAU,MAGlB4U,EAAWqB,KAAMjW,MAIXe,EAAM,IAAOwJ,EAsDrB,OAAMA,GAAWA,EAAQsD,QACtBtD,GAAW+W,GAAa/c,KAAMvE,GAKhCjE,KAAK+F,YAAayI,GAAUhG,KAAMvE,GAzDzC,GAAKe,EAAM,GAAK,CAYf,GAXAwJ,EAAUA,aAAmB8D,EAAS9D,EAAQ,GAAKA,EAInD8D,EAAOlO,MAAOpE,KAAMsS,EAAOmT,UAC1BzgB,EAAM,GACNwJ,GAAWA,EAAQjB,SAAWiB,EAAQyL,eAAiBzL,EAAUqI,GACjE,IAIImO,EAAW5a,KAAMpF,EAAM,KAAQsN,EAAO2B,cAAezF,GACzD,IAAMxJ,KAASwJ,EAET8D,EAAO0B,WAAYhU,KAAMgF,IAC7BhF,KAAMgF,GAASwJ,EAASxJ,IAIxBhF,KAAKsQ,KAAMtL,EAAOwJ,EAASxJ,IAK9B,OAAOhF,KAQP,IAJA2J,EAAOkN,EAASsD,eAAgBnV,EAAM,MAIzB2E,EAAKyQ,WAAa,CAG9B,GAAKzQ,EAAKlJ,KAAOuE,EAAM,GACtB,OAAOugB,EAAW/c,KAAMvE,GAIzBjE,KAAKgC,OAAS,EACdhC,KAAK,GAAK2J,EAKX,OAFA3J,KAAKwO,QAAUqI,EACf7W,KAAKiE,SAAWA,EACTjE,KAcH,OAAKiE,EAASsJ,UACpBvN,KAAKwO,QAAUxO,KAAK,GAAKiE,EACzBjE,KAAKgC,OAAS,EACPhC,MAIIsS,EAAO0B,WAAY/P,QACK,IAArBshB,EAAWG,MACxBH,EAAWG,MAAOzhB,GAElBA,EAAUqO,SAGerR,IAAtBgD,EAASA,WACbjE,KAAKiE,SAAWA,EAASA,SACzBjE,KAAKwO,QAAUvK,EAASuK,SAGlB8D,EAAO6C,UAAWlR,EAAUjE,SAIhC2E,UAAY2N,EAAOvP,GAGxBwiB,EAAajT,EAAQuE,GAGrB,IAAI8O,EAAe,iCAElBC,EAAmB,CAClBC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,MAAM,GA4GR,SAASC,EAAStK,EAAKoD,GACtB,GACCpD,EAAMA,EAAKoD,SACFpD,GAAwB,IAAjBA,EAAIpO,UAErB,OAAOoO,EA9GRrJ,EAAO3E,OAAO,CACboR,IAAK,SAAUpV,EAAMoV,EAAKmH,GAIzB,IAHA,IAAI9F,EAAU,GACbzE,EAAMhS,EAAMoV,GAELpD,GAAwB,IAAjBA,EAAIpO,gBAA6BtM,IAAVilB,GAAwC,IAAjBvK,EAAIpO,WAAmB+E,EAAQqJ,GAAM2J,GAAIY,KAC/E,IAAjBvK,EAAIpO,UACR6S,EAAQxZ,KAAM+U,GAEfA,EAAMA,EAAIoD,GAEX,OAAOqB,GAGR6F,QAAS,SAAUE,EAAGxc,GAGrB,IAFA,IAAI6H,EAAI,GAEA2U,EAAGA,EAAIA,EAAErK,YACI,IAAfqK,EAAE5Y,UAAkB4Y,IAAMxc,GAC9B6H,EAAE5K,KAAMuf,GAIV,OAAO3U,KAITc,EAAOvP,GAAG4K,OAAO,CAChByY,IAAK,SAAUxmB,GACd,IAAIiC,EACHwkB,EAAU/T,EAAQ1S,EAAQI,MAC1ByN,EAAM4Y,EAAQrkB,OAEf,OAAOhC,KAAKiF,QAAO,WAClB,IAAMpD,EAAI,EAAGA,EAAI4L,EAAK5L,IACrB,GAAKyQ,EAAO4E,SAAUlX,KAAMqmB,EAAQxkB,IACnC,OAAO,MAMX0N,QAAS,SAAUqP,EAAWpQ,GAS7B,IARA,IAAImN,EACH9Z,EAAI,EACJC,EAAI9B,KAAKgC,OACToe,EAAU,GACVkG,EAAMxB,EAAc1a,KAAMwU,IAAoC,iBAAdA,EAC/CtM,EAAQsM,EAAWpQ,GAAWxO,KAAKwO,SACnC,EAEM3M,EAAIC,EAAGD,IACd,IAAM8Z,EAAM3b,KAAK6B,GAAI8Z,GAAOA,IAAQnN,EAASmN,EAAMA,EAAIvB,WAEtD,GAAKuB,EAAIpO,SAAW,KAAO+Y,EAC1BA,EAAI9Z,MAAMmP,IAAQ,EAGD,IAAjBA,EAAIpO,UACH+E,EAAO9J,KAAK4U,gBAAgBzB,EAAKiD,IAAc,CAEhDwB,EAAQxZ,KAAM+U,GACd,MAKH,OAAO3b,KAAKkT,UAAWkN,EAAQpe,OAAS,EAAIsQ,EAAOsS,OAAQxE,GAAYA,IAKxE5T,MAAO,SAAU7C,GAGhB,OAAMA,EAKe,iBAATA,EACJ2I,EAAO+C,QAASrV,KAAK,GAAIsS,EAAQ3I,IAIlC2I,EAAO+C,QAEb1L,EAAKmI,OAASnI,EAAK,GAAKA,EAAM3J,MAXrBA,KAAK,IAAMA,KAAK,GAAGoa,WAAepa,KAAKsT,QAAQiT,UAAUvkB,QAAU,GAc9EwkB,IAAK,SAAUviB,EAAUuK,GACxB,OAAOxO,KAAKkT,UACXZ,EAAOsS,OACNtS,EAAOlO,MAAOpE,KAAKiT,MAAOX,EAAQrO,EAAUuK,OAK/CiY,QAAS,SAAUxiB,GAClB,OAAOjE,KAAKwmB,IAAiB,MAAZviB,EAChBjE,KAAKqT,WAAarT,KAAKqT,WAAWpO,OAAOhB,OAa5CqO,EAAOjO,KAAK,CACXpE,OAAQ,SAAU0J,GACjB,IAAI1J,EAAS0J,EAAKyQ,WAClB,OAAOna,GAA8B,KAApBA,EAAOsN,SAAkBtN,EAAS,MAEpDymB,QAAS,SAAU/c,GAClB,OAAO2I,EAAOyM,IAAKpV,EAAM,eAE1Bgd,aAAc,SAAUhd,EAAM9H,EAAGqkB,GAChC,OAAO5T,EAAOyM,IAAKpV,EAAM,aAAcuc,IAExCH,KAAM,SAAUpc,GACf,OAAOsc,EAAStc,EAAM,gBAEvBqc,KAAM,SAAUrc,GACf,OAAOsc,EAAStc,EAAM,oBAEvBid,QAAS,SAAUjd,GAClB,OAAO2I,EAAOyM,IAAKpV,EAAM,gBAE1B4c,QAAS,SAAU5c,GAClB,OAAO2I,EAAOyM,IAAKpV,EAAM,oBAE1Bkd,UAAW,SAAUld,EAAM9H,EAAGqkB,GAC7B,OAAO5T,EAAOyM,IAAKpV,EAAM,cAAeuc,IAEzCY,UAAW,SAAUnd,EAAM9H,EAAGqkB,GAC7B,OAAO5T,EAAOyM,IAAKpV,EAAM,kBAAmBuc,IAE7Ca,SAAU,SAAUpd,GACnB,OAAO2I,EAAO2T,SAAWtc,EAAKyQ,YAAc,IAAKsE,WAAY/U,IAE9Dkc,SAAU,SAAUlc,GACnB,OAAO2I,EAAO2T,QAAStc,EAAK+U,aAE7BoH,SAAU,SAAUnc,GACnB,OAAO2I,EAAO2C,SAAUtL,EAAM,UAC7BA,EAAKqd,iBAAmBrd,EAAKsd,cAAcpQ,SAC3CvE,EAAOlO,MAAO,GAAIuF,EAAK8P,eAEvB,SAAU3U,EAAM/B,GAClBuP,EAAOvP,GAAI+B,GAAS,SAAUohB,EAAOjiB,GACpC,IAAImP,EAAMd,EAAO1N,IAAK5E,KAAM+C,EAAImjB,GAsBhC,MApB0B,UAArBphB,EAAKqB,OAAQ,KACjBlC,EAAWiiB,GAGPjiB,GAAgC,iBAAbA,IACvBmP,EAAMd,EAAOrN,OAAQhB,EAAUmP,IAG3BpT,KAAKgC,OAAS,IAEZ4jB,EAAkB9gB,KACvBsO,EAAMd,EAAOsS,OAAQxR,IAIjBuS,EAAavb,KAAMtF,KACvBsO,EAAMA,EAAI8T,YAILlnB,KAAKkT,UAAWE,OAGzB,IA2VI+T,EA3VAC,EAAY,OAKZC,EAAe,GAmZnB,SAASC,IACHzQ,EAAS4F,kBACb5F,EAAS0Q,oBAAqB,mBAAoBC,GAAW,GAC7DxgB,EAAOugB,oBAAqB,OAAQC,GAAW,KAG/C3Q,EAAS4Q,YAAa,qBAAsBD,GAC5CxgB,EAAOygB,YAAa,SAAUD,IAOhC,SAASA,KAEH3Q,EAAS4F,kBAAmC,SAAfrQ,MAAMlC,MAA2C,aAAxB2M,EAAS6Q,cACnEJ,IACAhV,EAAOoT,SApYTpT,EAAOqV,UAAY,SAAUxjB,GAI5BA,EAA6B,iBAAZA,EACdkjB,EAAcljB,IAnClB,SAAwBA,GACvB,IAAIyjB,EAASP,EAAcljB,GAAY,GAIvC,OAHAmO,EAAOjO,KAAMF,EAAQa,MAAOoiB,IAAe,IAAI,SAAUlO,EAAG2O,GAC3DD,EAAQC,IAAS,KAEXD,EA8BuBE,CAAe3jB,GAC5CmO,EAAO3E,OAAQ,GAAIxJ,GAEpB,IACC4jB,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAvQ,EAAO,GAEPwQ,GAASlkB,EAAQuL,MAAQ,GAEzB4Y,EAAO,SAAUjZ,GAOhB,IANA2Y,EAAS7jB,EAAQ6jB,QAAU3Y,EAC3B4Y,GAAQ,EACRE,EAAcC,GAAe,EAC7BA,EAAc,EACdF,EAAerQ,EAAK7V,OACpB+lB,GAAS,EACDlQ,GAAQsQ,EAAcD,EAAcC,IAC3C,IAA2D,IAAtDtQ,EAAMsQ,GAAc1mB,MAAO4N,EAAM,GAAKA,EAAM,KAAmBlL,EAAQokB,YAAc,CACzFP,GAAS,EACT,MAGFD,GAAS,EACJlQ,IACCwQ,EACCA,EAAMrmB,QACVsmB,EAAMD,EAAMpN,SAEF+M,EACXnQ,EAAO,GAEPwN,EAAKmD,YAKRnD,EAAO,CAENmB,IAAK,WACJ,GAAK3O,EAAO,CAEX,IAAIiI,EAAQjI,EAAK7V,QACjB,SAAUwkB,EAAKvkB,GACdqQ,EAAOjO,KAAMpC,GAAM,SAAUiX,EAAGtD,GAC/B,IAAI1L,EAAOoI,EAAOpI,KAAM0L,GACV,aAAT1L,EACE/F,EAAQygB,QAAWS,EAAKe,IAAKxQ,IAClCiC,EAAKjR,KAAMgP,GAEDA,GAAOA,EAAI5T,QAAmB,WAATkI,GAEhCsc,EAAK5Q,MATR,CAYI7T,WAGCgmB,EACJG,EAAerQ,EAAK7V,OAGTgmB,IACXI,EAActI,EACdwI,EAAMN,IAGR,OAAOhoB,MAGRyoB,OAAQ,WAkBP,OAjBK5Q,GACJvF,EAAOjO,KAAMtC,WAAW,SAAUmX,EAAGtD,GAEpC,IADA,IAAIpJ,GACMA,EAAQ8F,EAAO+C,QAASO,EAAKiC,EAAMrL,KAAa,GACzDqL,EAAK5L,OAAQO,EAAO,GAEfub,IACCvb,GAAS0b,GACbA,IAEI1b,GAAS2b,GACbA,QAMEnoB,MAIRomB,IAAK,SAAUrjB,GACd,OAAOA,EAAKuP,EAAO+C,QAAStS,EAAI8U,IAAU,KAAQA,IAAQA,EAAK7V,SAGhE0mB,MAAO,WAGN,OAFA7Q,EAAO,GACPqQ,EAAe,EACRloB,MAGRwoB,QAAS,WAER,OADA3Q,EAAOwQ,EAAQL,OAAS/mB,EACjBjB,MAGRghB,SAAU,WACT,OAAQnJ,GAGT8Q,KAAM,WAKL,OAJAN,OAAQpnB,EACF+mB,GACL3C,EAAKmD,UAECxoB,MAGR4oB,OAAQ,WACP,OAAQP,GAGTQ,SAAU,SAAUra,EAASvM,GAU5B,OATK4V,GAAWoQ,IAASI,IAExBpmB,EAAO,CAAEuM,GADTvM,EAAOA,GAAQ,IACQkE,MAAQlE,EAAKkE,QAAUlE,GACzC8lB,EACJM,EAAMzhB,KAAM3E,GAEZqmB,EAAMrmB,IAGDjC,MAGRsoB,KAAM,WAEL,OADAjD,EAAKwD,SAAU7oB,KAAM+B,WACd/B,MAGRioB,MAAO,WACN,QAASA,IAIZ,OAAO5C,GAIR/S,EAAO3E,OAAO,CAEbmb,SAAU,SAAU1a,GACnB,IAAI2a,EAAS,CAEX,CAAE,UAAW,OAAQzW,EAAOqV,UAAU,eAAgB,YACtD,CAAE,SAAU,OAAQrV,EAAOqV,UAAU,eAAgB,YACrD,CAAE,SAAU,WAAYrV,EAAOqV,UAAU,YAE1CqB,EAAQ,UACRC,EAAU,CACTD,MAAO,WACN,OAAOA,GAERE,OAAQ,WAEP,OADAC,EAAS9R,KAAMtV,WAAYqnB,KAAMrnB,WAC1B/B,MAERqpB,KAAM,WACL,IAAIC,EAAMvnB,UACV,OAAOuQ,EAAOwW,UAAS,SAAUS,GAChCjX,EAAOjO,KAAM0kB,GAAQ,SAAUlnB,EAAG2nB,GACjC,IAAIzmB,EAAKuP,EAAO0B,WAAYsV,EAAKznB,KAASynB,EAAKznB,GAE/CsnB,EAAUK,EAAM,KAAK,WACpB,IAAIC,EAAW1mB,GAAMA,EAAGtB,MAAOzB,KAAM+B,WAChC0nB,GAAYnX,EAAO0B,WAAYyV,EAASR,SAC5CQ,EAASR,UACP5R,KAAMkS,EAASG,SACfN,KAAMG,EAASI,QACfC,SAAUL,EAASM,QAErBN,EAAUC,EAAO,GAAM,QAAUxpB,OAASipB,EAAUM,EAASN,UAAYjpB,KAAM+C,EAAK,CAAE0mB,GAAa1nB,iBAItGunB,EAAM,QACJL,WAIJA,QAAS,SAAU3mB,GAClB,OAAc,MAAPA,EAAcgQ,EAAO3E,OAAQrL,EAAK2mB,GAAYA,IAGvDE,EAAW,GAwCZ,OArCAF,EAAQa,KAAOb,EAAQI,KAGvB/W,EAAOjO,KAAM0kB,GAAQ,SAAUlnB,EAAG2nB,GACjC,IAAI3R,EAAO2R,EAAO,GACjBO,EAAcP,EAAO,GAGtBP,EAASO,EAAM,IAAO3R,EAAK2O,IAGtBuD,GACJlS,EAAK2O,KAAI,WAERwC,EAAQe,IAGNhB,EAAY,EAAJlnB,GAAS,GAAI2mB,QAASO,EAAQ,GAAK,GAAIJ,MAInDQ,EAAUK,EAAM,IAAO,WAEtB,OADAL,EAAUK,EAAM,GAAK,QAAUxpB,OAASmpB,EAAWF,EAAUjpB,KAAM+B,WAC5D/B,MAERmpB,EAAUK,EAAM,GAAK,QAAW3R,EAAKgR,YAItCI,EAAQA,QAASE,GAGZ/a,GACJA,EAAKzN,KAAMwoB,EAAUA,GAIfA,GAIRa,KAAM,SAAUC,GACf,IAwBCC,EAAgBC,EAAkBC,EAxB/BvoB,EAAI,EACPwoB,EAAgBlkB,EAAMxF,KAAMoB,WAC5BC,EAASqoB,EAAcroB,OAGvBsoB,EAAuB,IAAXtoB,GAAkBioB,GAAe3X,EAAO0B,WAAYiW,EAAYhB,SAAcjnB,EAAS,EAGnGmnB,EAAyB,IAAdmB,EAAkBL,EAAc3X,EAAOwW,WAGlDyB,EAAa,SAAU1oB,EAAGihB,EAAU0H,GACnC,OAAO,SAAU3U,GAChBiN,EAAUjhB,GAAM7B,KAChBwqB,EAAQ3oB,GAAME,UAAUC,OAAS,EAAImE,EAAMxF,KAAMoB,WAAc8T,EAC1D2U,IAAWN,EACff,EAASsB,WAAY3H,EAAU0H,KAEhBF,GACfnB,EAASuB,YAAa5H,EAAU0H,KAQpC,GAAKxoB,EAAS,EAIb,IAHAkoB,EAAiB,IAAIhoB,MAAOF,GAC5BmoB,EAAmB,IAAIjoB,MAAOF,GAC9BooB,EAAkB,IAAIloB,MAAOF,GACrBH,EAAIG,EAAQH,IACdwoB,EAAexoB,IAAOyQ,EAAO0B,WAAYqW,EAAexoB,GAAIonB,SAChEoB,EAAexoB,GAAIonB,UACjB5R,KAAMkT,EAAY1oB,EAAGuoB,EAAiBC,IACtCjB,KAAMD,EAASQ,QACfC,SAAUW,EAAY1oB,EAAGsoB,EAAkBD,MAE3CI,EAUL,OAJMA,GACLnB,EAASuB,YAAaN,EAAiBC,GAGjClB,EAASF,aAQlB3W,EAAOvP,GAAG2iB,MAAQ,SAAU3iB,GAI3B,OAFAuP,EAAOoT,MAAMuD,UAAU5R,KAAMtU,GAEtB/C,MAGRsS,EAAO3E,OAAO,CAEb2G,SAAS,EAITqW,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJvY,EAAOqY,YAEPrY,EAAOoT,OAAO,IAKhBA,MAAO,SAAUrX,GAGhB,MAAc,IAATA,IAAkBiE,EAAOqY,UAAYrY,EAAOgC,SAAjD,CAKA,IAAMuC,EAASiU,KACd,OAAOlc,WAAY0D,EAAOoT,OAI3BpT,EAAOgC,SAAU,GAGH,IAATjG,KAAmBiE,EAAOqY,UAAY,IAK3CxD,EAAUuD,YAAa7T,EAAU,CAAEvE,IAG9BA,EAAOvP,GAAGgoB,iBACdzY,EAAQuE,GAAWkU,eAAgB,SACnCzY,EAAQuE,GAAWtN,IAAK,eA8B3B+I,EAAOoT,MAAMuD,QAAU,SAAU3mB,GAChC,IAAM6kB,EAOL,GALAA,EAAY7U,EAAOwW,WAKU,aAAxBjS,EAAS6Q,WAEb9Y,WAAY0D,EAAOoT,YAGb,GAAK7O,EAAS4F,iBAEpB5F,EAAS4F,iBAAkB,mBAAoB+K,GAAW,GAG1DxgB,EAAOyV,iBAAkB,OAAQ+K,GAAW,OAGtC,CAEN3Q,EAAS6F,YAAa,qBAAsB8K,GAG5CxgB,EAAO0V,YAAa,SAAU8K,GAI9B,IAAIhL,GAAM,EAEV,IACCA,EAA6B,MAAvBxV,EAAOgkB,cAAwBnU,EAASuF,gBAC7C,MAAM5R,IAEHgS,GAAOA,EAAIyO,UACf,SAAUC,IACT,IAAM5Y,EAAOgC,QAAU,CAEtB,IAGCkI,EAAIyO,SAAS,QACZ,MAAMzgB,GACP,OAAOoE,WAAYsc,EAAe,IAInC5D,IAGAhV,EAAOoT,SAfT,GAqBH,OAAOyB,EAAU8B,QAAS3mB,IAI3B,IAMIT,EANAspB,EAAe,YAOnB,IAAMtpB,KAAKyQ,EAAQF,GAClB,MAEDA,EAAQwC,QAAgB,MAAN/S,EAIlBuQ,EAAQgZ,wBAAyB,EAGjC9Y,GAAO,WAEN,IAAI6L,EAAK/C,EAAK0P,EAAMO,GAEpBP,EAAOjU,EAASwD,qBAAsB,QAAU,KACjCyQ,EAAKQ,QAMpBlQ,EAAMvE,EAASwE,cAAe,QAC9BgQ,EAAYxU,EAASwE,cAAe,QAC1BiQ,MAAMC,QAAU,iEAC1BT,EAAKnO,YAAa0O,GAAY1O,YAAavB,UAE/BA,EAAIkQ,MAAME,OAASL,IAK9B/P,EAAIkQ,MAAMC,QAAU,gEAEpBnZ,EAAQgZ,uBAAyBjN,EAA0B,IAApB/C,EAAIqQ,YACtCtN,IAIJ2M,EAAKQ,MAAME,KAAO,IAIpBV,EAAKxP,YAAa+P,OAMnB,WACC,IAAIjQ,EAAMvE,EAASwE,cAAe,OAGlC,GAA6B,MAAzBjJ,EAAQsZ,cAAuB,CAElCtZ,EAAQsZ,eAAgB,EACxB,WACQtQ,EAAIhR,KACV,MAAOI,GACR4H,EAAQsZ,eAAgB,GAK1BtQ,EAAM,KAfP,GAsBA9I,EAAOqZ,WAAa,SAAUhiB,GAC7B,IAAIiiB,EAAStZ,EAAOsZ,QAASjiB,EAAKsL,SAAW,KAAKtK,eACjD4C,GAAY5D,EAAK4D,UAAY,EAG9B,OAAoB,IAAbA,GAA+B,IAAbA,MAIvBqe,IAAqB,IAAXA,GAAmBjiB,EAAK6Q,aAAa,aAAeoR,IAIjE,IAAIC,EAAS,gCACZC,EAAa,WAEd,SAASC,EAAUpiB,EAAMnD,EAAK6I,GAG7B,QAAcpO,IAAToO,GAAwC,IAAlB1F,EAAK4D,SAAiB,CAEhD,IAAIzI,EAAO,QAAU0B,EAAI8D,QAASwhB,EAAY,OAAQnhB,cAItD,GAAqB,iBAFrB0E,EAAO1F,EAAK6Q,aAAc1V,IAEM,CAC/B,IACCuK,EAAgB,SAATA,GACG,UAATA,IACS,SAATA,EAAkB,MAEjBA,EAAO,KAAOA,GAAQA,EACvBwc,EAAOzhB,KAAMiF,GAASiD,EAAO0Z,UAAW3c,GACxCA,GACA,MAAO7E,IAGT8H,EAAOjD,KAAM1F,EAAMnD,EAAK6I,QAGxBA,OAAOpO,EAIT,OAAOoO,EAIR,SAAS4c,EAAmB3pB,GAC3B,IAAIwC,EACJ,IAAMA,KAAQxC,EAGb,IAAc,SAATwC,IAAmBwN,EAAOqC,cAAerS,EAAIwC,MAGpC,WAATA,EACJ,OAAO,EAIT,OAAO,EAGR,SAASonB,EAAcviB,EAAM7E,EAAMuK,EAAM8c,GACxC,GAAM7Z,EAAOqZ,WAAYhiB,GAAzB,CAIA,IAAIyJ,EAAKgZ,EACRC,EAAc/Z,EAAO6B,QAIrBmY,EAAS3iB,EAAK4D,SAIdwN,EAAQuR,EAASha,EAAOyI,MAAQpR,EAIhClJ,EAAK6rB,EAAS3iB,EAAM0iB,GAAgB1iB,EAAM0iB,IAAiBA,EAI5D,GAAO5rB,GAAOsa,EAAMta,KAAS0rB,GAAQpR,EAAMta,GAAI4O,YAAmBpO,IAAToO,GAAsC,iBAATvK,EAgEtF,OA5DMrE,IAIJA,EADI6rB,EACC3iB,EAAM0iB,GAAgBpa,EAAWjI,OAASsI,EAAOwD,OAEjDuW,GAIDtR,EAAOta,KAGZsa,EAAOta,GAAO6rB,EAAS,GAAK,CAAEC,OAAQja,EAAOkC,OAKzB,iBAAT1P,GAAqC,mBAATA,IAClCqnB,EACJpR,EAAOta,GAAO6R,EAAO3E,OAAQoN,EAAOta,GAAMqE,GAE1CiW,EAAOta,GAAK4O,KAAOiD,EAAO3E,OAAQoN,EAAOta,GAAK4O,KAAMvK,IAItDsnB,EAAYrR,EAAOta,GAKb0rB,IACCC,EAAU/c,OACf+c,EAAU/c,KAAO,IAGlB+c,EAAYA,EAAU/c,WAGTpO,IAAToO,IACJ+c,EAAW9Z,EAAOyC,UAAWjQ,IAAWuK,GAKpB,iBAATvK,EAMC,OAHZsO,EAAMgZ,EAAWtnB,MAMhBsO,EAAMgZ,EAAW9Z,EAAOyC,UAAWjQ,KAGpCsO,EAAMgZ,EAGAhZ,GAGR,SAASoZ,EAAoB7iB,EAAM7E,EAAMqnB,GACxC,GAAM7Z,EAAOqZ,WAAYhiB,GAAzB,CAIA,IAAIyiB,EAAWvqB,EACdyqB,EAAS3iB,EAAK4D,SAGdwN,EAAQuR,EAASha,EAAOyI,MAAQpR,EAChClJ,EAAK6rB,EAAS3iB,EAAM2I,EAAO6B,SAAY7B,EAAO6B,QAI/C,GAAM4G,EAAOta,GAAb,CAIA,GAAKqE,IAEJsnB,EAAYD,EAAMpR,EAAOta,GAAOsa,EAAOta,GAAK4O,MAE3B,CA4BhBxN,GAHCiD,EAtBKwN,EAAO4B,QAASpP,GAsBdA,EAAKc,OAAQ0M,EAAO1N,IAAKE,EAAMwN,EAAOyC,YAnBxCjQ,KAAQsnB,IAKZtnB,EAAOwN,EAAOyC,UAAWjQ,MACZsnB,EALN,CAAEtnB,GAQDA,EAAK9B,MAAM,MAaZhB,OACT,KAAQH,YACAuqB,EAAWtnB,EAAKjD,IAKxB,GAAKsqB,GAAOF,EAAkBG,IAAc9Z,EAAOqC,cAAcyX,GAChE,QAMGD,WACEpR,EAAOta,GAAK4O,KAIb4c,EAAmBlR,EAAOta,QAM5B6rB,EACJha,EAAOma,UAAW,CAAE9iB,IAAQ,GAIjByI,EAAQsZ,eAAiB3Q,GAASA,EAAM/T,cAE5C+T,EAAOta,GAIdsa,EAAOta,GAAO,QAIhB6R,EAAO3E,OAAO,CACboN,MAAO,GAIP6Q,OAAQ,CACP,WAAW,EACX,UAAU,EAEV,UAAW,8CAGZc,QAAS,SAAU/iB,GAElB,SADAA,EAAOA,EAAK4D,SAAW+E,EAAOyI,MAAOpR,EAAK2I,EAAO6B,UAAaxK,EAAM2I,EAAO6B,YACzD8X,EAAmBtiB,IAGtC0F,KAAM,SAAU1F,EAAM7E,EAAMuK,GAC3B,OAAO6c,EAAcviB,EAAM7E,EAAMuK,IAGlCsd,WAAY,SAAUhjB,EAAM7E,GAC3B,OAAO0nB,EAAoB7iB,EAAM7E,IAIlC8nB,MAAO,SAAUjjB,EAAM7E,EAAMuK,GAC5B,OAAO6c,EAAcviB,EAAM7E,EAAMuK,GAAM,IAGxCwd,YAAa,SAAUljB,EAAM7E,GAC5B,OAAO0nB,EAAoB7iB,EAAM7E,GAAM,MAIzCwN,EAAOvP,GAAG4K,OAAO,CAChB0B,KAAM,SAAU7I,EAAKqP,GACpB,IAAIhU,EAAGiD,EAAMuK,EACZ1F,EAAO3J,KAAK,GACZmQ,EAAQxG,GAAQA,EAAKgI,WAMtB,QAAa1Q,IAARuF,EAAoB,CACxB,GAAKxG,KAAKgC,SACTqN,EAAOiD,EAAOjD,KAAM1F,GAEG,IAAlBA,EAAK4D,WAAmB+E,EAAOsa,MAAOjjB,EAAM,gBAAkB,CAElE,IADA9H,EAAIsO,EAAMnO,OACFH,KAIFsO,EAAOtO,IAEsB,KADjCiD,EAAOqL,EAAOtO,GAAIiD,MACR2B,QAAS,UAElBslB,EAAUpiB,EADV7E,EAAOwN,EAAOyC,UAAWjQ,EAAKqB,MAAM,IACdkJ,EAAMvK,IAI/BwN,EAAOsa,MAAOjjB,EAAM,eAAe,GAIrC,OAAO0F,EAIR,MAAoB,iBAAR7I,EACJxG,KAAKqE,MAAK,WAChBiO,EAAOjD,KAAMrP,KAAMwG,MAIdzE,UAAUC,OAAS,EAGzBhC,KAAKqE,MAAK,WACTiO,EAAOjD,KAAMrP,KAAMwG,EAAKqP,MAKzBlM,EAAOoiB,EAAUpiB,EAAMnD,EAAK8L,EAAOjD,KAAM1F,EAAMnD,SAAUvF,GAG3D0rB,WAAY,SAAUnmB,GACrB,OAAOxG,KAAKqE,MAAK,WAChBiO,EAAOqa,WAAY3sB,KAAMwG,SAM5B8L,EAAO3E,OAAO,CACbmf,MAAO,SAAUnjB,EAAMO,EAAMmF,GAC5B,IAAIyd,EAEJ,GAAKnjB,EAYJ,OAXAO,GAASA,GAAQ,MAAS,QAC1B4iB,EAAQxa,EAAOsa,MAAOjjB,EAAMO,GAGvBmF,KACEyd,GAASxa,EAAO4B,QAAQ7E,GAC7Byd,EAAQxa,EAAOsa,MAAOjjB,EAAMO,EAAMoI,EAAO6C,UAAU9F,IAEnDyd,EAAMlmB,KAAMyI,IAGPyd,GAAS,IAIlBC,QAAS,SAAUpjB,EAAMO,GACxBA,EAAOA,GAAQ,KAEf,IAAI4iB,EAAQxa,EAAOwa,MAAOnjB,EAAMO,GAC/B8iB,EAAcF,EAAM9qB,OACpBe,EAAK+pB,EAAM7R,QACXgS,EAAQ3a,EAAO4a,YAAavjB,EAAMO,GAMvB,eAAPnH,IACJA,EAAK+pB,EAAM7R,QACX+R,KAGIjqB,IAIU,OAATmH,GACJ4iB,EAAM9mB,QAAS,qBAITinB,EAAME,KACbpqB,EAAGpC,KAAMgJ,GApBF,WACN2I,EAAOya,QAASpjB,EAAMO,KAmBF+iB,KAGhBD,GAAeC,GACpBA,EAAMvE,MAAMJ,QAKd4E,YAAa,SAAUvjB,EAAMO,GAC5B,IAAI1D,EAAM0D,EAAO,aACjB,OAAOoI,EAAOsa,MAAOjjB,EAAMnD,IAAS8L,EAAOsa,MAAOjjB,EAAMnD,EAAK,CAC5DkiB,MAAOpW,EAAOqV,UAAU,eAAenB,KAAI,WAC1ClU,EAAOua,YAAaljB,EAAMO,EAAO,SACjCoI,EAAOua,YAAaljB,EAAMnD,WAM9B8L,EAAOvP,GAAG4K,OAAO,CAChBmf,MAAO,SAAU5iB,EAAMmF,GACtB,IAAI+d,EAAS,EAQb,MANqB,iBAATljB,IACXmF,EAAOnF,EACPA,EAAO,KACPkjB,KAGIrrB,UAAUC,OAASorB,EAChB9a,EAAOwa,MAAO9sB,KAAK,GAAIkK,QAGfjJ,IAAToO,EACNrP,KACAA,KAAKqE,MAAK,WACT,IAAIyoB,EAAQxa,EAAOwa,MAAO9sB,KAAMkK,EAAMmF,GAGtCiD,EAAO4a,YAAaltB,KAAMkK,GAEZ,OAATA,GAA8B,eAAb4iB,EAAM,IAC3Bxa,EAAOya,QAAS/sB,KAAMkK,OAI1B6iB,QAAS,SAAU7iB,GAClB,OAAOlK,KAAKqE,MAAK,WAChBiO,EAAOya,QAAS/sB,KAAMkK,OAGxBmjB,WAAY,SAAUnjB,GACrB,OAAOlK,KAAK8sB,MAAO5iB,GAAQ,KAAM,KAIlC+e,QAAS,SAAU/e,EAAM5H,GACxB,IAAI0T,EACHsX,EAAQ,EACRC,EAAQjb,EAAOwW,WACf5K,EAAWle,KACX6B,EAAI7B,KAAKgC,OACT0nB,EAAU,aACC4D,GACTC,EAAM7C,YAAaxM,EAAU,CAAEA,KAUlC,IANqB,iBAAThU,IACX5H,EAAM4H,EACNA,OAAOjJ,GAERiJ,EAAOA,GAAQ,KAEPrI,MACPmU,EAAM1D,EAAOsa,MAAO1O,EAAUrc,GAAKqI,EAAO,gBAC9B8L,EAAI0S,QACf4E,IACAtX,EAAI0S,MAAMlC,IAAKkD,IAIjB,OADAA,IACO6D,EAAMtE,QAAS3mB,MAGxB,IAAIkrB,EAAO,sCAAwCC,OAE/CC,EAAY,CAAE,MAAO,QAAS,SAAU,QAExCC,EAAW,SAAUhkB,EAAM8F,GAI7B,OADA9F,EAAO8F,GAAM9F,EAC4B,SAAlC2I,EAAOsb,IAAKjkB,EAAM,aAA2B2I,EAAO4E,SAAUvN,EAAKsQ,cAAetQ,IAOvFkkB,EAASvb,EAAOub,OAAS,SAAU1a,EAAOpQ,EAAIyD,EAAKqP,EAAOiY,EAAWC,EAAUC,GAClF,IAAInsB,EAAI,EACPG,EAASmR,EAAMnR,OACfisB,EAAc,MAAPznB,EAGR,GAA4B,WAAvB8L,EAAOpI,KAAM1D,GAEjB,IAAM3E,KADNisB,GAAY,EACDtnB,EACV8L,EAAOub,OAAQ1a,EAAOpQ,EAAIlB,EAAG2E,EAAI3E,IAAI,EAAMksB,EAAUC,QAIhD,QAAe/sB,IAAV4U,IACXiY,GAAY,EAENxb,EAAO0B,WAAY6B,KACxBmY,GAAM,GAGFC,IAECD,GACJjrB,EAAGpC,KAAMwS,EAAO0C,GAChB9S,EAAK,OAILkrB,EAAOlrB,EACPA,EAAK,SAAU4G,EAAMnD,EAAKqP,GACzB,OAAOoY,EAAKttB,KAAM2R,EAAQ3I,GAAQkM,MAKhC9S,GACJ,KAAQlB,EAAIG,EAAQH,IACnBkB,EAAIoQ,EAAMtR,GAAI2E,EAAKwnB,EAAMnY,EAAQA,EAAMlV,KAAMwS,EAAMtR,GAAIA,EAAGkB,EAAIoQ,EAAMtR,GAAI2E,KAK3E,OAAOsnB,EACN3a,EAGA8a,EACClrB,EAAGpC,KAAMwS,GACTnR,EAASe,EAAIoQ,EAAM,GAAI3M,GAAQunB,GAE9BG,EAAiB,yBAIrB,WAEC,IAAI/Q,EAAQtG,EAASwE,cAAe,SACnCD,EAAMvE,EAASwE,cAAe,OAC9B8S,EAAWtX,EAASuX,yBAsDrB,GAnDAhT,EAAI8B,UAAY,qEAGhB9K,EAAQic,kBAAgD,IAA5BjT,EAAIsD,WAAWnR,SAI3C6E,EAAQkc,OAASlT,EAAIf,qBAAsB,SAAUrY,OAIrDoQ,EAAQmc,gBAAkBnT,EAAIf,qBAAsB,QAASrY,OAI7DoQ,EAAQoc,WACyD,kBAAhE3X,EAASwE,cAAe,OAAQoT,WAAW,GAAOC,UAInDvR,EAAMjT,KAAO,WACbiT,EAAM8D,SAAU,EAChBkN,EAASxR,YAAaQ,GACtB/K,EAAQuc,cAAgBxR,EAAM8D,QAI9B7F,EAAI8B,UAAY,yBAChB9K,EAAQwc,iBAAmBxT,EAAIqT,WAAW,GAAOzO,UAAU2E,aAG3DwJ,EAASxR,YAAavB,GACtBA,EAAI8B,UAAY,mDAIhB9K,EAAQyc,WAAazT,EAAIqT,WAAW,GAAOA,WAAW,GAAOzO,UAAUiB,QAKvE7O,EAAQ0c,cAAe,EAClB1T,EAAIsB,cACRtB,EAAIsB,YAAa,WAAW,WAC3BtK,EAAQ0c,cAAe,KAGxB1T,EAAIqT,WAAW,GAAOM,SAIM,MAAzB3c,EAAQsZ,cAAuB,CAElCtZ,EAAQsZ,eAAgB,EACxB,WACQtQ,EAAIhR,KACV,MAAOI,GACR4H,EAAQsZ,eAAgB,IAhE3B,GAsEA,WACC,IAAI7pB,EAAGmtB,EACN5T,EAAMvE,EAASwE,cAAe,OAG/B,IAAMxZ,IAAK,CAAE4f,QAAQ,EAAMwN,QAAQ,EAAMC,SAAS,GACjDF,EAAY,KAAOntB,GAEZuQ,EAASvQ,EAAI,WAAcmtB,KAAahoB,KAE9CoU,EAAIX,aAAcuU,EAAW,KAC7B5c,EAASvQ,EAAI,YAAsD,IAAxCuZ,EAAIzJ,WAAYqd,GAAY7a,SAKzDiH,EAAM,KAhBP,GAoBA,IAAI+T,EAAa,+BAChBC,EAAY,OACZC,EAAc,uCACdC,EAAc,kCACdC,GAAiB,uBAElB,SAASC,KACR,OAAO,EAGR,SAASC,KACR,OAAO,EAGR,SAASC,KACR,IACC,OAAO7Y,EAAS+J,cACf,MAAQ+O,KA8+BX,SAASC,GAAoB/Y,GAC5B,IAAIgB,EAAOgY,GAAU7sB,MAAO,KAC3B8sB,EAAWjZ,EAASuX,yBAErB,GAAK0B,EAASzU,cACb,KAAQxD,EAAK7V,QACZ8tB,EAASzU,cACRxD,EAAK7N,OAIR,OAAO8lB,EAl/BRxd,EAAOlG,MAAQ,CAEd2F,OAAQ,GAERyU,IAAK,SAAU7c,EAAMomB,EAAOvU,EAASnM,EAAMpL,GAC1C,IAAI+R,EAAKjN,EAAQinB,EAAGC,EACnBC,EAASC,EAAaC,EACtBC,EAAUnmB,EAAMomB,EAAYC,EAC5BC,EAAWle,EAAOsa,MAAOjjB,GAG1B,GAAM6mB,EAAN,CAmCA,IA9BKhV,EAAQA,UAEZA,GADAyU,EAAczU,GACQA,QACtBvX,EAAWgsB,EAAYhsB,UAIlBuX,EAAQ1F,OACb0F,EAAQ1F,KAAOxD,EAAOwD,SAIhB/M,EAASynB,EAASznB,UACxBA,EAASynB,EAASznB,OAAS,KAErBonB,EAAcK,EAASC,UAC7BN,EAAcK,EAASC,OAAS,SAAUjmB,GAGzC,cAAc8H,IAAW6Y,GAAkB3gB,GAAK8H,EAAOlG,MAAMskB,YAAclmB,EAAEN,UAE5EjJ,EADAqR,EAAOlG,MAAMukB,SAASlvB,MAAO0uB,EAAYxmB,KAAM5H,YAIjDouB,EAAYxmB,KAAOA,GAKpBqmB,GADAD,GAAUA,GAAS,IAAK/qB,MAAOoiB,IAAe,CAAE,KACtCplB,OACFguB,KAEP9lB,EAAOqmB,GADPva,EAAMuZ,GAAerV,KAAM6V,EAAMC,KAAQ,IACnB,GACtBM,GAAeta,EAAI,IAAM,IAAKhT,MAAO,KAAM0Q,OAGrCxJ,IAKNgmB,EAAU5d,EAAOlG,MAAM8jB,QAAShmB,IAAU,GAG1CA,GAASjG,EAAWisB,EAAQU,aAAeV,EAAQW,WAAc3mB,EAGjEgmB,EAAU5d,EAAOlG,MAAM8jB,QAAShmB,IAAU,GAG1CkmB,EAAY9d,EAAO3E,OAAO,CACzBzD,KAAMA,EACNqmB,SAAUA,EACVlhB,KAAMA,EACNmM,QAASA,EACT1F,KAAM0F,EAAQ1F,KACd7R,SAAUA,EACV8gB,aAAc9gB,GAAYqO,EAAOnI,KAAKnF,MAAM+f,aAAa3a,KAAMnG,GAC/D6sB,UAAWR,EAAWnrB,KAAK,MACzB8qB,IAGII,EAAWtnB,EAAQmB,OACzBmmB,EAAWtnB,EAAQmB,GAAS,IACnB6mB,cAAgB,EAGnBb,EAAQc,QAAuE,IAA9Dd,EAAQc,MAAMrwB,KAAMgJ,EAAM0F,EAAMihB,EAAYH,KAE7DxmB,EAAK8S,iBACT9S,EAAK8S,iBAAkBvS,EAAMimB,GAAa,GAE/BxmB,EAAK+S,aAChB/S,EAAK+S,YAAa,KAAOxS,EAAMimB,KAK7BD,EAAQ1J,MACZ0J,EAAQ1J,IAAI7lB,KAAMgJ,EAAMymB,GAElBA,EAAU5U,QAAQ1F,OACvBsa,EAAU5U,QAAQ1F,KAAO0F,EAAQ1F,OAK9B7R,EACJosB,EAASpkB,OAAQokB,EAASU,gBAAiB,EAAGX,GAE9CC,EAASzpB,KAAMwpB,GAIhB9d,EAAOlG,MAAM2F,OAAQ7H,IAAS,GAI/BP,EAAO,OAIR8e,OAAQ,SAAU9e,EAAMomB,EAAOvU,EAASvX,EAAUgtB,GACjD,IAAIxd,EAAG2c,EAAWpa,EACjBkb,EAAWlB,EAAGjnB,EACdmnB,EAASG,EAAUnmB,EACnBomB,EAAYC,EACZC,EAAWle,EAAOoa,QAAS/iB,IAAU2I,EAAOsa,MAAOjjB,GAEpD,GAAM6mB,IAAcznB,EAASynB,EAASznB,QAAtC,CAOA,IADAinB,GADAD,GAAUA,GAAS,IAAK/qB,MAAOoiB,IAAe,CAAE,KACtCplB,OACFguB,KAMP,GAJA9lB,EAAOqmB,GADPva,EAAMuZ,GAAerV,KAAM6V,EAAMC,KAAQ,IACnB,GACtBM,GAAeta,EAAI,IAAM,IAAKhT,MAAO,KAAM0Q,OAGrCxJ,EAAN,CAcA,IAPAgmB,EAAU5d,EAAOlG,MAAM8jB,QAAShmB,IAAU,GAE1CmmB,EAAWtnB,EADXmB,GAASjG,EAAWisB,EAAQU,aAAeV,EAAQW,WAAc3mB,IACpC,GAC7B8L,EAAMA,EAAI,IAAM,IAAI3L,OAAQ,UAAYimB,EAAWnrB,KAAK,iBAAmB,WAG3E+rB,EAAYzd,EAAI4c,EAASruB,OACjByR,KACP2c,EAAYC,EAAU5c,IAEfwd,GAAeV,IAAaH,EAAUG,UACzC/U,GAAWA,EAAQ1F,OAASsa,EAAUta,MACtCE,IAAOA,EAAI5L,KAAMgmB,EAAUU,YAC3B7sB,GAAYA,IAAamsB,EAAUnsB,WAAyB,OAAbA,IAAqBmsB,EAAUnsB,YACjFosB,EAASpkB,OAAQwH,EAAG,GAEf2c,EAAUnsB,UACdosB,EAASU,gBAELb,EAAQzH,QACZyH,EAAQzH,OAAO9nB,KAAMgJ,EAAMymB,IAOzBc,IAAcb,EAASruB,SACrBkuB,EAAQnsB,WAA2E,IAA/DmsB,EAAQnsB,SAASpD,KAAMgJ,EAAM2mB,EAAYE,EAASC,SAC3Ene,EAAO6e,YAAaxnB,EAAMO,EAAMsmB,EAASC,eAGnC1nB,EAAQmB,SAtCf,IAAMA,KAAQnB,EACbuJ,EAAOlG,MAAMqc,OAAQ9e,EAAMO,EAAO6lB,EAAOC,GAAKxU,EAASvX,GAAU,GA0C/DqO,EAAOqC,cAAe5L,YACnBynB,EAASC,OAIhBne,EAAOua,YAAaljB,EAAM,aAI5BL,QAAS,SAAU8C,EAAOiD,EAAM1F,EAAMynB,GACrC,IAAIX,EAAQY,EAAQ1V,EACnB2V,EAAYpB,EAASla,EAAKnU,EAC1B0vB,EAAY,CAAE5nB,GAAQkN,GACtB3M,EAAOiI,EAAOxR,KAAMyL,EAAO,QAAWA,EAAMlC,KAAOkC,EACnDkkB,EAAane,EAAOxR,KAAMyL,EAAO,aAAgBA,EAAM0kB,UAAU9tB,MAAM,KAAO,GAK/E,GAHA2Y,EAAM3F,EAAMrM,EAAOA,GAAQkN,EAGJ,IAAlBlN,EAAK4D,UAAoC,IAAlB5D,EAAK4D,WAK5B+hB,EAAYllB,KAAMF,EAAOoI,EAAOlG,MAAMskB,aAItCxmB,EAAKzD,QAAQ,MAAQ,IAEzB6pB,EAAapmB,EAAKlH,MAAM,KACxBkH,EAAOomB,EAAWrV,QAClBqV,EAAW5c,QAEZ2d,EAASnnB,EAAKzD,QAAQ,KAAO,GAAK,KAAOyD,GAGzCkC,EAAQA,EAAOkG,EAAO6B,SACrB/H,EACA,IAAIkG,EAAOvB,MAAO7G,EAAuB,iBAAVkC,GAAsBA,IAGhDolB,UAAYJ,EAAe,EAAI,EACrChlB,EAAM0kB,UAAYR,EAAWnrB,KAAK,KAClCiH,EAAMqlB,aAAerlB,EAAM0kB,UAC1B,IAAIzmB,OAAQ,UAAYimB,EAAWnrB,KAAK,iBAAmB,WAC3D,KAGDiH,EAAM3B,YAASxJ,EACTmL,EAAMxM,SACXwM,EAAMxM,OAAS+J,GAIhB0F,EAAe,MAARA,EACN,CAAEjD,GACFkG,EAAO6C,UAAW9F,EAAM,CAAEjD,IAG3B8jB,EAAU5d,EAAOlG,MAAM8jB,QAAShmB,IAAU,GACpCknB,IAAgBlB,EAAQ5mB,UAAmD,IAAxC4mB,EAAQ5mB,QAAQ7H,MAAOkI,EAAM0F,IAAtE,CAMA,IAAM+hB,IAAiBlB,EAAQwB,WAAapf,EAAOU,SAAUrJ,GAAS,CAMrE,IAJA2nB,EAAapB,EAAQU,cAAgB1mB,EAC/BolB,EAAYllB,KAAMknB,EAAapnB,KACpCyR,EAAMA,EAAIvB,YAEHuB,EAAKA,EAAMA,EAAIvB,WACtBmX,EAAU3qB,KAAM+U,GAChB3F,EAAM2F,EAIF3F,KAASrM,EAAKsQ,eAAiBpD,IACnC0a,EAAU3qB,KAAMoP,EAAIuG,aAAevG,EAAI2b,cAAgB3qB,GAMzD,IADAnF,EAAI,GACK8Z,EAAM4V,EAAU1vB,QAAUuK,EAAMkD,wBAExClD,EAAMlC,KAAOrI,EAAI,EAChByvB,EACApB,EAAQW,UAAY3mB,GAGrBumB,GAAWne,EAAOsa,MAAOjR,EAAK,WAAc,IAAMvP,EAAMlC,OAAUoI,EAAOsa,MAAOjR,EAAK,YAEpF8U,EAAOhvB,MAAOka,EAAKtM,IAIpBohB,EAASY,GAAU1V,EAAK0V,KACTZ,EAAOhvB,OAAS6Q,EAAOqZ,WAAYhQ,KACjDvP,EAAM3B,OAASgmB,EAAOhvB,MAAOka,EAAKtM,IACZ,IAAjBjD,EAAM3B,QACV2B,EAAMwlB,kBAOT,GAHAxlB,EAAMlC,KAAOA,GAGPknB,IAAiBhlB,EAAM6E,wBAErBif,EAAQ2B,WAAgE,IAApD3B,EAAQ2B,SAASpwB,MAAO8vB,EAAUvnB,MAAOqF,KACnEiD,EAAOqZ,WAAYhiB,IAKd0nB,GAAU1nB,EAAMO,KAAWoI,EAAOU,SAAUrJ,GAAS,EAGzDqM,EAAMrM,EAAM0nB,MAGX1nB,EAAM0nB,GAAW,MAIlB/e,EAAOlG,MAAMskB,UAAYxmB,EACzB,IACCP,EAAMO,KACL,MAAQM,IAIV8H,EAAOlG,MAAMskB,eAAYzvB,EAEpB+U,IACJrM,EAAM0nB,GAAWrb,GAMrB,OAAO5J,EAAM3B,SAGdkmB,SAAU,SAAUvkB,GAGnBA,EAAQkG,EAAOlG,MAAM0lB,IAAK1lB,GAE1B,IAAIvK,EAAGuR,EAAKgd,EAAWhQ,EAAS3M,EAC/Bse,EAAe,GACf9vB,EAAOkE,EAAMxF,KAAMoB,WACnBsuB,GAAa/d,EAAOsa,MAAO5sB,KAAM,WAAc,IAAMoM,EAAMlC,OAAU,GACrEgmB,EAAU5d,EAAOlG,MAAM8jB,QAAS9jB,EAAMlC,OAAU,GAOjD,GAJAjI,EAAK,GAAKmK,EACVA,EAAM4lB,eAAiBhyB,MAGlBkwB,EAAQ+B,cAA2D,IAA5C/B,EAAQ+B,YAAYtxB,KAAMX,KAAMoM,GAA5D,CASA,IAJA2lB,EAAezf,EAAOlG,MAAMikB,SAAS1vB,KAAMX,KAAMoM,EAAOikB,GAGxDxuB,EAAI,GACKue,EAAU2R,EAAclwB,QAAWuK,EAAMkD,wBAIjD,IAHAlD,EAAMoD,cAAgB4Q,EAAQzW,KAE9B8J,EAAI,GACK2c,EAAYhQ,EAAQiQ,SAAU5c,QAAWrH,EAAM8lB,iCAIjD9lB,EAAMqlB,eAAgBrlB,EAAMqlB,aAAarnB,KAAMgmB,EAAUU,aAE9D1kB,EAAMgkB,UAAYA,EAClBhkB,EAAMiD,KAAO+gB,EAAU/gB,UAKVpO,KAHbmS,IAASd,EAAOlG,MAAM8jB,QAASE,EAAUG,WAAc,IAAIE,QAAUL,EAAU5U,SAC5E/Z,MAAO2e,EAAQzW,KAAM1H,MAGO,KAAxBmK,EAAM3B,OAAS2I,KACpBhH,EAAMwlB,iBACNxlB,EAAM+lB,oBAYX,OAJKjC,EAAQkC,cACZlC,EAAQkC,aAAazxB,KAAMX,KAAMoM,GAG3BA,EAAM3B,SAGd4lB,SAAU,SAAUjkB,EAAOikB,GAC1B,IAAIgC,EAAKjC,EAAW1a,EAAS7T,EAC5BkwB,EAAe,GACfhB,EAAgBV,EAASU,cACzBpV,EAAMvP,EAAMxM,OAKb,GAAKmxB,GAAiBpV,EAAIpO,YAAcnB,EAAMkmB,QAAyB,UAAflmB,EAAMlC,MAG7D,KAAQyR,GAAO3b,KAAM2b,EAAMA,EAAIvB,YAAcpa,KAK5C,GAAsB,IAAjB2b,EAAIpO,YAAoC,IAAjBoO,EAAIqF,UAAoC,UAAf5U,EAAMlC,MAAoB,CAE9E,IADAwL,EAAU,GACJ7T,EAAI,EAAGA,EAAIkvB,EAAelvB,SAMPZ,IAAnByU,EAFL2c,GAHAjC,EAAYC,EAAUxuB,IAGNoC,SAAW,OAG1ByR,EAAS2c,GAAQjC,EAAUrL,aAC1BzS,EAAQ+f,EAAKryB,MAAOwM,MAAOmP,IAAS,EACpCrJ,EAAO9J,KAAM6pB,EAAKryB,KAAM,KAAM,CAAE2b,IAAQ3Z,QAErC0T,EAAS2c,IACb3c,EAAQ9O,KAAMwpB,GAGX1a,EAAQ1T,QACZ+vB,EAAanrB,KAAK,CAAE+C,KAAMgS,EAAK0U,SAAU3a,IAW7C,OAJKqb,EAAgBV,EAASruB,QAC7B+vB,EAAanrB,KAAK,CAAE+C,KAAM3J,KAAMqwB,SAAUA,EAASlqB,MAAO4qB,KAGpDgB,GAGRD,IAAK,SAAU1lB,GACd,GAAKA,EAAOkG,EAAO6B,SAClB,OAAO/H,EAIR,IAAIvK,EAAGqF,EAAM2M,EACZ3J,EAAOkC,EAAMlC,KACbqoB,EAAgBnmB,EAChBomB,EAAUxyB,KAAKyyB,SAAUvoB,GAa1B,IAXMsoB,IACLxyB,KAAKyyB,SAAUvoB,GAASsoB,EACvBnD,EAAYjlB,KAAMF,GAASlK,KAAK0yB,WAChCtD,EAAUhlB,KAAMF,GAASlK,KAAK2yB,SAC9B,IAEF9e,EAAO2e,EAAQI,MAAQ5yB,KAAK4yB,MAAMhtB,OAAQ4sB,EAAQI,OAAU5yB,KAAK4yB,MAEjExmB,EAAQ,IAAIkG,EAAOvB,MAAOwhB,GAE1B1wB,EAAIgS,EAAK7R,OACDH,KAEPuK,EADAlF,EAAO2M,EAAMhS,IACG0wB,EAAerrB,GAmBhC,OAdMkF,EAAMxM,SACXwM,EAAMxM,OAAS2yB,EAAcM,YAAchc,GAKb,IAA1BzK,EAAMxM,OAAO2N,WACjBnB,EAAMxM,OAASwM,EAAMxM,OAAOwa,YAK7BhO,EAAM0mB,UAAY1mB,EAAM0mB,QAEjBN,EAAQvtB,OAASutB,EAAQvtB,OAAQmH,EAAOmmB,GAAkBnmB,GAIlEwmB,MAAO,wHAAwH5vB,MAAM,KAErIyvB,SAAU,GAEVE,SAAU,CACTC,MAAO,4BAA4B5vB,MAAM,KACzCiC,OAAQ,SAAUmH,EAAO2mB,GAOxB,OAJoB,MAAf3mB,EAAMK,QACVL,EAAMK,MAA6B,MAArBsmB,EAASC,SAAmBD,EAASC,SAAWD,EAASE,SAGjE7mB,IAITsmB,WAAY,CACXE,MAAO,mGAAmG5vB,MAAM,KAChHiC,OAAQ,SAAUmH,EAAO2mB,GACxB,IAAIjI,EAAMoI,EAAU5W,EACnBgW,EAASS,EAAST,OAClBa,EAAcJ,EAASI,YAuBxB,OApBoB,MAAf/mB,EAAMgnB,OAAqC,MAApBL,EAASM,UAEpC/W,GADA4W,EAAW9mB,EAAMxM,OAAOqa,eAAiBpD,GAC1BuF,gBACf0O,EAAOoI,EAASpI,KAEhB1e,EAAMgnB,MAAQL,EAASM,SAAY/W,GAAOA,EAAIgX,YAAcxI,GAAQA,EAAKwI,YAAc,IAAQhX,GAAOA,EAAIiX,YAAczI,GAAQA,EAAKyI,YAAc,GACnJnnB,EAAMonB,MAAQT,EAASU,SAAYnX,GAAOA,EAAIoX,WAAc5I,GAAQA,EAAK4I,WAAc,IAAQpX,GAAOA,EAAIqX,WAAc7I,GAAQA,EAAK6I,WAAc,KAI9IvnB,EAAMwnB,eAAiBT,IAC5B/mB,EAAMwnB,cAAgBT,IAAgB/mB,EAAMxM,OAASmzB,EAASc,UAAYV,GAKrE/mB,EAAMK,YAAoBxL,IAAXqxB,IACpBlmB,EAAMK,MAAmB,EAAT6lB,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjElmB,IAIT8jB,QAAS,CACR4D,KAAM,CAELpC,UAAU,GAEXqC,MAAO,CAENzqB,QAAS,WACR,GAAKtJ,OAAS0vB,MAAuB1vB,KAAK+zB,MACzC,IAEC,OADA/zB,KAAK+zB,SACE,EACN,MAAQvpB,MAOZomB,aAAc,WAEfoD,KAAM,CACL1qB,QAAS,WACR,GAAKtJ,OAAS0vB,MAAuB1vB,KAAKg0B,KAEzC,OADAh0B,KAAKg0B,QACE,GAGTpD,aAAc,YAEf7B,MAAO,CAENzlB,QAAS,WACR,GAAKgJ,EAAO2C,SAAUjV,KAAM,UAA2B,aAAdA,KAAKkK,MAAuBlK,KAAK+uB,MAEzE,OADA/uB,KAAK+uB,SACE,GAKT8C,SAAU,SAAUzlB,GACnB,OAAOkG,EAAO2C,SAAU7I,EAAMxM,OAAQ,OAIxCq0B,aAAc,CACb7B,aAAc,SAAUhmB,QAIDnL,IAAjBmL,EAAM3B,QAAwB2B,EAAMmmB,gBACxCnmB,EAAMmmB,cAAc2B,YAAc9nB,EAAM3B,WAM5C0pB,SAAU,SAAUjqB,EAAMP,EAAMyC,EAAOgoB,GAItC,IAAI5pB,EAAI8H,EAAO3E,OACd,IAAI2E,EAAOvB,MACX3E,EACA,CACClC,KAAMA,EACNmqB,aAAa,EACb9B,cAAe,KAGZ6B,EACJ9hB,EAAOlG,MAAM9C,QAASkB,EAAG,KAAMb,GAE/B2I,EAAOlG,MAAMukB,SAAShwB,KAAMgJ,EAAMa,GAE9BA,EAAEyG,sBACN7E,EAAMwlB,mBAKTtf,EAAO6e,YAActa,EAAS0Q,oBAC7B,SAAU5d,EAAMO,EAAMumB,GAChB9mB,EAAK4d,qBACT5d,EAAK4d,oBAAqBrd,EAAMumB,GAAQ,IAG1C,SAAU9mB,EAAMO,EAAMumB,GACrB,IAAI3rB,EAAO,KAAOoF,EAEbP,EAAK8d,qBAIG9d,EAAM7E,KAAWqmB,IAC5BxhB,EAAM7E,GAAS,MAGhB6E,EAAK8d,YAAa3iB,EAAM2rB,KAI3Bne,EAAOvB,MAAQ,SAAU4C,EAAKif,GAE7B,KAAO5yB,gBAAgBsS,EAAOvB,OAC7B,OAAO,IAAIuB,EAAOvB,MAAO4C,EAAKif,GAI1Bjf,GAAOA,EAAIzJ,MACflK,KAAKuyB,cAAgB5e,EACrB3T,KAAKkK,KAAOyJ,EAAIzJ,KAIhBlK,KAAKiR,mBAAqB0C,EAAI2gB,uBACHrzB,IAAzB0S,EAAI2gB,mBAEgB,IAApB3gB,EAAIugB,YACL1E,GACAC,IAIDzvB,KAAKkK,KAAOyJ,EAIRif,GACJtgB,EAAO3E,OAAQ3N,KAAM4yB,GAItB5yB,KAAKu0B,UAAY5gB,GAAOA,EAAI4gB,WAAajiB,EAAO2D,MAGhDjW,KAAMsS,EAAO6B,UAAY,GAK1B7B,EAAOvB,MAAMpM,UAAY,CACxBsM,mBAAoBwe,GACpBngB,qBAAsBmgB,GACtByC,8BAA+BzC,GAE/BmC,eAAgB,WACf,IAAIpnB,EAAIxK,KAAKuyB,cAEbvyB,KAAKiR,mBAAqBue,GACpBhlB,IAKDA,EAAEonB,eACNpnB,EAAEonB,iBAKFpnB,EAAE0pB,aAAc,IAGlB/B,gBAAiB,WAChB,IAAI3nB,EAAIxK,KAAKuyB,cAEbvyB,KAAKsP,qBAAuBkgB,GACtBhlB,IAIDA,EAAE2nB,iBACN3nB,EAAE2nB,kBAKH3nB,EAAEgqB,cAAe,IAElBC,yBAA0B,WACzB,IAAIjqB,EAAIxK,KAAKuyB,cAEbvyB,KAAKkyB,8BAAgC1C,GAEhChlB,GAAKA,EAAEiqB,0BACXjqB,EAAEiqB,2BAGHz0B,KAAKmyB,oBAKP7f,EAAOjO,KAAK,CACXqwB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,eACZ,SAAUC,EAAMhD,GAClBxf,EAAOlG,MAAM8jB,QAAS4E,GAAS,CAC9BlE,aAAckB,EACdjB,SAAUiB,EAEVrB,OAAQ,SAAUrkB,GACjB,IAAIgH,EACHxT,EAASI,KACT+0B,EAAU3oB,EAAMwnB,cAChBxD,EAAYhkB,EAAMgkB,UASnB,OALM2E,IAAYA,IAAYn1B,GAAW0S,EAAO4E,SAAUtX,EAAQm1B,MACjE3oB,EAAMlC,KAAOkmB,EAAUG,SACvBnd,EAAMgd,EAAU5U,QAAQ/Z,MAAOzB,KAAM+B,WACrCqK,EAAMlC,KAAO4nB,GAEP1e,OAMJhB,EAAQ4iB,gBAEb1iB,EAAOlG,MAAM8jB,QAAQzO,OAAS,CAC7BuP,MAAO,WAEN,GAAK1e,EAAO2C,SAAUjV,KAAM,QAC3B,OAAO,EAIRsS,EAAOlG,MAAMoa,IAAKxmB,KAAM,kCAAkC,SAAUwK,GAEnE,IAAIb,EAAOa,EAAE5K,OACZq1B,EAAO3iB,EAAO2C,SAAUtL,EAAM,UAAa2I,EAAO2C,SAAUtL,EAAM,UAAaA,EAAKsrB,UAAOh0B,EACvFg0B,IAAS3iB,EAAOsa,MAAOqI,EAAM,mBACjC3iB,EAAOlG,MAAMoa,IAAKyO,EAAM,kBAAkB,SAAU7oB,GACnDA,EAAM8oB,gBAAiB,KAExB5iB,EAAOsa,MAAOqI,EAAM,iBAAiB,QAMxC7C,aAAc,SAAUhmB,GAElBA,EAAM8oB,wBACH9oB,EAAM8oB,eACRl1B,KAAKoa,aAAehO,EAAMolB,WAC9Blf,EAAOlG,MAAM+nB,SAAU,SAAUn0B,KAAKoa,WAAYhO,GAAO,KAK5DrI,SAAU,WAET,GAAKuO,EAAO2C,SAAUjV,KAAM,QAC3B,OAAO,EAIRsS,EAAOlG,MAAMqc,OAAQzoB,KAAM,eAMxBoS,EAAQ+iB,gBAEb7iB,EAAOlG,MAAM8jB,QAAQjB,OAAS,CAE7B+B,MAAO,WAEN,GAAK7B,EAAW/kB,KAAMpK,KAAKiV,UAkB1B,MAdmB,aAAdjV,KAAKkK,MAAqC,UAAdlK,KAAKkK,OACrCoI,EAAOlG,MAAMoa,IAAKxmB,KAAM,0BAA0B,SAAUoM,GACjB,YAArCA,EAAMmmB,cAAc6C,eACxBp1B,KAAKq1B,eAAgB,MAGvB/iB,EAAOlG,MAAMoa,IAAKxmB,KAAM,iBAAiB,SAAUoM,GAC7CpM,KAAKq1B,gBAAkBjpB,EAAMolB,YACjCxxB,KAAKq1B,eAAgB,GAGtB/iB,EAAOlG,MAAM+nB,SAAU,SAAUn0B,KAAMoM,GAAO,QAGzC,EAGRkG,EAAOlG,MAAMoa,IAAKxmB,KAAM,0BAA0B,SAAUwK,GAC3D,IAAIb,EAAOa,EAAE5K,OAERuvB,EAAW/kB,KAAMT,EAAKsL,YAAe3C,EAAOsa,MAAOjjB,EAAM,mBAC7D2I,EAAOlG,MAAMoa,IAAK7c,EAAM,kBAAkB,SAAUyC,IAC9CpM,KAAKoa,YAAehO,EAAMioB,aAAgBjoB,EAAMolB,WACpDlf,EAAOlG,MAAM+nB,SAAU,SAAUn0B,KAAKoa,WAAYhO,GAAO,MAG3DkG,EAAOsa,MAAOjjB,EAAM,iBAAiB,QAKxC8mB,OAAQ,SAAUrkB,GACjB,IAAIzC,EAAOyC,EAAMxM,OAGjB,GAAKI,OAAS2J,GAAQyC,EAAMioB,aAAejoB,EAAMolB,WAA4B,UAAd7nB,EAAKO,MAAkC,aAAdP,EAAKO,KAC5F,OAAOkC,EAAMgkB,UAAU5U,QAAQ/Z,MAAOzB,KAAM+B,YAI9CgC,SAAU,WAGT,OAFAuO,EAAOlG,MAAMqc,OAAQzoB,KAAM,aAEnBmvB,EAAW/kB,KAAMpK,KAAKiV,aAM3B7C,EAAQkjB,gBACbhjB,EAAOjO,KAAK,CAAE0vB,MAAO,UAAWC,KAAM,aAAc,SAAUc,EAAMhD,GAGnE,IAAItW,EAAU,SAAUpP,GACtBkG,EAAOlG,MAAM+nB,SAAUrC,EAAK1lB,EAAMxM,OAAQ0S,EAAOlG,MAAM0lB,IAAK1lB,IAAS,IAGvEkG,EAAOlG,MAAM8jB,QAAS4B,GAAQ,CAC7Bd,MAAO,WACN,IAAI1U,EAAMtc,KAAKia,eAAiBja,KAC/Bu1B,EAAWjjB,EAAOsa,MAAOtQ,EAAKwV,GAEzByD,GACLjZ,EAAIG,iBAAkBqY,EAAMtZ,GAAS,GAEtClJ,EAAOsa,MAAOtQ,EAAKwV,GAAOyD,GAAY,GAAM,IAE7CxxB,SAAU,WACT,IAAIuY,EAAMtc,KAAKia,eAAiBja,KAC/Bu1B,EAAWjjB,EAAOsa,MAAOtQ,EAAKwV,GAAQ,EAEjCyD,EAILjjB,EAAOsa,MAAOtQ,EAAKwV,EAAKyD,IAHxBjZ,EAAIiL,oBAAqBuN,EAAMtZ,GAAS,GACxClJ,EAAOua,YAAavQ,EAAKwV,SAS9Bxf,EAAOvP,GAAG4K,OAAO,CAEhBtE,GAAI,SAAU0mB,EAAO9rB,EAAUoL,EAAMtM,EAAiByyB,GACrD,IAAItrB,EAAMurB,EAGV,GAAsB,iBAAV1F,EAAqB,CAOhC,IAAM7lB,IALmB,iBAAbjG,IAEXoL,EAAOA,GAAQpL,EACfA,OAAWhD,GAEE8uB,EACb/vB,KAAKqJ,GAAIa,EAAMjG,EAAUoL,EAAM0gB,EAAO7lB,GAAQsrB,GAE/C,OAAOx1B,KAmBR,GAhBa,MAARqP,GAAsB,MAANtM,GAEpBA,EAAKkB,EACLoL,EAAOpL,OAAWhD,GACD,MAAN8B,IACc,iBAAbkB,GAEXlB,EAAKsM,EACLA,OAAOpO,IAGP8B,EAAKsM,EACLA,EAAOpL,EACPA,OAAWhD,KAGD,IAAP8B,EACJA,EAAK0sB,QACC,IAAM1sB,EACZ,OAAO/C,KAaR,OAVa,IAARw1B,IACJC,EAAS1yB,EACTA,EAAK,SAAUqJ,GAGd,OADAkG,IAAS/I,IAAK6C,GACPqpB,EAAOh0B,MAAOzB,KAAM+B,YAG5BgB,EAAG+S,KAAO2f,EAAO3f,OAAU2f,EAAO3f,KAAOxD,EAAOwD,SAE1C9V,KAAKqE,MAAM,WACjBiO,EAAOlG,MAAMoa,IAAKxmB,KAAM+vB,EAAOhtB,EAAIsM,EAAMpL,OAG3CuxB,IAAK,SAAUzF,EAAO9rB,EAAUoL,EAAMtM,GACrC,OAAO/C,KAAKqJ,GAAI0mB,EAAO9rB,EAAUoL,EAAMtM,EAAI,IAE5CwG,IAAK,SAAUwmB,EAAO9rB,EAAUlB,GAC/B,IAAIqtB,EAAWlmB,EACf,GAAK6lB,GAASA,EAAM6B,gBAAkB7B,EAAMK,UAQ3C,OANAA,EAAYL,EAAMK,UAClB9d,EAAQyd,EAAMiC,gBAAiBzoB,IAC9B6mB,EAAUU,UAAYV,EAAUG,SAAW,IAAMH,EAAUU,UAAYV,EAAUG,SACjFH,EAAUnsB,SACVmsB,EAAU5U,SAEJxb,KAER,GAAsB,iBAAV+vB,EAAqB,CAEhC,IAAM7lB,KAAQ6lB,EACb/vB,KAAKuJ,IAAKW,EAAMjG,EAAU8rB,EAAO7lB,IAElC,OAAOlK,KAUR,OARkB,IAAbiE,GAA0C,mBAAbA,IAEjClB,EAAKkB,EACLA,OAAWhD,IAEA,IAAP8B,IACJA,EAAK0sB,IAECzvB,KAAKqE,MAAK,WAChBiO,EAAOlG,MAAMqc,OAAQzoB,KAAM+vB,EAAOhtB,EAAIkB,OAIxCqF,QAAS,SAAUY,EAAMmF,GACxB,OAAOrP,KAAKqE,MAAK,WAChBiO,EAAOlG,MAAM9C,QAASY,EAAMmF,EAAMrP,UAGpC+qB,eAAgB,SAAU7gB,EAAMmF,GAC/B,IAAI1F,EAAO3J,KAAK,GAChB,GAAK2J,EACJ,OAAO2I,EAAOlG,MAAM9C,QAASY,EAAMmF,EAAM1F,GAAM,MAoBlD,IAAIkmB,GAAY,6JAEf6F,GAAgB,6BAChBC,GAAe,IAAItrB,OAAO,OAASwlB,GAAY,WAAY,KAC3D+F,GAAqB,OACrBC,GAAY,0EACZC,GAAW,YACXC,GAAS,UACTC,GAAQ,YACRC,GAAe,0BAEfC,GAAW,oCACXC,GAAc,4BACdC,GAAoB,cACpBC,GAAe,2CAGfC,GAAU,CACTC,OAAQ,CAAE,EAAG,+BAAgC,aAC7CC,OAAQ,CAAE,EAAG,aAAc,eAC3BC,KAAM,CAAE,EAAG,QAAS,UACpBC,MAAO,CAAE,EAAG,WAAY,aACxBC,MAAO,CAAE,EAAG,UAAW,YACvBC,GAAI,CAAE,EAAG,iBAAkB,oBAC3BC,IAAK,CAAE,EAAG,mCAAoC,uBAC9CC,GAAI,CAAE,EAAG,qBAAsB,yBAI/BjF,SAAUzf,EAAQmc,cAAgB,CAAE,EAAG,GAAI,IAAO,CAAE,EAAG,SAAU,WAGlEwI,GADenH,GAAoB/Y,GACR8F,YAAa9F,EAASwE,cAAc,QAMhE,SAAS2b,GAAQxoB,EAASyO,GACzB,IAAI9J,EAAOxJ,EACV9H,EAAI,EACJo1B,SAAezoB,EAAQ6L,uBAAyB8Q,EAAe3c,EAAQ6L,qBAAsB4C,GAAO,YAC5FzO,EAAQoM,mBAAqBuQ,EAAe3c,EAAQoM,iBAAkBqC,GAAO,UACpFhc,EAEF,IAAMg2B,EACL,IAAMA,EAAQ,GAAI9jB,EAAQ3E,EAAQiL,YAAcjL,EAA8B,OAApB7E,EAAOwJ,EAAMtR,IAAaA,KAC7Eob,GAAO3K,EAAO2C,SAAUtL,EAAMsT,GACnCga,EAAMrwB,KAAM+C,GAEZ2I,EAAOlO,MAAO6yB,EAAOD,GAAQrtB,EAAMsT,IAKtC,YAAehc,IAARgc,GAAqBA,GAAO3K,EAAO2C,SAAUzG,EAASyO,GAC5D3K,EAAOlO,MAAO,CAAEoK,GAAWyoB,GAC3BA,EAIF,SAASC,GAAmBvtB,GACtBukB,EAAe9jB,KAAMT,EAAKO,QAC9BP,EAAKwtB,eAAiBxtB,EAAKsX,SAM7B,SAASmW,GAAoBztB,EAAM0tB,GAClC,OAAO/kB,EAAO2C,SAAUtL,EAAM,UAC7B2I,EAAO2C,SAA+B,KAArBoiB,EAAQ9pB,SAAkB8pB,EAAUA,EAAQ3Y,WAAY,MAEzE/U,EAAK0Q,qBAAqB,SAAS,IAClC1Q,EAAKgT,YAAahT,EAAKsQ,cAAcoB,cAAc,UACpD1R,EAIF,SAAS2tB,GAAe3tB,GAEvB,OADAA,EAAKO,MAA6C,OAArCoI,EAAO9J,KAAK8H,KAAM3G,EAAM,SAAqB,IAAMA,EAAKO,KAC9DP,EAER,SAAS4tB,GAAe5tB,GACvB,IAAI3E,EAAQoxB,GAAkBlc,KAAMvQ,EAAKO,MAMzC,OALKlF,EACJ2E,EAAKO,KAAOlF,EAAM,GAElB2E,EAAKmR,gBAAgB,QAEfnR,EAIR,SAAS6tB,GAAerkB,EAAOskB,GAG9B,IAFA,IAAI9tB,EACH9H,EAAI,EACwB,OAApB8H,EAAOwJ,EAAMtR,IAAaA,IAClCyQ,EAAOsa,MAAOjjB,EAAM,cAAe8tB,GAAenlB,EAAOsa,MAAO6K,EAAY51B,GAAI,eAIlF,SAAS61B,GAAgB/jB,EAAKgkB,GAE7B,GAAuB,IAAlBA,EAAKpqB,UAAmB+E,EAAOoa,QAAS/Y,GAA7C,CAIA,IAAIzJ,EAAMrI,EAAGC,EACZ81B,EAAUtlB,EAAOsa,MAAOjZ,GACxBkkB,EAAUvlB,EAAOsa,MAAO+K,EAAMC,GAC9B7uB,EAAS6uB,EAAQ7uB,OAElB,GAAKA,EAIJ,IAAMmB,YAHC2tB,EAAQpH,OACfoH,EAAQ9uB,OAAS,GAEHA,EACb,IAAMlH,EAAI,EAAGC,EAAIiH,EAAQmB,GAAOlI,OAAQH,EAAIC,EAAGD,IAC9CyQ,EAAOlG,MAAMoa,IAAKmR,EAAMztB,EAAMnB,EAAQmB,GAAQrI,IAM5Cg2B,EAAQxoB,OACZwoB,EAAQxoB,KAAOiD,EAAO3E,OAAQ,GAAIkqB,EAAQxoB,QAI5C,SAASyoB,GAAoBnkB,EAAKgkB,GACjC,IAAI1iB,EAAUzK,EAAG6E,EAGjB,GAAuB,IAAlBsoB,EAAKpqB,SAAV,CAOA,GAHA0H,EAAW0iB,EAAK1iB,SAAStK,eAGnByH,EAAQ0c,cAAgB6I,EAAMrlB,EAAO6B,SAAY,CAGtD,IAAM3J,KAFN6E,EAAOiD,EAAOsa,MAAO+K,IAEL5uB,OACfuJ,EAAO6e,YAAawG,EAAMntB,EAAG6E,EAAKohB,QAInCkH,EAAK7c,gBAAiBxI,EAAO6B,SAIZ,WAAbc,GAAyB0iB,EAAKziB,OAASvB,EAAIuB,MAC/CoiB,GAAeK,GAAOziB,KAAOvB,EAAIuB,KACjCqiB,GAAeI,IAIS,WAAb1iB,GACN0iB,EAAKvd,aACTud,EAAKjJ,UAAY/a,EAAI+a,WAOjBtc,EAAQoc,YAAgB7a,EAAIuJ,YAAc5K,EAAO3S,KAAKg4B,EAAKza,aAC/Dya,EAAKza,UAAYvJ,EAAIuJ,YAGE,UAAbjI,GAAwBiZ,EAAe9jB,KAAMuJ,EAAIzJ,OAK5DytB,EAAKR,eAAiBQ,EAAK1W,QAAUtN,EAAIsN,QAIpC0W,EAAK9hB,QAAUlC,EAAIkC,QACvB8hB,EAAK9hB,MAAQlC,EAAIkC,QAKM,WAAbZ,EACX0iB,EAAKI,gBAAkBJ,EAAKzW,SAAWvN,EAAIokB,gBAInB,UAAb9iB,GAAqC,aAAbA,IACnC0iB,EAAKhT,aAAehR,EAAIgR,eA/J1B2R,GAAQ0B,SAAW1B,GAAQC,OAC3BD,GAAQhI,MAAQgI,GAAQ2B,MAAQ3B,GAAQ4B,SAAW5B,GAAQ6B,QAAU7B,GAAQK,MAC7EL,GAAQ8B,GAAK9B,GAAQQ,GAiKrBxkB,EAAO3E,OAAO,CACbmG,MAAO,SAAUnK,EAAM0uB,EAAeC,GACrC,IAAIC,EAAcj0B,EAAMwP,EAAOjS,EAAG22B,EACjCC,EAASnmB,EAAO4E,SAAUvN,EAAKsQ,cAAetQ,GAW/C,GATKyI,EAAQoc,YAAclc,EAAOuS,SAASlb,KAAUgsB,GAAavrB,KAAM,IAAMT,EAAKsL,SAAW,KAC7FnB,EAAQnK,EAAK8kB,WAAW,IAIxBsI,GAAY7Z,UAAYvT,EAAK+kB,UAC7BqI,GAAYzb,YAAaxH,EAAQijB,GAAYrY,eAGvCtM,EAAQ0c,cAAiB1c,EAAQwc,gBACnB,IAAlBjlB,EAAK4D,UAAoC,KAAlB5D,EAAK4D,UAAqB+E,EAAOuS,SAASlb,IAOnE,IAJA4uB,EAAevB,GAAQljB,GACvB0kB,EAAcxB,GAAQrtB,GAGhB9H,EAAI,EAA8B,OAA1ByC,EAAOk0B,EAAY32B,MAAeA,EAE1C02B,EAAa12B,IACjBi2B,GAAoBxzB,EAAMi0B,EAAa12B,IAM1C,GAAKw2B,EACJ,GAAKC,EAIJ,IAHAE,EAAcA,GAAexB,GAAQrtB,GACrC4uB,EAAeA,GAAgBvB,GAAQljB,GAEjCjS,EAAI,EAA8B,OAA1ByC,EAAOk0B,EAAY32B,IAAaA,IAC7C61B,GAAgBpzB,EAAMi0B,EAAa12B,SAGpC61B,GAAgB/tB,EAAMmK,GAaxB,OARAykB,EAAevB,GAAQljB,EAAO,WACZ9R,OAAS,GAC1Bw1B,GAAee,GAAeE,GAAUzB,GAAQrtB,EAAM,WAGvD4uB,EAAeC,EAAcl0B,EAAO,KAG7BwP,GAGR4kB,cAAe,SAAUvlB,EAAO3E,EAASmqB,EAASC,GAWjD,IAVA,IAAInlB,EAAG9J,EAAMuN,EACZlB,EAAKiH,EAAKqR,EAAOuK,EACjB/2B,EAAIqR,EAAMnR,OAGV82B,EAAOlJ,GAAoBphB,GAE3BuqB,EAAQ,GACRl3B,EAAI,EAEGA,EAAIC,EAAGD,IAGd,IAFA8H,EAAOwJ,EAAOtR,KAEQ,IAAT8H,EAGZ,GAA6B,WAAxB2I,EAAOpI,KAAMP,GACjB2I,EAAOlO,MAAO20B,EAAOpvB,EAAK4D,SAAW,CAAE5D,GAASA,QAG1C,GAAMqsB,GAAM5rB,KAAMT,GAIlB,CAWN,IAVAqM,EAAMA,GAAO8iB,EAAKnc,YAAanO,EAAQ6M,cAAc,QAGrD4B,GAAO6Y,GAAS5b,KAAMvQ,IAAU,CAAE,GAAI,KAAO,GAAIgB,cACjDkuB,EAAOvC,GAASrZ,IAASqZ,GAAQzE,SAEjC7b,EAAIkH,UAAY2b,EAAK,GAAKlvB,EAAKW,QAASurB,GAAW,aAAgBgD,EAAK,GAGxEplB,EAAIolB,EAAK,GACDplB,KACPuC,EAAMA,EAAIgK,UASX,IALM5N,EAAQic,mBAAqBuH,GAAmBxrB,KAAMT,IAC3DovB,EAAMnyB,KAAM4H,EAAQwqB,eAAgBpD,GAAmB1b,KAAMvQ,GAAO,MAI/DyI,EAAQkc,MAYb,IADA7a,GARA9J,EAAe,UAARsT,GAAoB8Y,GAAO3rB,KAAMT,GAI3B,YAAZkvB,EAAK,IAAqB9C,GAAO3rB,KAAMT,GAEtC,EADAqM,EAJDA,EAAI0I,aAOO/U,EAAK8P,WAAWzX,OACpByR,KACFnB,EAAO2C,SAAWqZ,EAAQ3kB,EAAK8P,WAAWhG,GAAK,WAAc6a,EAAM7U,WAAWzX,QAClF2H,EAAK2R,YAAagT,GAWrB,IANAhc,EAAOlO,MAAO20B,EAAO/iB,EAAIyD,YAGzBzD,EAAIyI,YAAc,GAGVzI,EAAI0I,YACX1I,EAAIsF,YAAatF,EAAI0I,YAItB1I,EAAM8iB,EAAK9Y,eAtDX+Y,EAAMnyB,KAAM4H,EAAQwqB,eAAgBrvB,IAuEvC,IAXKqM,GACJ8iB,EAAKxd,YAAatF,GAKb5D,EAAQuc,eACbrc,EAAOkD,KAAMwhB,GAAQ+B,EAAO,SAAW7B,IAGxCr1B,EAAI,EACK8H,EAAOovB,EAAOl3B,MAItB,KAAK+2B,IAAoD,IAAvCtmB,EAAO+C,QAAS1L,EAAMivB,MAIxC1hB,EAAW5E,EAAO4E,SAAUvN,EAAKsQ,cAAetQ,GAGhDqM,EAAMghB,GAAQ8B,EAAKnc,YAAahT,GAAQ,UAGnCuN,GACJsgB,GAAexhB,GAIX2iB,GAEJ,IADAllB,EAAI,EACK9J,EAAOqM,EAAKvC,MACf0iB,GAAY/rB,KAAMT,EAAKO,MAAQ,KACnCyuB,EAAQ/xB,KAAM+C,GAQlB,OAFAqM,EAAM,KAEC8iB,GAGRrM,UAAW,SAAUtZ,EAAsBwY,GAQ1C,IAPA,IAAIhiB,EAAMO,EAAMzJ,EAAI4O,EACnBxN,EAAI,EACJwqB,EAAc/Z,EAAO6B,QACrB4G,EAAQzI,EAAOyI,MACf2Q,EAAgBtZ,EAAQsZ,cACxBwE,EAAU5d,EAAOlG,MAAM8jB,QAEK,OAApBvmB,EAAOwJ,EAAMtR,IAAaA,IAClC,IAAK8pB,GAAcrZ,EAAOqZ,WAAYhiB,MAGrC0F,GADA5O,EAAKkJ,EAAM0iB,KACEtR,EAAOta,IAER,CACX,GAAK4O,EAAKtG,OACT,IAAMmB,KAAQmF,EAAKtG,OACbmnB,EAAShmB,GACboI,EAAOlG,MAAMqc,OAAQ9e,EAAMO,GAI3BoI,EAAO6e,YAAaxnB,EAAMO,EAAMmF,EAAKohB,QAMnC1V,EAAOta,YAEJsa,EAAOta,GAKTirB,SACG/hB,EAAM0iB,UAEK1iB,EAAKmR,kBAAoBqQ,EAC3CxhB,EAAKmR,gBAAiBuR,GAGtB1iB,EAAM0iB,GAAgB,KAGvBpa,EAAWrL,KAAMnG,QAQvB6R,EAAOvP,GAAG4K,OAAO,CAChBuH,KAAM,SAAUW,GACf,OAAOgY,EAAQ7tB,MAAM,SAAU6V,GAC9B,YAAiB5U,IAAV4U,EACNvD,EAAO4C,KAAMlV,MACbA,KAAK0oB,QAAQuQ,QAAUj5B,KAAK,IAAMA,KAAK,GAAGia,eAAiBpD,GAAWmiB,eAAgBnjB,MACrF,KAAMA,EAAO9T,UAAUC,SAG3Bi3B,OAAQ,WACP,OAAOj5B,KAAKk5B,SAAUn3B,WAAW,SAAU4H,GACnB,IAAlB3J,KAAKuN,UAAoC,KAAlBvN,KAAKuN,UAAqC,IAAlBvN,KAAKuN,UAC3C6pB,GAAoBp3B,KAAM2J,GAChCgT,YAAahT,OAKvBwvB,QAAS,WACR,OAAOn5B,KAAKk5B,SAAUn3B,WAAW,SAAU4H,GAC1C,GAAuB,IAAlB3J,KAAKuN,UAAoC,KAAlBvN,KAAKuN,UAAqC,IAAlBvN,KAAKuN,SAAiB,CACzE,IAAI3N,EAASw3B,GAAoBp3B,KAAM2J,GACvC/J,EAAOw5B,aAAczvB,EAAM/J,EAAO8e,iBAKrCtc,OAAQ,WACP,OAAOpC,KAAKk5B,SAAUn3B,WAAW,SAAU4H,GACrC3J,KAAKoa,YACTpa,KAAKoa,WAAWgf,aAAczvB,EAAM3J,UAKvCwC,MAAO,WACN,OAAOxC,KAAKk5B,SAAUn3B,WAAW,SAAU4H,GACrC3J,KAAKoa,YACTpa,KAAKoa,WAAWgf,aAAczvB,EAAM3J,KAAK8b,iBAK5C2M,OAAQ,SAAUxkB,EAAUo1B,GAK3B,IAJA,IAAI1vB,EACHwJ,EAAQlP,EAAWqO,EAAOrN,OAAQhB,EAAUjE,MAASA,KACrD6B,EAAI,EAEwB,OAApB8H,EAAOwJ,EAAMtR,IAAaA,IAE5Bw3B,GAA8B,IAAlB1vB,EAAK4D,UACtB+E,EAAOma,UAAWuK,GAAQrtB,IAGtBA,EAAKyQ,aACJif,GAAY/mB,EAAO4E,SAAUvN,EAAKsQ,cAAetQ,IACrD6tB,GAAeR,GAAQrtB,EAAM,WAE9BA,EAAKyQ,WAAWkB,YAAa3R,IAI/B,OAAO3J,MAGR0oB,MAAO,WAIN,IAHA,IAAI/e,EACH9H,EAAI,EAEuB,OAAnB8H,EAAO3J,KAAK6B,IAAaA,IAAM,CAOvC,IALuB,IAAlB8H,EAAK4D,UACT+E,EAAOma,UAAWuK,GAAQrtB,GAAM,IAIzBA,EAAK+U,YACZ/U,EAAK2R,YAAa3R,EAAK+U,YAKnB/U,EAAKxF,SAAWmO,EAAO2C,SAAUtL,EAAM,YAC3CA,EAAKxF,QAAQnC,OAAS,GAIxB,OAAOhC,MAGR8T,MAAO,SAAUukB,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDt4B,KAAK4E,KAAI,WACf,OAAO0N,EAAOwB,MAAO9T,KAAMq4B,EAAeC,OAI5CgB,KAAM,SAAUzjB,GACf,OAAOgY,EAAQ7tB,MAAM,SAAU6V,GAC9B,IAAIlM,EAAO3J,KAAM,IAAO,GACvB6B,EAAI,EACJC,EAAI9B,KAAKgC,OAEV,QAAef,IAAV4U,EACJ,OAAyB,IAAlBlM,EAAK4D,SACX5D,EAAKuT,UAAU5S,QAASorB,GAAe,SACvCz0B,EAIF,GAAsB,iBAAV4U,IAAuBogB,GAAa7rB,KAAMyL,KACnDzD,EAAQmc,gBAAkBoH,GAAavrB,KAAMyL,MAC7CzD,EAAQic,oBAAsBuH,GAAmBxrB,KAAMyL,MACxDygB,IAAUR,GAAS5b,KAAMrE,IAAW,CAAE,GAAI,KAAO,GAAIlL,eAAkB,CAExEkL,EAAQA,EAAMvL,QAASurB,GAAW,aAElC,IACC,KAAOh0B,EAAIC,EAAGD,IAGU,KADvB8H,EAAO3J,KAAK6B,IAAM,IACR0L,WACT+E,EAAOma,UAAWuK,GAAQrtB,GAAM,IAChCA,EAAKuT,UAAYrH,GAInBlM,EAAO,EAGN,MAAMa,KAGJb,GACJ3J,KAAK0oB,QAAQuQ,OAAQpjB,KAEpB,KAAMA,EAAO9T,UAAUC,SAG3Bu3B,YAAa,WACZ,IAAI3jB,EAAM7T,UAAW,GAcrB,OAXA/B,KAAKk5B,SAAUn3B,WAAW,SAAU4H,GACnCiM,EAAM5V,KAAKoa,WAEX9H,EAAOma,UAAWuK,GAAQh3B,OAErB4V,GACJA,EAAI4jB,aAAc7vB,EAAM3J,SAKnB4V,IAAQA,EAAI5T,QAAU4T,EAAIrI,UAAYvN,KAAOA,KAAKyoB,UAG1DnB,OAAQ,SAAUrjB,GACjB,OAAOjE,KAAKyoB,OAAQxkB,GAAU,IAG/Bi1B,SAAU,SAAUj3B,EAAMmJ,GAGzBnJ,EAAO2D,EAAOnE,MAAO,GAAIQ,GAEzB,IAAIqR,EAAOhP,EAAMm1B,EAChBd,EAASrc,EAAK6R,EACdtsB,EAAI,EACJC,EAAI9B,KAAKgC,OACT03B,EAAM15B,KACN25B,EAAW73B,EAAI,EACf+T,EAAQ5T,EAAK,GACb+R,EAAa1B,EAAO0B,WAAY6B,GAGjC,GAAK7B,GACDlS,EAAI,GAAsB,iBAAV+T,IAChBzD,EAAQyc,YAAcqH,GAAS9rB,KAAMyL,GACxC,OAAO7V,KAAKqE,MAAK,SAAUmI,GAC1B,IAAI6Y,EAAOqU,EAAInmB,GAAI/G,GACdwH,IACJ/R,EAAK,GAAK4T,EAAMlV,KAAMX,KAAMwM,EAAO6Y,EAAKiU,SAEzCjU,EAAK6T,SAAUj3B,EAAMmJ,MAIvB,GAAKtJ,IAEJwR,GADA6a,EAAW7b,EAAOomB,cAAez2B,EAAMjC,KAAM,GAAIia,eAAe,EAAOja,OACtD0e,WAEmB,IAA/ByP,EAAS1U,WAAWzX,SACxBmsB,EAAW7a,GAGPA,GAAQ,CAMZ,IAJAmmB,GADAd,EAAUrmB,EAAO1N,IAAKoyB,GAAQ7I,EAAU,UAAYmJ,KAC/Bt1B,OAIbH,EAAIC,EAAGD,IACdyC,EAAO6pB,EAEFtsB,IAAM83B,IACVr1B,EAAOgO,EAAOwB,MAAOxP,GAAM,GAAM,GAG5Bm1B,GACJnnB,EAAOlO,MAAOu0B,EAAS3B,GAAQ1yB,EAAM,YAIvC8G,EAASzK,KAAMX,KAAK6B,GAAIyC,EAAMzC,GAG/B,GAAK43B,EAOJ,IANAnd,EAAMqc,EAASA,EAAQ32B,OAAS,GAAIiY,cAGpC3H,EAAO1N,IAAK+zB,EAASpB,IAGf11B,EAAI,EAAGA,EAAI43B,EAAY53B,IAC5ByC,EAAOq0B,EAAS92B,GACXs0B,GAAY/rB,KAAM9F,EAAK4F,MAAQ,MAClCoI,EAAOsa,MAAOtoB,EAAM,eAAkBgO,EAAO4E,SAAUoF,EAAKhY,KAExDA,EAAKqP,IAEJrB,EAAOsnB,UACXtnB,EAAOsnB,SAAUt1B,EAAKqP,KAGvBrB,EAAOuC,YAAcvQ,EAAK4Q,MAAQ5Q,EAAKma,aAAena,EAAK4Y,WAAa,IAAK5S,QAAS+rB,GAAc,MAOxGlI,EAAW7a,EAAQ,KAIrB,OAAOtT,QAITsS,EAAOjO,KAAK,CACXw1B,SAAU,SACVC,UAAW,UACXV,aAAc,SACdW,YAAa,QACbC,WAAY,gBACV,SAAUl1B,EAAMiuB,GAClBzgB,EAAOvP,GAAI+B,GAAS,SAAUb,GAO7B,IANA,IAAIkP,EACHtR,EAAI,EACJuR,EAAM,GACN6mB,EAAS3nB,EAAQrO,GACjBuP,EAAOymB,EAAOj4B,OAAS,EAEhBH,GAAK2R,EAAM3R,IAClBsR,EAAQtR,IAAM2R,EAAOxT,KAAOA,KAAK8T,OAAM,GACvCxB,EAAQ2nB,EAAOp4B,IAAMkxB,GAAY5f,GAGjCvM,EAAKnF,MAAO2R,EAAKD,EAAMF,OAGxB,OAAOjT,KAAKkT,UAAWE,OAKzB,IAAI8mB,GAgECC,GA/DJC,GAAc,GAQf,SAASC,GAAev1B,EAAMwX,GAC7B,IAAIgP,EACH3hB,EAAO2I,EAAQgK,EAAIjB,cAAevW,IAAS+0B,SAAUvd,EAAIwO,MAGzDwP,EAAUtzB,EAAOuzB,0BAA6BjP,EAAQtkB,EAAOuzB,wBAAyB5wB,EAAM,KAI3F2hB,EAAMgP,QAAUhoB,EAAOsb,IAAKjkB,EAAM,GAAK,WAMzC,OAFAA,EAAK2d,SAEEgT,EAOR,SAASE,GAAgBvlB,GACxB,IAAIqH,EAAMzF,EACTyjB,EAAUF,GAAanlB,GA0BxB,OAxBMqlB,IAIY,UAHjBA,EAAUD,GAAeplB,EAAUqH,KAGPge,KAM3Bhe,IAHA4d,IAAUA,IAAU5nB,EAAQ,mDAAoDunB,SAAUvd,EAAIF,kBAG9E,GAAI6K,eAAiBiT,GAAQ,GAAIlT,iBAAkBnQ,UAG/D4jB,QACJne,EAAIoe,QAEJJ,EAAUD,GAAeplB,EAAUqH,GACnC4d,GAAO5S,UAIR8S,GAAanlB,GAAaqlB,GAGpBA,EAOPloB,EAAQuoB,iBAAmB,WAC1B,OAA4B,MAAvBR,GACGA,IAIRA,IAAsB,GAKtBrP,EAAOjU,EAASwD,qBAAsB,QAAU,KACjCyQ,EAAKQ,OAMpBlQ,EAAMvE,EAASwE,cAAe,QAC9BgQ,EAAYxU,EAASwE,cAAe,QAC1BiQ,MAAMC,QAAU,iEAC1BT,EAAKnO,YAAa0O,GAAY1O,YAAavB,UAI/BA,EAAIkQ,MAAME,OAASL,IAE9B/P,EAAIkQ,MAAMC,QAGT,iJAGDnQ,EAAIuB,YAAa9F,EAASwE,cAAe,QAAUiQ,MAAMsP,MAAQ,MACjET,GAA0C,IAApB/e,EAAIqQ,aAG3BX,EAAKxP,YAAa+P,GAEX8O,SA3BP,GAHA,IAAI/e,EAAK0P,EAAMO,GAkCjB,IAMIwP,GAAWC,GANXC,GAAU,UAEVC,GAAY,IAAI3wB,OAAQ,KAAOmjB,EAAO,kBAAmB,KAK5DyN,GAAY,4BAkHb,SAASC,GAAcC,EAAaC,GAEnC,MAAO,CACNnoB,IAAK,WACJ,IAAIooB,EAAYF,IAEhB,GAAkB,MAAbE,EAAL,CAMA,IAAKA,EAUL,OAAQr7B,KAAKiT,IAAMmoB,GAAQ35B,MAAOzB,KAAM+B,kBANhC/B,KAAKiT,OAhIXjM,EAAOs0B,kBACXT,GAAY,SAAUlxB,GAIrB,OAAKA,EAAKsQ,cAAcsC,YAAYgf,OAC5B5xB,EAAKsQ,cAAcsC,YAAY+e,iBAAkB3xB,EAAM,MAGxD3C,EAAOs0B,iBAAkB3xB,EAAM,OAGvCmxB,GAAS,SAAUnxB,EAAM7E,EAAM02B,GAC9B,IAAIZ,EAAOa,EAAUC,EAAUtoB,EAC9BkY,EAAQ3hB,EAAK2hB,MAqCd,OAhCAlY,GAHAooB,EAAWA,GAAYX,GAAWlxB,IAGjB6xB,EAASG,iBAAkB72B,IAAU02B,EAAU12B,QAAS7D,EAEpEu6B,IAES,KAARpoB,GAAed,EAAO4E,SAAUvN,EAAKsQ,cAAetQ,KACxDyJ,EAAMd,EAAOgZ,MAAO3hB,EAAM7E,IAOtBk2B,GAAU5wB,KAAMgJ,IAAS2nB,GAAQ3wB,KAAMtF,KAG3C81B,EAAQtP,EAAMsP,MACda,EAAWnQ,EAAMmQ,SACjBC,EAAWpQ,EAAMoQ,SAGjBpQ,EAAMmQ,SAAWnQ,EAAMoQ,SAAWpQ,EAAMsP,MAAQxnB,EAChDA,EAAMooB,EAASZ,MAGftP,EAAMsP,MAAQA,EACdtP,EAAMmQ,SAAWA,EACjBnQ,EAAMoQ,SAAWA,SAMJz6B,IAARmS,EACNA,EACAA,EAAM,KAEGyD,EAASuF,gBAAgBwf,eACpCf,GAAY,SAAUlxB,GACrB,OAAOA,EAAKiyB,cAGbd,GAAS,SAAUnxB,EAAM7E,EAAM02B,GAC9B,IAAIK,EAAMC,EAAIC,EAAQ3oB,EACrBkY,EAAQ3hB,EAAK2hB,MAyCd,OAlCY,OAJZlY,GADAooB,EAAWA,GAAYX,GAAWlxB,IACjB6xB,EAAU12B,QAAS7D,IAIhBqqB,GAASA,EAAOxmB,KACnCsO,EAAMkY,EAAOxmB,IAUTk2B,GAAU5wB,KAAMgJ,KAAU6nB,GAAU7wB,KAAMtF,KAG9C+2B,EAAOvQ,EAAMuQ,MAEbE,GADAD,EAAKnyB,EAAKqyB,eACKF,EAAGD,QAIjBC,EAAGD,KAAOlyB,EAAKiyB,aAAaC,MAE7BvQ,EAAMuQ,KAAgB,aAAT/2B,EAAsB,MAAQsO,EAC3CA,EAAMkY,EAAM2Q,UAAY,KAGxB3Q,EAAMuQ,KAAOA,EACRE,IACJD,EAAGD,KAAOE,SAMG96B,IAARmS,EACNA,EACAA,EAAM,IAAM,SAmCf,WAEC,IAAIgI,EAAKkQ,EAAO/f,EAAG2wB,EAAkBC,EACpCC,EAA0BC,EA+D3B,SAASC,IAER,IAAIlhB,EAAK0P,EAAMO,EAAWvF,GAE1BgF,EAAOjU,EAASwD,qBAAsB,QAAU,KACjCyQ,EAAKQ,QAMpBlQ,EAAMvE,EAASwE,cAAe,QAC9BgQ,EAAYxU,EAASwE,cAAe,QAC1BiQ,MAAMC,QAAU,iEAC1BT,EAAKnO,YAAa0O,GAAY1O,YAAavB,GAE3CA,EAAIkQ,MAAMC,QAGT,uKAMD2Q,EAAmBC,GAAuB,EAC1CE,GAAyB,EAGpBr1B,EAAOs0B,mBACXY,EAA0E,QAArDl1B,EAAOs0B,iBAAkBlgB,EAAK,OAAU,IAAKoB,IAClE2f,EACwE,SAArEn1B,EAAOs0B,iBAAkBlgB,EAAK,OAAU,CAAEwf,MAAO,QAAUA,OAM9D9U,EAAW1K,EAAIuB,YAAa9F,EAASwE,cAAe,SAG3CiQ,MAAMC,QAAUnQ,EAAIkQ,MAAMC,QAGlC,8HAEDzF,EAASwF,MAAMiR,YAAczW,EAASwF,MAAMsP,MAAQ,IACpDxf,EAAIkQ,MAAMsP,MAAQ,MAElByB,GACE3nB,YAAc1N,EAAOs0B,iBAAkBxV,EAAU,OAAU,IAAKyW,aAElEnhB,EAAIE,YAAawK,IAUlB1K,EAAI8B,UAAY,+CAChB4I,EAAW1K,EAAIf,qBAAsB,OAC3B,GAAIiR,MAAMC,QAAU,4CAC9B6Q,EAA0D,IAA/BtW,EAAU,GAAI0W,gBAExC1W,EAAU,GAAIwF,MAAMgP,QAAU,GAC9BxU,EAAU,GAAIwF,MAAMgP,QAAU,OAC9B8B,EAA0D,IAA/BtW,EAAU,GAAI0W,cAG1C1R,EAAKxP,YAAa+P,KApInBjQ,EAAMvE,EAASwE,cAAe,QAC1B6B,UAAY,sEAEhBoO,GADA/f,EAAI6P,EAAIf,qBAAsB,KAAO,KACxB9O,EAAE+f,SAOfA,EAAMC,QAAU,wBAIhBnZ,EAAQqqB,QAA4B,QAAlBnR,EAAMmR,QAIxBrqB,EAAQsqB,WAAapR,EAAMoR,SAE3BthB,EAAIkQ,MAAMqR,eAAiB,cAC3BvhB,EAAIqT,WAAW,GAAOnD,MAAMqR,eAAiB,GAC7CvqB,EAAQwqB,gBAA+C,gBAA7BxhB,EAAIkQ,MAAMqR,eAIpCvqB,EAAQyqB,UAAgC,KAApBvR,EAAMuR,WAA2C,KAAvBvR,EAAMwR,cACzB,KAA1BxR,EAAMyR,gBAEPzqB,EAAO3E,OAAOyE,EAAS,CACtB4qB,sBAAuB,WAItB,OAHiC,MAA5BZ,GACJE,IAEMF,GAGRa,kBAAmB,WAIlB,OAH6B,MAAxBd,GACJG,IAEMH,GAGRe,cAAe,WAId,OAHyB,MAApBhB,GACJI,IAEMJ,GAIRiB,oBAAqB,WAIpB,OAH+B,MAA1Bd,GACJC,IAEMD,MA9DV,GAiJA/pB,EAAO8qB,KAAO,SAAUzzB,EAAMxF,EAASiH,EAAUnJ,GAChD,IAAImR,EAAKtO,EACR+U,EAAM,GAGP,IAAM/U,KAAQX,EACb0V,EAAK/U,GAAS6E,EAAK2hB,MAAOxmB,GAC1B6E,EAAK2hB,MAAOxmB,GAASX,EAASW,GAM/B,IAAMA,KAHNsO,EAAMhI,EAAS3J,MAAOkI,EAAM1H,GAAQ,IAGtBkC,EACbwF,EAAK2hB,MAAOxmB,GAAS+U,EAAK/U,GAG3B,OAAOsO,GAIR,IACEiqB,GAAS,kBACVC,GAAW,wBAIXC,GAAe,4BACfC,GAAY,IAAInzB,OAAQ,KAAOmjB,EAAO,SAAU,KAChDiQ,GAAU,IAAIpzB,OAAQ,YAAcmjB,EAAO,IAAK,KAEhDkQ,GAAU,CAAEC,SAAU,WAAYC,WAAY,SAAUtD,QAAS,SACjEuD,GAAqB,CACpBC,cAAe,IACfC,WAAY,OAGbC,GAAc,CAAE,SAAU,IAAK,MAAO,MAIvC,SAASC,GAAgB3S,EAAOxmB,GAG/B,GAAKA,KAAQwmB,EACZ,OAAOxmB,EAQR,IAJA,IAAIo5B,EAAUp5B,EAAK0gB,OAAO,GAAG1S,cAAgBhO,EAAKqB,MAAM,GACvDg4B,EAAWr5B,EACXjD,EAAIm8B,GAAYh8B,OAETH,KAEP,IADAiD,EAAOk5B,GAAan8B,GAAMq8B,KACb5S,EACZ,OAAOxmB,EAIT,OAAOq5B,EAGR,SAASC,GAAUlgB,EAAUmgB,GAM5B,IALA,IAAI/D,EAAS3wB,EAAM20B,EAClB9T,EAAS,GACThe,EAAQ,EACRxK,EAASkc,EAASlc,OAEXwK,EAAQxK,EAAQwK,KACvB7C,EAAOuU,EAAU1R,IACN8e,QAIXd,EAAQhe,GAAU8F,EAAOsa,MAAOjjB,EAAM,cACtC2wB,EAAU3wB,EAAK2hB,MAAMgP,QAChB+D,GAGE7T,EAAQhe,IAAuB,SAAZ8tB,IACxB3wB,EAAK2hB,MAAMgP,QAAU,IAMM,KAAvB3wB,EAAK2hB,MAAMgP,SAAkB3M,EAAUhkB,KAC3C6gB,EAAQhe,GAAU8F,EAAOsa,MAAOjjB,EAAM,aAAc6wB,GAAe7wB,EAAKsL,cAGzEqpB,EAAS3Q,EAAUhkB,IAEd2wB,GAAuB,SAAZA,IAAuBgE,IACtChsB,EAAOsa,MAAOjjB,EAAM,aAAc20B,EAAShE,EAAUhoB,EAAOsb,IAAKjkB,EAAM,cAO1E,IAAM6C,EAAQ,EAAGA,EAAQxK,EAAQwK,KAChC7C,EAAOuU,EAAU1R,IACN8e,QAGL+S,GAA+B,SAAvB10B,EAAK2hB,MAAMgP,SAA6C,KAAvB3wB,EAAK2hB,MAAMgP,UACzD3wB,EAAK2hB,MAAMgP,QAAU+D,EAAO7T,EAAQhe,IAAW,GAAK,SAItD,OAAO0R,EAGR,SAASqgB,GAAmB50B,EAAMkM,EAAO2oB,GACxC,IAAI9oB,EAAU8nB,GAAUtjB,KAAMrE,GAC9B,OAAOH,EAENtB,KAAKkB,IAAK,EAAGI,EAAS,IAAQ8oB,GAAY,KAAU9oB,EAAS,IAAO,MACpEG,EAGF,SAAS4oB,GAAsB90B,EAAM7E,EAAM8I,EAAO8wB,EAAaC,GAS9D,IARA,IAAI98B,EAAI+L,KAAY8wB,EAAc,SAAW,WAE5C,EAES,UAAT55B,EAAmB,EAAI,EAEvBqZ,EAAM,EAECtc,EAAI,EAAGA,GAAK,EAEJ,WAAV+L,IACJuQ,GAAO7L,EAAOsb,IAAKjkB,EAAMiE,EAAQ8f,EAAW7rB,IAAK,EAAM88B,IAGnDD,GAEW,YAAV9wB,IACJuQ,GAAO7L,EAAOsb,IAAKjkB,EAAM,UAAY+jB,EAAW7rB,IAAK,EAAM88B,IAI7C,WAAV/wB,IACJuQ,GAAO7L,EAAOsb,IAAKjkB,EAAM,SAAW+jB,EAAW7rB,GAAM,SAAS,EAAM88B,MAIrExgB,GAAO7L,EAAOsb,IAAKjkB,EAAM,UAAY+jB,EAAW7rB,IAAK,EAAM88B,GAG5C,YAAV/wB,IACJuQ,GAAO7L,EAAOsb,IAAKjkB,EAAM,SAAW+jB,EAAW7rB,GAAM,SAAS,EAAM88B,KAKvE,OAAOxgB,EAGR,SAASygB,GAAkBj1B,EAAM7E,EAAM8I,GAGtC,IAAIixB,GAAmB,EACtB1gB,EAAe,UAATrZ,EAAmB6E,EAAK8hB,YAAc9hB,EAAK6yB,aACjDmC,EAAS9D,GAAWlxB,GACpB+0B,EAActsB,EAAQyqB,WAAgE,eAAnDvqB,EAAOsb,IAAKjkB,EAAM,aAAa,EAAOg1B,GAK1E,GAAKxgB,GAAO,GAAY,MAAPA,EAAc,CAQ9B,KANAA,EAAM2c,GAAQnxB,EAAM7E,EAAM65B,IACf,GAAY,MAAPxgB,KACfA,EAAMxU,EAAK2hB,MAAOxmB,IAIdk2B,GAAU5wB,KAAK+T,GACnB,OAAOA,EAKR0gB,EAAmBH,IAAiBtsB,EAAQ6qB,qBAAuB9e,IAAQxU,EAAK2hB,MAAOxmB,IAGvFqZ,EAAMzJ,WAAYyJ,IAAS,EAI5B,OAASA,EACRsgB,GACC90B,EACA7E,EACA8I,IAAW8wB,EAAc,SAAW,WACpCG,EACAF,GAEE,KA2SL,SAASG,GAAOn1B,EAAMxF,EAAS+C,EAAMmE,EAAK0zB,GACzC,OAAO,IAAID,GAAMn6B,UAAU4N,KAAM5I,EAAMxF,EAAS+C,EAAMmE,EAAK0zB,GAzS5DzsB,EAAO3E,OAAO,CAGbqxB,SAAU,CACTvC,QAAS,CACRxpB,IAAK,SAAUtJ,EAAM6xB,GACpB,GAAKA,EAAW,CAEf,IAAIpoB,EAAM0nB,GAAQnxB,EAAM,WACxB,MAAe,KAARyJ,EAAa,IAAMA,MAO9B6rB,UAAW,CACV,aAAe,EACf,aAAe,EACf,UAAY,EACZ,YAAc,EACd,YAAc,EACd,YAAc,EACd,SAAW,EACX,OAAS,EACT,SAAW,EACX,QAAU,EACV,QAAU,EACV,MAAQ,GAKTC,SAAU,CAET,MAAS9sB,EAAQsqB,SAAW,WAAa,cAI1CpR,MAAO,SAAU3hB,EAAM7E,EAAM+Q,EAAOjI,GAEnC,GAAMjE,GAA0B,IAAlBA,EAAK4D,UAAoC,IAAlB5D,EAAK4D,UAAmB5D,EAAK2hB,MAAlE,CAKA,IAAIlY,EAAKlJ,EAAM+iB,EACdkR,EAAW7rB,EAAOyC,UAAWjQ,GAC7BwmB,EAAQ3hB,EAAK2hB,MASd,GAPAxmB,EAAOwN,EAAO4sB,SAAUf,KAAgB7rB,EAAO4sB,SAAUf,GAAaF,GAAgB3S,EAAO6S,IAI7FlR,EAAQ3a,EAAO0sB,SAAUl6B,IAAUwN,EAAO0sB,SAAUb,QAGrCl9B,IAAV4U,EAsCJ,OAAKoX,GAAS,QAASA,QAAqDhsB,KAA3CmS,EAAM6Z,EAAMha,IAAKtJ,GAAM,EAAOiE,IACvDwF,EAIDkY,EAAOxmB,GAhCd,GAPc,WAHdoF,SAAc2L,KAGazC,EAAMqqB,GAAQvjB,KAAMrE,MAC9CA,GAAUzC,EAAI,GAAK,GAAMA,EAAI,GAAKsB,WAAYpC,EAAOsb,IAAKjkB,EAAM7E,IAEhEoF,EAAO,UAIM,MAAT2L,GAAiBA,GAAUA,IAKlB,WAAT3L,GAAsBoI,EAAO2sB,UAAWd,KAC5CtoB,GAAS,MAKJzD,EAAQwqB,iBAA6B,KAAV/mB,GAA+C,IAA/B/Q,EAAK2B,QAAQ,gBAC7D6kB,EAAOxmB,GAAS,YAIXmoB,KAAW,QAASA,SAAwDhsB,KAA7C4U,EAAQoX,EAAMyM,IAAK/vB,EAAMkM,EAAOjI,KAIpE,IACC0d,EAAOxmB,GAAS+Q,EACf,MAAMrL,OAcXojB,IAAK,SAAUjkB,EAAM7E,EAAM8I,EAAO+wB,GACjC,IAAIzvB,EAAKiP,EAAK8O,EACbkR,EAAW7rB,EAAOyC,UAAWjQ,GAyB9B,OAtBAA,EAAOwN,EAAO4sB,SAAUf,KAAgB7rB,EAAO4sB,SAAUf,GAAaF,GAAgBt0B,EAAK2hB,MAAO6S,KAIlGlR,EAAQ3a,EAAO0sB,SAAUl6B,IAAUwN,EAAO0sB,SAAUb,KAGtC,QAASlR,IACtB9O,EAAM8O,EAAMha,IAAKtJ,GAAM,EAAMiE,SAIjB3M,IAARkd,IACJA,EAAM2c,GAAQnxB,EAAM7E,EAAM65B,IAId,WAARxgB,GAAoBrZ,KAAQ+4B,KAChC1f,EAAM0f,GAAoB/4B,IAIZ,KAAV8I,GAAgBA,GACpBsB,EAAMwF,WAAYyJ,IACD,IAAVvQ,GAAkB0E,EAAOmC,UAAWvF,GAAQA,GAAO,EAAIiP,GAExDA,KAIT7L,EAAOjO,KAAK,CAAE,SAAU,UAAW,SAAUxC,EAAGiD,GAC/CwN,EAAO0sB,SAAUl6B,GAAS,CACzBmO,IAAK,SAAUtJ,EAAM6xB,EAAU5tB,GAC9B,GAAK4tB,EAGJ,OAAO+B,GAAanzB,KAAMkI,EAAOsb,IAAKjkB,EAAM,aAAsC,IAArBA,EAAK8hB,YACjEnZ,EAAO8qB,KAAMzzB,EAAM+zB,IAAS,WAC3B,OAAOkB,GAAkBj1B,EAAM7E,EAAM8I,MAEtCgxB,GAAkBj1B,EAAM7E,EAAM8I,IAIjC8rB,IAAK,SAAU/vB,EAAMkM,EAAOjI,GAC3B,IAAI+wB,EAAS/wB,GAASitB,GAAWlxB,GACjC,OAAO40B,GAAmB50B,EAAMkM,EAAOjI,EACtC6wB,GACC90B,EACA7E,EACA8I,EACAwE,EAAQyqB,WAAgE,eAAnDvqB,EAAOsb,IAAKjkB,EAAM,aAAa,EAAOg1B,GAC3DA,GACG,QAMFvsB,EAAQqqB,UACbnqB,EAAO0sB,SAASvC,QAAU,CACzBxpB,IAAK,SAAUtJ,EAAM6xB,GAEpB,OAAO8B,GAASlzB,MAAOoxB,GAAY7xB,EAAKiyB,aAAejyB,EAAKiyB,aAAa32B,OAAS0E,EAAK2hB,MAAMrmB,SAAW,IACrG,IAAOyP,WAAYrK,OAAO80B,IAAS,GACrC3D,EAAW,IAAM,IAGnB9B,IAAK,SAAU/vB,EAAMkM,GACpB,IAAIyV,EAAQ3hB,EAAK2hB,MAChBsQ,EAAejyB,EAAKiyB,aACpBa,EAAUnqB,EAAOmC,UAAWoB,GAAU,iBAA2B,IAARA,EAAc,IAAM,GAC7E5Q,EAAS22B,GAAgBA,EAAa32B,QAAUqmB,EAAMrmB,QAAU,GAIjEqmB,EAAME,KAAO,GAIN3V,GAAS,GAAe,KAAVA,IAC6B,KAAhDvD,EAAO3S,KAAMsF,EAAOqF,QAAS+yB,GAAQ,MACrC/R,EAAMxQ,kBAKPwQ,EAAMxQ,gBAAiB,UAGR,KAAVjF,GAAgB+lB,IAAiBA,EAAa32B,UAMpDqmB,EAAMrmB,OAASo4B,GAAOjzB,KAAMnF,GAC3BA,EAAOqF,QAAS+yB,GAAQZ,GACxBx3B,EAAS,IAAMw3B,MAKnBnqB,EAAO0sB,SAASzC,YAAcrB,GAAc9oB,EAAQ+qB,qBACnD,SAAUxzB,EAAM6xB,GACf,GAAKA,EAGJ,OAAOlpB,EAAO8qB,KAAMzzB,EAAM,CAAE,QAAW,gBACtCmxB,GAAQ,CAAEnxB,EAAM,mBAMpB2I,EAAOjO,KAAK,CACX+6B,OAAQ,GACRC,QAAS,GACTC,OAAQ,UACN,SAAUC,EAAQC,GACpBltB,EAAO0sB,SAAUO,EAASC,GAAW,CACpCC,OAAQ,SAAU5pB,GAOjB,IANA,IAAIhU,EAAI,EACP69B,EAAW,GAGXC,EAAyB,iBAAV9pB,EAAqBA,EAAM7S,MAAM,KAAO,CAAE6S,GAElDhU,EAAI,EAAGA,IACd69B,EAAUH,EAAS7R,EAAW7rB,GAAM29B,GACnCG,EAAO99B,IAAO89B,EAAO99B,EAAI,IAAO89B,EAAO,GAGzC,OAAOD,IAIH3E,GAAQ3wB,KAAMm1B,KACnBjtB,EAAO0sB,SAAUO,EAASC,GAAS9F,IAAM6E,OAI3CjsB,EAAOvP,GAAG4K,OAAO,CAChBigB,IAAK,SAAU9oB,EAAM+Q,GACpB,OAAOgY,EAAQ7tB,MAAM,SAAU2J,EAAM7E,EAAM+Q,GAC1C,IAAI8oB,EAAQlxB,EACX7I,EAAM,GACN/C,EAAI,EAEL,GAAKyQ,EAAO4B,QAASpP,GAAS,CAI7B,IAHA65B,EAAS9D,GAAWlxB,GACpB8D,EAAM3I,EAAK9C,OAEHH,EAAI4L,EAAK5L,IAChB+C,EAAKE,EAAMjD,IAAQyQ,EAAOsb,IAAKjkB,EAAM7E,EAAMjD,IAAK,EAAO88B,GAGxD,OAAO/5B,EAGR,YAAiB3D,IAAV4U,EACNvD,EAAOgZ,MAAO3hB,EAAM7E,EAAM+Q,GAC1BvD,EAAOsb,IAAKjkB,EAAM7E,KACjBA,EAAM+Q,EAAO9T,UAAUC,OAAS,IAEpCq8B,KAAM,WACL,OAAOD,GAAUp+B,MAAM,IAExB4/B,KAAM,WACL,OAAOxB,GAAUp+B,OAElB6/B,OAAQ,SAAU7W,GACjB,MAAsB,kBAAVA,EACJA,EAAQhpB,KAAKq+B,OAASr+B,KAAK4/B,OAG5B5/B,KAAKqE,MAAK,WACXspB,EAAU3tB,MACdsS,EAAQtS,MAAOq+B,OAEf/rB,EAAQtS,MAAO4/B,aAUnBttB,EAAOwsB,MAAQA,GAEfA,GAAMn6B,UAAY,CACjBoB,YAAa+4B,GACbvsB,KAAM,SAAU5I,EAAMxF,EAAS+C,EAAMmE,EAAK0zB,EAAQe,GACjD9/B,KAAK2J,KAAOA,EACZ3J,KAAKkH,KAAOA,EACZlH,KAAK++B,OAASA,GAAU,QACxB/+B,KAAKmE,QAAUA,EACfnE,KAAK8f,MAAQ9f,KAAKiW,IAAMjW,KAAK2b,MAC7B3b,KAAKqL,IAAMA,EACXrL,KAAK8/B,KAAOA,IAAUxtB,EAAO2sB,UAAW/3B,GAAS,GAAK,OAEvDyU,IAAK,WACJ,IAAIsR,EAAQ6R,GAAMiB,UAAW//B,KAAKkH,MAElC,OAAO+lB,GAASA,EAAMha,IACrBga,EAAMha,IAAKjT,MACX8+B,GAAMiB,UAAUlO,SAAS5e,IAAKjT,OAEhCggC,IAAK,SAAUC,GACd,IAAIC,EACHjT,EAAQ6R,GAAMiB,UAAW//B,KAAKkH,MAoB/B,OAlBKlH,KAAKmE,QAAQg8B,SACjBngC,KAAKsmB,IAAM4Z,EAAQ5tB,EAAOysB,OAAQ/+B,KAAK++B,QACtCkB,EAASjgC,KAAKmE,QAAQg8B,SAAWF,EAAS,EAAG,EAAGjgC,KAAKmE,QAAQg8B,UAG9DngC,KAAKsmB,IAAM4Z,EAAQD,EAEpBjgC,KAAKiW,KAAQjW,KAAKqL,IAAMrL,KAAK8f,OAAUogB,EAAQlgC,KAAK8f,MAE/C9f,KAAKmE,QAAQi8B,MACjBpgC,KAAKmE,QAAQi8B,KAAKz/B,KAAMX,KAAK2J,KAAM3J,KAAKiW,IAAKjW,MAGzCitB,GAASA,EAAMyM,IACnBzM,EAAMyM,IAAK15B,MAEX8+B,GAAMiB,UAAUlO,SAAS6H,IAAK15B,MAExBA,OAIT8+B,GAAMn6B,UAAU4N,KAAK5N,UAAYm6B,GAAMn6B,UAEvCm6B,GAAMiB,UAAY,CACjBlO,SAAU,CACT5e,IAAK,SAAUotB,GACd,IAAI51B,EAEJ,OAAiC,MAA5B41B,EAAM12B,KAAM02B,EAAMn5B,OACpBm5B,EAAM12B,KAAK2hB,OAA2C,MAAlC+U,EAAM12B,KAAK2hB,MAAO+U,EAAMn5B,OAQ/CuD,EAAS6H,EAAOsb,IAAKyS,EAAM12B,KAAM02B,EAAMn5B,KAAM,MAEhB,SAAXuD,EAAwBA,EAAJ,EAT9B41B,EAAM12B,KAAM02B,EAAMn5B,OAW3BwyB,IAAK,SAAU2G,GAGT/tB,EAAOguB,GAAGF,KAAMC,EAAMn5B,MAC1BoL,EAAOguB,GAAGF,KAAMC,EAAMn5B,MAAQm5B,GACnBA,EAAM12B,KAAK2hB,QAAgE,MAArD+U,EAAM12B,KAAK2hB,MAAOhZ,EAAO4sB,SAAUmB,EAAMn5B,QAAoBoL,EAAO0sB,SAAUqB,EAAMn5B,OACrHoL,EAAOgZ,MAAO+U,EAAM12B,KAAM02B,EAAMn5B,KAAMm5B,EAAMpqB,IAAMoqB,EAAMP,MAExDO,EAAM12B,KAAM02B,EAAMn5B,MAASm5B,EAAMpqB,OASrC6oB,GAAMiB,UAAUrM,UAAYoL,GAAMiB,UAAUzM,WAAa,CACxDoG,IAAK,SAAU2G,GACTA,EAAM12B,KAAK4D,UAAY8yB,EAAM12B,KAAKyQ,aACtCimB,EAAM12B,KAAM02B,EAAMn5B,MAASm5B,EAAMpqB,OAKpC3D,EAAOysB,OAAS,CACfwB,OAAQ,SAAUz/B,GACjB,OAAOA,GAER0/B,MAAO,SAAU1/B,GAChB,MAAO,GAAMsT,KAAKqsB,IAAK3/B,EAAIsT,KAAKssB,IAAO,IAIzCpuB,EAAOguB,GAAKxB,GAAMn6B,UAAU4N,KAG5BD,EAAOguB,GAAGF,KAAO,GAKjB,IACCO,GAAOC,GA+oBHzjB,GAAO/B,GAAK3J,GAAQlG,GAAGs1B,GA9oB3BC,GAAW,yBACXC,GAAS,IAAI12B,OAAQ,iBAAmBmjB,EAAO,cAAe,KAC9DwT,GAAO,cACPC,GAAsB,CA+FvB,SAA2Bt3B,EAAMipB,EAAOsO,GAEvC,IAAIh6B,EAAM2O,EAAOgqB,EAAQQ,EAAOpT,EAAOkU,EAAS7G,EAC/C8G,EAAOphC,KACP80B,EAAO,GACPxJ,EAAQ3hB,EAAK2hB,MACbgT,EAAS30B,EAAK4D,UAAYogB,EAAUhkB,GACpC03B,EAAW/uB,EAAOsa,MAAOjjB,EAAM,UAoEhC,IAAMzC,KAjEAg6B,EAAKpU,QAEa,OADvBG,EAAQ3a,EAAO4a,YAAavjB,EAAM,OACvB23B,WACVrU,EAAMqU,SAAW,EACjBH,EAAUlU,EAAMvE,MAAMJ,KACtB2E,EAAMvE,MAAMJ,KAAO,WACZ2E,EAAMqU,UACXH,MAIHlU,EAAMqU,WAENF,EAAKlY,QAAO,WAGXkY,EAAKlY,QAAO,WACX+D,EAAMqU,WACAhvB,EAAOwa,MAAOnjB,EAAM,MAAO3H,QAChCirB,EAAMvE,MAAMJ,cAOO,IAAlB3e,EAAK4D,WAAoB,WAAYqlB,GAAS,UAAWA,KAK7DsO,EAAKK,SAAW,CAAEjW,EAAMiW,SAAUjW,EAAMkW,UAAWlW,EAAMmW,WAUnC,YAHK,UAH3BnH,EAAUhoB,EAAOsb,IAAKjkB,EAAM,YAI3B2I,EAAOsa,MAAOjjB,EAAM,eAAkB6wB,GAAgB7wB,EAAKsL,UAAaqlB,IAEP,SAAhChoB,EAAOsb,IAAKjkB,EAAM,WAI7CyI,EAAQgZ,wBAA8D,WAApCoP,GAAgB7wB,EAAKsL,UAG5DqW,EAAME,KAAO,EAFbF,EAAMgP,QAAU,iBAOd4G,EAAKK,WACTjW,EAAMiW,SAAW,SACXnvB,EAAQuoB,oBACbyG,EAAKlY,QAAO,WACXoC,EAAMiW,SAAWL,EAAKK,SAAU,GAChCjW,EAAMkW,UAAYN,EAAKK,SAAU,GACjCjW,EAAMmW,UAAYP,EAAKK,SAAU,OAMtB3O,EAEb,GADA/c,EAAQ+c,EAAO1rB,GACV45B,GAAS5mB,KAAMrE,GAAU,CAG7B,UAFO+c,EAAO1rB,GACd24B,EAASA,GAAoB,WAAVhqB,EACdA,KAAYyoB,EAAS,OAAS,QAAW,CAG7C,GAAe,SAAVzoB,IAAoBwrB,QAAiCpgC,IAArBogC,EAAUn6B,GAG9C,SAFAo3B,GAAS,EAKXxJ,EAAM5tB,GAASm6B,GAAYA,EAAUn6B,IAAUoL,EAAOgZ,MAAO3hB,EAAMzC,QAInEozB,OAAUr5B,EAIZ,GAAMqR,EAAOqC,cAAemgB,GAwCqD,YAAxD,SAAZwF,EAAqBE,GAAgB7wB,EAAKsL,UAAaqlB,KACnEhP,EAAMgP,QAAUA,QAdhB,IAAMpzB,KA1BDm6B,EACC,WAAYA,IAChB/C,EAAS+C,EAAS/C,QAGnB+C,EAAW/uB,EAAOsa,MAAOjjB,EAAM,SAAU,IAIrCk2B,IACJwB,EAAS/C,QAAUA,GAEfA,EACJhsB,EAAQ3I,GAAO00B,OAEf+C,EAAK/pB,MAAK,WACT/E,EAAQ3I,GAAOi2B,UAGjBwB,EAAK/pB,MAAK,WACT,IAAInQ,EAEJ,IAAMA,KADNoL,EAAOua,YAAaljB,EAAM,UACZmrB,EACbxiB,EAAOgZ,MAAO3hB,EAAMzC,EAAM4tB,EAAM5tB,OAGpB4tB,EACbuL,EAAQqB,GAAapD,EAAS+C,EAAUn6B,GAAS,EAAGA,EAAMk6B,GAElDl6B,KAAQm6B,IACfA,EAAUn6B,GAASm5B,EAAMvgB,MACpBwe,IACJ+B,EAAMh1B,IAAMg1B,EAAMvgB,MAClBugB,EAAMvgB,MAAiB,UAAT5Y,GAA6B,WAATA,EAAoB,EAAI,MAjO9Dy6B,GAAW,CACV,IAAK,CAAE,SAAUz6B,EAAM2O,GACtB,IAAIwqB,EAAQrgC,KAAK0hC,YAAax6B,EAAM2O,GACnCjW,EAASygC,EAAM1kB,MACfgkB,EAAQoB,GAAO7mB,KAAMrE,GACrBiqB,EAAOH,GAASA,EAAO,KAASrtB,EAAO2sB,UAAW/3B,GAAS,GAAK,MAGhE4Y,GAAUxN,EAAO2sB,UAAW/3B,IAAmB,OAAT44B,IAAkBlgC,IACvDmhC,GAAO7mB,KAAM5H,EAAOsb,IAAKyS,EAAM12B,KAAMzC,IACtC06B,EAAQ,EACRC,EAAgB,GAEjB,GAAK/hB,GAASA,EAAO,KAAQggB,EAAO,CAEnCA,EAAOA,GAAQhgB,EAAO,GAGtB6f,EAAQA,GAAS,GAGjB7f,GAASlgB,GAAU,EAEnB,GAMCkgB,GAHA8hB,EAAQA,GAAS,KAIjBtvB,EAAOgZ,MAAO+U,EAAM12B,KAAMzC,EAAM4Y,EAAQggB,SAI/B8B,KAAWA,EAAQvB,EAAM1kB,MAAQ/b,IAAqB,IAAVgiC,KAAiBC,GAaxE,OATKlC,IACJ7f,EAAQugB,EAAMvgB,OAASA,IAAUlgB,GAAU,EAC3CygC,EAAMP,KAAOA,EAEbO,EAAMh1B,IAAMs0B,EAAO,GAClB7f,GAAU6f,EAAO,GAAM,GAAMA,EAAO,IACnCA,EAAO,IAGHU,KAKV,SAASyB,KAIR,OAHAlzB,YAAW,WACV+xB,QAAQ1/B,KAEA0/B,GAAQruB,EAAO2D,MAIzB,SAAS8rB,GAAO73B,EAAM83B,GACrB,IAAIv1B,EACH0D,EAAQ,CAAE8xB,OAAQ/3B,GAClBrI,EAAI,EAKL,IADAmgC,EAAeA,EAAe,EAAI,EAC1BngC,EAAI,EAAIA,GAAK,EAAImgC,EAExB7xB,EAAO,UADP1D,EAAQihB,EAAW7rB,KACSsO,EAAO,UAAY1D,GAAUvC,EAO1D,OAJK83B,IACJ7xB,EAAMssB,QAAUtsB,EAAMyqB,MAAQ1wB,GAGxBiG,EAGR,SAASuxB,GAAa7rB,EAAO3O,EAAMg7B,GAKlC,IAJA,IAAI7B,EACH8B,GAAeR,GAAUz6B,IAAU,IAAKtB,OAAQ+7B,GAAU,MAC1Dn1B,EAAQ,EACRxK,EAASmgC,EAAWngC,OACbwK,EAAQxK,EAAQwK,IACvB,GAAM6zB,EAAQ8B,EAAY31B,GAAQ7L,KAAMuhC,EAAWh7B,EAAM2O,GAGxD,OAAOwqB,EAwLV,SAAS+B,GAAWz4B,EAAM04B,EAAYl+B,GACrC,IAAIsG,EACH63B,EACA91B,EAAQ,EACRxK,EAASi/B,GAAoBj/B,OAC7BmnB,EAAW7W,EAAOwW,WAAWI,QAAQ,kBAE7BqZ,EAAK54B,QAEb44B,EAAO,WACN,GAAKD,EACJ,OAAO,EAUR,IARA,IAAIE,EAAc7B,IAASmB,KAC1BxX,EAAYlW,KAAKkB,IAAK,EAAG4sB,EAAUO,UAAYP,EAAU/B,SAAWqC,GAGpEvC,EAAU,GADH3V,EAAY4X,EAAU/B,UAAY,GAEzC3zB,EAAQ,EACRxK,EAASkgC,EAAUQ,OAAO1gC,OAEnBwK,EAAQxK,EAASwK,IACxB01B,EAAUQ,OAAQl2B,GAAQwzB,IAAKC,GAKhC,OAFA9W,EAASsB,WAAY9gB,EAAM,CAAEu4B,EAAWjC,EAAS3V,IAE5C2V,EAAU,GAAKj+B,EACZsoB,GAEPnB,EAASuB,YAAa/gB,EAAM,CAAEu4B,KACvB,IAGTA,EAAY/Y,EAASF,QAAQ,CAC5Btf,KAAMA,EACNipB,MAAOtgB,EAAO3E,OAAQ,GAAI00B,GAC1BnB,KAAM5uB,EAAO3E,QAAQ,EAAM,CAAEg1B,cAAe,IAAMx+B,GAClDy+B,mBAAoBP,EACpBQ,gBAAiB1+B,EACjBs+B,UAAW9B,IAASmB,KACpB3B,SAAUh8B,EAAQg8B,SAClBuC,OAAQ,GACRhB,YAAa,SAAUx6B,EAAMmE,GAC5B,IAAIg1B,EAAQ/tB,EAAOwsB,MAAOn1B,EAAMu4B,EAAUhB,KAAMh6B,EAAMmE,EACpD62B,EAAUhB,KAAKyB,cAAez7B,IAAUg7B,EAAUhB,KAAKnC,QAEzD,OADAmD,EAAUQ,OAAO97B,KAAMy5B,GAChBA,GAERlT,KAAM,SAAU2V,GACf,IAAIt2B,EAAQ,EAGXxK,EAAS8gC,EAAUZ,EAAUQ,OAAO1gC,OAAS,EAC9C,GAAKsgC,EACJ,OAAOtiC,KAGR,IADAsiC,GAAU,EACF91B,EAAQxK,EAASwK,IACxB01B,EAAUQ,OAAQl2B,GAAQwzB,IAAK,GAUhC,OALK8C,EACJ3Z,EAASuB,YAAa/gB,EAAM,CAAEu4B,EAAWY,IAEzC3Z,EAAS4Z,WAAYp5B,EAAM,CAAEu4B,EAAWY,IAElC9iC,QAGT4yB,EAAQsP,EAAUtP,MAInB,IAjHD,SAAqBA,EAAO+P,GAC3B,IAAIn2B,EAAO1H,EAAMi6B,EAAQlpB,EAAOoX,EAGhC,IAAMzgB,KAASomB,EAed,GAbAmM,EAAS4D,EADT79B,EAAOwN,EAAOyC,UAAWvI,IAEzBqJ,EAAQ+c,EAAOpmB,GACV8F,EAAO4B,QAAS2B,KACpBkpB,EAASlpB,EAAO,GAChBA,EAAQ+c,EAAOpmB,GAAUqJ,EAAO,IAG5BrJ,IAAU1H,IACd8tB,EAAO9tB,GAAS+Q,SACT+c,EAAOpmB,KAGfygB,EAAQ3a,EAAO0sB,SAAUl6B,KACX,WAAYmoB,EAMzB,IAAMzgB,KALNqJ,EAAQoX,EAAMwS,OAAQ5pB,UACf+c,EAAO9tB,GAIC+Q,EACNrJ,KAASomB,IAChBA,EAAOpmB,GAAUqJ,EAAOrJ,GACxBm2B,EAAen2B,GAAUuyB,QAI3B4D,EAAe79B,GAASi6B,EA+E1BiE,CAAYpQ,EAAOsP,EAAUhB,KAAKyB,eAE1Bn2B,EAAQxK,EAASwK,IAExB,GADA/B,EAASw2B,GAAqBz0B,GAAQ7L,KAAMuhC,EAAWv4B,EAAMipB,EAAOsP,EAAUhB,MAE7E,OAAOz2B,EAmBT,OAfA6H,EAAO1N,IAAKguB,EAAO8O,GAAaQ,GAE3B5vB,EAAO0B,WAAYkuB,EAAUhB,KAAKphB,QACtCoiB,EAAUhB,KAAKphB,MAAMnf,KAAMgJ,EAAMu4B,GAGlC5vB,EAAOguB,GAAG2C,MACT3wB,EAAO3E,OAAQ40B,EAAM,CACpB54B,KAAMA,EACNy3B,KAAMc,EACNpV,MAAOoV,EAAUhB,KAAKpU,SAKjBoV,EAAUtY,SAAUsY,EAAUhB,KAAKtX,UACxCvS,KAAM6qB,EAAUhB,KAAK7pB,KAAM6qB,EAAUhB,KAAKgC,UAC1C9Z,KAAM8Y,EAAUhB,KAAK9X,MACrBF,OAAQgZ,EAAUhB,KAAKhY,QAG1B5W,EAAO8vB,UAAY9vB,EAAO3E,OAAQy0B,GAAW,CAC5Ce,QAAS,SAAUvQ,EAAOxnB,GACpBkH,EAAO0B,WAAY4e,IACvBxnB,EAAWwnB,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAM5vB,MAAM,KAOrB,IAJA,IAAIkE,EACHsF,EAAQ,EACRxK,EAAS4wB,EAAM5wB,OAERwK,EAAQxK,EAASwK,IACxBtF,EAAO0rB,EAAOpmB,GACdm1B,GAAUz6B,GAASy6B,GAAUz6B,IAAU,GACvCy6B,GAAUz6B,GAAOlB,QAASoF,IAI5Bg4B,UAAW,SAAUh4B,EAAU+tB,GACzBA,EACJ8H,GAAoBj7B,QAASoF,GAE7B61B,GAAoBr6B,KAAMwE,MAK7BkH,EAAO+wB,MAAQ,SAAUA,EAAOtE,EAAQh8B,GACvC,IAAI89B,EAAMwC,GAA0B,iBAAVA,EAAqB/wB,EAAO3E,OAAQ,GAAI01B,GAAU,CAC3EH,SAAUngC,IAAOA,GAAMg8B,GACtBzsB,EAAO0B,WAAYqvB,IAAWA,EAC/BlD,SAAUkD,EACVtE,OAAQh8B,GAAMg8B,GAAUA,IAAWzsB,EAAO0B,WAAY+qB,IAAYA,GAwBnE,OArBA8B,EAAIV,SAAW7tB,EAAOguB,GAAG/2B,IAAM,EAA4B,iBAAjBs3B,EAAIV,SAAwBU,EAAIV,SACzEU,EAAIV,YAAY7tB,EAAOguB,GAAGgD,OAAShxB,EAAOguB,GAAGgD,OAAQzC,EAAIV,UAAa7tB,EAAOguB,GAAGgD,OAAOzR,SAGtE,MAAbgP,EAAI/T,QAA+B,IAAd+T,EAAI/T,QAC7B+T,EAAI/T,MAAQ,MAIb+T,EAAIhnB,IAAMgnB,EAAIqC,SAEdrC,EAAIqC,SAAW,WACT5wB,EAAO0B,WAAY6sB,EAAIhnB,MAC3BgnB,EAAIhnB,IAAIlZ,KAAMX,MAGV6gC,EAAI/T,OACRxa,EAAOya,QAAS/sB,KAAM6gC,EAAI/T,QAIrB+T,GAGRvuB,EAAOvP,GAAG4K,OAAO,CAChB41B,OAAQ,SAAUF,EAAOG,EAAIzE,EAAQ3zB,GAGpC,OAAOpL,KAAKiF,OAAQ0oB,GAAWC,IAAK,UAAW,GAAIyQ,OAGjDhzB,MAAMo4B,QAAQ,CAAEhH,QAAS+G,GAAMH,EAAOtE,EAAQ3zB,IAEjDq4B,QAAS,SAAUv8B,EAAMm8B,EAAOtE,EAAQ3zB,GACvC,IAAIsd,EAAQpW,EAAOqC,cAAezN,GACjCw8B,EAASpxB,EAAO+wB,MAAOA,EAAOtE,EAAQ3zB,GACtCu4B,EAAc,WAEb,IAAIvC,EAAOgB,GAAWpiC,KAAMsS,EAAO3E,OAAQ,GAAIzG,GAAQw8B,IAGlDhb,GAASpW,EAAOsa,MAAO5sB,KAAM,YACjCohC,EAAKjU,MAAM,IAKd,OAFCwW,EAAYC,OAASD,EAEfjb,IAA0B,IAAjBgb,EAAO5W,MACtB9sB,KAAKqE,KAAMs/B,GACX3jC,KAAK8sB,MAAO4W,EAAO5W,MAAO6W,IAE5BxW,KAAM,SAAUjjB,EAAMmjB,EAAYyV,GACjC,IAAIe,EAAY,SAAU5W,GACzB,IAAIE,EAAOF,EAAME,YACVF,EAAME,KACbA,EAAM2V,IAYP,MATqB,iBAAT54B,IACX44B,EAAUzV,EACVA,EAAanjB,EACbA,OAAOjJ,GAEHosB,IAAuB,IAATnjB,GAClBlK,KAAK8sB,MAAO5iB,GAAQ,KAAM,IAGpBlK,KAAKqE,MAAK,WAChB,IAAI0oB,GAAU,EACbvgB,EAAgB,MAARtC,GAAgBA,EAAO,aAC/B45B,EAASxxB,EAAOwxB,OAChBz0B,EAAOiD,EAAOsa,MAAO5sB,MAEtB,GAAKwM,EACC6C,EAAM7C,IAAW6C,EAAM7C,GAAQ2gB,MACnC0W,EAAWx0B,EAAM7C,SAGlB,IAAMA,KAAS6C,EACTA,EAAM7C,IAAW6C,EAAM7C,GAAQ2gB,MAAQ6T,GAAK52B,KAAMoC,IACtDq3B,EAAWx0B,EAAM7C,IAKpB,IAAMA,EAAQs3B,EAAO9hC,OAAQwK,KACvBs3B,EAAQt3B,GAAQ7C,OAAS3J,MAAiB,MAARkK,GAAgB45B,EAAQt3B,GAAQsgB,QAAU5iB,IAChF45B,EAAQt3B,GAAQ40B,KAAKjU,KAAM2V,GAC3B/V,GAAU,EACV+W,EAAO73B,OAAQO,EAAO,KAOnBugB,GAAY+V,GAChBxwB,EAAOya,QAAS/sB,KAAMkK,OAIzB05B,OAAQ,SAAU15B,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAETlK,KAAKqE,MAAK,WAChB,IAAImI,EACH6C,EAAOiD,EAAOsa,MAAO5sB,MACrB8sB,EAAQzd,EAAMnF,EAAO,SACrB+iB,EAAQ5d,EAAMnF,EAAO,cACrB45B,EAASxxB,EAAOwxB,OAChB9hC,EAAS8qB,EAAQA,EAAM9qB,OAAS,EAajC,IAVAqN,EAAKu0B,QAAS,EAGdtxB,EAAOwa,MAAO9sB,KAAMkK,EAAM,IAErB+iB,GAASA,EAAME,MACnBF,EAAME,KAAKxsB,KAAMX,MAAM,GAIlBwM,EAAQs3B,EAAO9hC,OAAQwK,KACvBs3B,EAAQt3B,GAAQ7C,OAAS3J,MAAQ8jC,EAAQt3B,GAAQsgB,QAAU5iB,IAC/D45B,EAAQt3B,GAAQ40B,KAAKjU,MAAM,GAC3B2W,EAAO73B,OAAQO,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQxK,EAAQwK,IAC3BsgB,EAAOtgB,IAAWsgB,EAAOtgB,GAAQo3B,QACrC9W,EAAOtgB,GAAQo3B,OAAOjjC,KAAMX,aAKvBqP,EAAKu0B,aAKftxB,EAAOjO,KAAK,CAAE,SAAU,OAAQ,SAAU,SAAUxC,EAAGiD,GACtD,IAAIi/B,EAAQzxB,EAAOvP,GAAI+B,GACvBwN,EAAOvP,GAAI+B,GAAS,SAAUu+B,EAAOtE,EAAQ3zB,GAC5C,OAAgB,MAATi4B,GAAkC,kBAAVA,EAC9BU,EAAMtiC,MAAOzB,KAAM+B,WACnB/B,KAAKyjC,QAAS1B,GAAOj9B,GAAM,GAAQu+B,EAAOtE,EAAQ3zB,OAKrDkH,EAAOjO,KAAK,CACX2/B,UAAWjC,GAAM,QACjBkC,QAASlC,GAAM,QACfmC,YAAanC,GAAM,UACnBoC,OAAQ,CAAE1H,QAAS,QACnB2H,QAAS,CAAE3H,QAAS,QACpB4H,WAAY,CAAE5H,QAAS,YACrB,SAAU33B,EAAM8tB,GAClBtgB,EAAOvP,GAAI+B,GAAS,SAAUu+B,EAAOtE,EAAQ3zB,GAC5C,OAAOpL,KAAKyjC,QAAS7Q,EAAOyQ,EAAOtE,EAAQ3zB,OAI7CkH,EAAOwxB,OAAS,GAChBxxB,EAAOguB,GAAGiC,KAAO,WAChB,IAAIU,EACHa,EAASxxB,EAAOwxB,OAChBjiC,EAAI,EAIL,IAFA8+B,GAAQruB,EAAO2D,MAEPpU,EAAIiiC,EAAO9hC,OAAQH,KAC1BohC,EAAQa,EAAQjiC,OAECiiC,EAAQjiC,KAAQohC,GAChCa,EAAO73B,OAAQpK,IAAK,GAIhBiiC,EAAO9hC,QACZsQ,EAAOguB,GAAGnT,OAEXwT,QAAQ1/B,GAGTqR,EAAOguB,GAAG2C,MAAQ,SAAUA,GAC3B3wB,EAAOwxB,OAAOl9B,KAAMq8B,GACfA,IACJ3wB,EAAOguB,GAAGxgB,QAEVxN,EAAOwxB,OAAO95B,OAIhBsI,EAAOguB,GAAGgE,SAAW,GAErBhyB,EAAOguB,GAAGxgB,MAAQ,WACX8gB,KACLA,GAAU2D,YAAajyB,EAAOguB,GAAGiC,KAAMjwB,EAAOguB,GAAGgE,YAInDhyB,EAAOguB,GAAGnT,KAAO,WAChBqX,cAAe5D,IACfA,GAAU,MAGXtuB,EAAOguB,GAAGgD,OAAS,CAClBmB,KAAM,IACNC,KAAM,IAEN7S,SAAU,KAMXvf,EAAOvP,GAAG4hC,MAAQ,SAAUC,EAAM16B,GAIjC,OAHA06B,EAAOtyB,EAAOguB,IAAKhuB,EAAOguB,GAAGgD,OAAQsB,IAAiBA,EACtD16B,EAAOA,GAAQ,KAERlK,KAAK8sB,MAAO5iB,GAAM,SAAU6b,EAAMkH,GACxC,IAAI1e,EAAUK,WAAYmX,EAAM6e,GAChC3X,EAAME,KAAO,WACZxe,aAAcJ,SAWhB6M,GAAMvE,EAASwE,cAAe,QAC1BZ,aAAc,YAAa,KAC/BW,GAAI8B,UAAY,qEAChB3R,GAAI6P,GAAIf,qBAAqB,KAAM,GAInCwmB,IADApvB,GAASoF,EAASwE,cAAc,WACnBsB,YAAa9F,EAASwE,cAAc,WACjD8B,GAAQ/B,GAAIf,qBAAqB,SAAU,GAE3C9O,GAAE+f,MAAMC,QAAU,UAGlBnZ,EAAQyyB,gBAAoC,MAAlBzpB,GAAIxQ,UAI9BwH,EAAQkZ,MAAQ,MAAMlhB,KAAMmB,GAAEiP,aAAa,UAI3CpI,EAAQ0yB,eAA4C,OAA3Bv5B,GAAEiP,aAAa,QAGxCpI,EAAQ2yB,UAAY5nB,GAAMtH,MAI1BzD,EAAQ4yB,YAAcnE,GAAI3f,SAG1B9O,EAAQ6yB,UAAYpuB,EAASwE,cAAc,QAAQ4pB,QAInDxzB,GAAOuP,UAAW,EAClB5O,EAAQ8yB,aAAerE,GAAI7f,UAI3B7D,GAAQtG,EAASwE,cAAe,UAC1BZ,aAAc,QAAS,IAC7BrI,EAAQ+K,MAA0C,KAAlCA,GAAM3C,aAAc,SAGpC2C,GAAMtH,MAAQ,IACdsH,GAAM1C,aAAc,OAAQ,SAC5BrI,EAAQ+yB,WAA6B,MAAhBhoB,GAAMtH,MAI5B,IAAIuvB,GAAU,MAEd9yB,EAAOvP,GAAG4K,OAAO,CAChBwQ,IAAK,SAAUtI,GACd,IAAIoX,EAAO7Z,EAAKY,EACfrK,EAAO3J,KAAK,GAEb,OAAM+B,UAAUC,QAoBhBgS,EAAa1B,EAAO0B,WAAY6B,GAEzB7V,KAAKqE,MAAK,SAAUxC,GAC1B,IAAIsc,EAEmB,IAAlBne,KAAKuN,WAWE,OANX4Q,EADInK,EACE6B,EAAMlV,KAAMX,KAAM6B,EAAGyQ,EAAQtS,MAAOme,OAEpCtI,GAKNsI,EAAM,GACoB,iBAARA,EAClBA,GAAO,GACI7L,EAAO4B,QAASiK,KAC3BA,EAAM7L,EAAO1N,IAAKuZ,GAAK,SAAUtI,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,QAItCoX,EAAQ3a,EAAO+yB,SAAUrlC,KAAKkK,OAAUoI,EAAO+yB,SAAUrlC,KAAKiV,SAAStK,iBAGtD,QAASsiB,QAA8ChsB,IAApCgsB,EAAMyM,IAAK15B,KAAMme,EAAK,WACzDne,KAAK6V,MAAQsI,QAjDTxU,GACJsjB,EAAQ3a,EAAO+yB,SAAU17B,EAAKO,OAAUoI,EAAO+yB,SAAU17B,EAAKsL,SAAStK,iBAEzD,QAASsiB,QAAgDhsB,KAAtCmS,EAAM6Z,EAAMha,IAAKtJ,EAAM,UAChDyJ,EAKc,iBAFtBA,EAAMzJ,EAAKkM,OAIVzC,EAAI9I,QAAQ86B,GAAS,IAEd,MAAPhyB,EAAc,GAAKA,OAGrB,KAuCHd,EAAO3E,OAAO,CACb03B,SAAU,CACT9O,OAAQ,CACPtjB,IAAK,SAAUtJ,GACd,IAAIwU,EAAM7L,EAAO9J,KAAK8H,KAAM3G,EAAM,SAClC,OAAc,MAAPwU,EACNA,EAGA7L,EAAO3S,KAAM2S,EAAO4C,KAAMvL,MAG7B8H,OAAQ,CACPwB,IAAK,SAAUtJ,GAYd,IAXA,IAAIkM,EAAO0gB,EACVpyB,EAAUwF,EAAKxF,QACfqI,EAAQ7C,EAAKwX,cACbqU,EAAoB,eAAd7rB,EAAKO,MAAyBsC,EAAQ,EAC5Cge,EAASgL,EAAM,KAAO,GACtBlgB,EAAMkgB,EAAMhpB,EAAQ,EAAIrI,EAAQnC,OAChCH,EAAI2K,EAAQ,EACX8I,EACAkgB,EAAMhpB,EAAQ,EAGR3K,EAAIyT,EAAKzT,IAIhB,KAHA00B,EAASpyB,EAAStC,IAGJqf,UAAYrf,IAAM2K,KAE5B4F,EAAQ8yB,aAAe3O,EAAOvV,SAA+C,OAApCuV,EAAO/b,aAAa,gBAC5D+b,EAAOnc,WAAW4G,WAAa1O,EAAO2C,SAAUshB,EAAOnc,WAAY,aAAiB,CAMxF,GAHAvE,EAAQvD,EAAQikB,GAASpY,MAGpBqX,EACJ,OAAO3f,EAIR2U,EAAO5jB,KAAMiP,GAIf,OAAO2U,GAGRkP,IAAK,SAAU/vB,EAAMkM,GAMpB,IALA,IAAIyvB,EAAW/O,EACdpyB,EAAUwF,EAAKxF,QACfqmB,EAASlY,EAAO6C,UAAWU,GAC3BhU,EAAIsC,EAAQnC,OAELH,KAGP,GAFA00B,EAASpyB,EAAStC,GAEbyQ,EAAO+C,QAAS/C,EAAO+yB,SAAS9O,OAAOtjB,IAAKsjB,GAAU/L,IAAY,EAMtE,IACC+L,EAAOrV,SAAWokB,GAAY,EAE7B,MAAQpsB,GAGTqd,EAAOgP,kBAIRhP,EAAOrV,UAAW,EASpB,OAJMokB,IACL37B,EAAKwX,eAAiB,GAGhBhd,OAOXmO,EAAOjO,KAAK,CAAE,QAAS,aAAc,WACpCiO,EAAO+yB,SAAUrlC,MAAS,CACzB05B,IAAK,SAAU/vB,EAAMkM,GACpB,GAAKvD,EAAO4B,QAAS2B,GACpB,OAASlM,EAAKsX,QAAU3O,EAAO+C,QAAS/C,EAAO3I,GAAMwU,MAAOtI,IAAW,IAIpEzD,EAAQ2yB,UACbzyB,EAAO+yB,SAAUrlC,MAAOiT,IAAM,SAAUtJ,GAGvC,OAAsC,OAA/BA,EAAK6Q,aAAa,SAAoB,KAAO7Q,EAAKkM,WAQ5D,IAAI2vB,GAAUC,GACbhqB,GAAanJ,EAAOnI,KAAKsR,WACzBiqB,GAAc,0BACdb,GAAkBzyB,EAAQyyB,gBAC1Bc,GAAcvzB,EAAQ+K,MAEvB7K,EAAOvP,GAAG4K,OAAO,CAChB2C,KAAM,SAAUxL,EAAM+Q,GACrB,OAAOgY,EAAQ7tB,KAAMsS,EAAOhC,KAAMxL,EAAM+Q,EAAO9T,UAAUC,OAAS,IAGnE4jC,WAAY,SAAU9gC,GACrB,OAAO9E,KAAKqE,MAAK,WAChBiO,EAAOszB,WAAY5lC,KAAM8E,SAK5BwN,EAAO3E,OAAO,CACb2C,KAAM,SAAU3G,EAAM7E,EAAM+Q,GAC3B,IAAIoX,EAAO7Z,EACVyyB,EAAQl8B,EAAK4D,SAGd,GAAM5D,GAAkB,IAAVk8B,GAAyB,IAAVA,GAAyB,IAAVA,EAK5C,cAAYl8B,EAAK6Q,eAAiB2Q,EAC1B7Y,EAAOpL,KAAMyC,EAAM7E,EAAM+Q,IAKlB,IAAVgwB,GAAgBvzB,EAAOuS,SAAUlb,KACrC7E,EAAOA,EAAK6F,cACZsiB,EAAQ3a,EAAOwzB,UAAWhhC,KACvBwN,EAAOnI,KAAKnF,MAAM+gC,KAAK37B,KAAMtF,GAAS2gC,GAAWD,UAGtCvkC,IAAV4U,EAaOoX,GAAS,QAASA,GAA6C,QAAnC7Z,EAAM6Z,EAAMha,IAAKtJ,EAAM7E,IACvDsO,EAMO,OAHdA,EAAMd,EAAO9J,KAAK8H,KAAM3G,EAAM7E,SAI7B7D,EACAmS,EApBc,OAAVyC,EAGOoX,GAAS,QAASA,QAAoDhsB,KAA1CmS,EAAM6Z,EAAMyM,IAAK/vB,EAAMkM,EAAO/Q,IAC9DsO,GAGPzJ,EAAK8Q,aAAc3V,EAAM+Q,EAAQ,IAC1BA,QAPPvD,EAAOszB,WAAYj8B,EAAM7E,KAuB5B8gC,WAAY,SAAUj8B,EAAMkM,GAC3B,IAAI/Q,EAAMkhC,EACTnkC,EAAI,EACJokC,EAAYpwB,GAASA,EAAM7Q,MAAOoiB,GAEnC,GAAK6e,GAA+B,IAAlBt8B,EAAK4D,SACtB,KAASzI,EAAOmhC,EAAUpkC,MACzBmkC,EAAW1zB,EAAO4zB,QAASphC,IAAUA,EAGhCwN,EAAOnI,KAAKnF,MAAM+gC,KAAK37B,KAAMtF,GAE5B6gC,IAAed,KAAoBa,GAAYt7B,KAAMtF,GACzD6E,EAAMq8B,IAAa,EAInBr8B,EAAM2I,EAAOyC,UAAW,WAAajQ,IACpC6E,EAAMq8B,IAAa,EAKrB1zB,EAAOhC,KAAM3G,EAAM7E,EAAM,IAG1B6E,EAAKmR,gBAAiB+pB,GAAkB//B,EAAOkhC,IAKlDF,UAAW,CACV57B,KAAM,CACLwvB,IAAK,SAAU/vB,EAAMkM,GACpB,IAAMzD,EAAQ+yB,YAAwB,UAAVtvB,GAAqBvD,EAAO2C,SAAStL,EAAM,SAAW,CAGjF,IAAIwU,EAAMxU,EAAKkM,MAKf,OAJAlM,EAAK8Q,aAAc,OAAQ5E,GACtBsI,IACJxU,EAAKkM,MAAQsI,GAEPtI,QAQZ4vB,GAAW,CACV/L,IAAK,SAAU/vB,EAAMkM,EAAO/Q,GAa3B,OAZe,IAAV+Q,EAEJvD,EAAOszB,WAAYj8B,EAAM7E,GACd6gC,IAAed,KAAoBa,GAAYt7B,KAAMtF,GAEhE6E,EAAK8Q,cAAeoqB,IAAmBvyB,EAAO4zB,QAASphC,IAAUA,EAAMA,GAIvE6E,EAAM2I,EAAOyC,UAAW,WAAajQ,IAAW6E,EAAM7E,IAAS,EAGzDA,IAKTwN,EAAOjO,KAAMiO,EAAOnI,KAAKnF,MAAM+gC,KAAKtY,OAAOzoB,MAAO,SAAU,SAAUnD,EAAGiD,GAExE,IAAIqhC,EAAS1qB,GAAY3W,IAAUwN,EAAO9J,KAAK8H,KAE/CmL,GAAY3W,GAAS6gC,IAAed,KAAoBa,GAAYt7B,KAAMtF,GACzE,SAAU6E,EAAM7E,EAAMwR,GACrB,IAAIlD,EAAKqd,EAUT,OATMna,IAELma,EAAShV,GAAY3W,GACrB2W,GAAY3W,GAASsO,EACrBA,EAAqC,MAA/B+yB,EAAQx8B,EAAM7E,EAAMwR,GACzBxR,EAAK6F,cACL,KACD8Q,GAAY3W,GAAS2rB,GAEfrd,GAER,SAAUzJ,EAAM7E,EAAMwR,GACrB,IAAMA,EACL,OAAO3M,EAAM2I,EAAOyC,UAAW,WAAajQ,IAC3CA,EAAK6F,cACL,SAMCg7B,IAAgBd,KACrBvyB,EAAOwzB,UAAUjwB,MAAQ,CACxB6jB,IAAK,SAAU/vB,EAAMkM,EAAO/Q,GAC3B,IAAKwN,EAAO2C,SAAUtL,EAAM,SAK3B,OAAO67B,IAAYA,GAAS9L,IAAK/vB,EAAMkM,EAAO/Q,GAH9C6E,EAAKgb,aAAe9O,KAUlBgvB,KAILW,GAAW,CACV9L,IAAK,SAAU/vB,EAAMkM,EAAO/Q,GAE3B,IAAIsO,EAAMzJ,EAAKqT,iBAAkBlY,GAUjC,GATMsO,GACLzJ,EAAKy8B,iBACHhzB,EAAMzJ,EAAKsQ,cAAcosB,gBAAiBvhC,IAI7CsO,EAAIyC,MAAQA,GAAS,GAGP,UAAT/Q,GAAoB+Q,IAAUlM,EAAK6Q,aAAc1V,GACrD,OAAO+Q,IAMV4F,GAAWhb,GAAKgb,GAAW3W,KAAO2W,GAAW6qB,OAC5C,SAAU38B,EAAM7E,EAAMwR,GACrB,IAAIlD,EACJ,IAAMkD,EACL,OAAQlD,EAAMzJ,EAAKqT,iBAAkBlY,KAAyB,KAAdsO,EAAIyC,MACnDzC,EAAIyC,MACJ,MAKJvD,EAAO+yB,SAAS/S,OAAS,CACxBrf,IAAK,SAAUtJ,EAAM7E,GACpB,IAAIsO,EAAMzJ,EAAKqT,iBAAkBlY,GACjC,GAAKsO,GAAOA,EAAIgL,UACf,OAAOhL,EAAIyC,OAGb6jB,IAAK8L,GAAS9L,KAKfpnB,EAAOwzB,UAAUS,gBAAkB,CAClC7M,IAAK,SAAU/vB,EAAMkM,EAAO/Q,GAC3B0gC,GAAS9L,IAAK/vB,EAAgB,KAAVkM,GAAuBA,EAAO/Q,KAMpDwN,EAAOjO,KAAK,CAAE,QAAS,WAAY,SAAUxC,EAAGiD,GAC/CwN,EAAOwzB,UAAWhhC,GAAS,CAC1B40B,IAAK,SAAU/vB,EAAMkM,GACpB,GAAe,KAAVA,EAEJ,OADAlM,EAAK8Q,aAAc3V,EAAM,QAClB+Q,QAONzD,EAAQkZ,QACbhZ,EAAOwzB,UAAUxa,MAAQ,CACxBrY,IAAK,SAAUtJ,GAId,OAAOA,EAAK2hB,MAAMC,cAAWtqB,GAE9By4B,IAAK,SAAU/vB,EAAMkM,GACpB,OAASlM,EAAK2hB,MAAMC,QAAU1V,EAAQ,MAQzC,IAAI2wB,GAAa,6CAChBC,GAAa,gBAEdn0B,EAAOvP,GAAG4K,OAAO,CAChBzG,KAAM,SAAUpC,EAAM+Q,GACrB,OAAOgY,EAAQ7tB,KAAMsS,EAAOpL,KAAMpC,EAAM+Q,EAAO9T,UAAUC,OAAS,IAGnE0kC,WAAY,SAAU5hC,GAErB,OADAA,EAAOwN,EAAO4zB,QAASphC,IAAUA,EAC1B9E,KAAKqE,MAAK,WAEhB,IACCrE,KAAM8E,QAAS7D,SACRjB,KAAM8E,GACZ,MAAO0F,WAKZ8H,EAAO3E,OAAO,CACbu4B,QAAS,CACR,IAAO,UACP,MAAS,aAGVh/B,KAAM,SAAUyC,EAAM7E,EAAM+Q,GAC3B,IAAIzC,EAAK6Z,EACR4Y,EAAQl8B,EAAK4D,SAGd,GAAM5D,GAAkB,IAAVk8B,GAAyB,IAAVA,GAAyB,IAAVA,EAY5C,OARmB,IAAVA,IAAgBvzB,EAAOuS,SAAUlb,MAIzC7E,EAAOwN,EAAO4zB,QAASphC,IAAUA,EACjCmoB,EAAQ3a,EAAOytB,UAAWj7B,SAGZ7D,IAAV4U,EACGoX,GAAS,QAASA,QAAoDhsB,KAA1CmS,EAAM6Z,EAAMyM,IAAK/vB,EAAMkM,EAAO/Q,IAChEsO,EACEzJ,EAAM7E,GAAS+Q,EAGXoX,GAAS,QAASA,GAA6C,QAAnC7Z,EAAM6Z,EAAMha,IAAKtJ,EAAM7E,IACzDsO,EACAzJ,EAAM7E,IAITi7B,UAAW,CACVhf,SAAU,CACT9N,IAAK,SAAUtJ,GAId,IAAIg9B,EAAWr0B,EAAO9J,KAAK8H,KAAM3G,EAAM,YAEvC,OAAOg9B,EACNC,SAAUD,EAAU,IACpBH,GAAWp8B,KAAMT,EAAKsL,WAAcwxB,GAAWr8B,KAAMT,EAAKsL,WAActL,EAAKmX,KAC5E,GACC,OAQD1O,EAAQ0yB,gBAEbxyB,EAAOjO,KAAK,CAAE,OAAQ,QAAS,SAAUxC,EAAGiD,GAC3CwN,EAAOytB,UAAWj7B,GAAS,CAC1BmO,IAAK,SAAUtJ,GACd,OAAOA,EAAK6Q,aAAc1V,EAAM,QAS9BsN,EAAQ4yB,cACb1yB,EAAOytB,UAAU7e,SAAW,CAC3BjO,IAAK,SAAUtJ,GACd,IAAI1J,EAAS0J,EAAKyQ,WAUlB,OARKna,IACJA,EAAOkhB,cAGFlhB,EAAOma,YACXna,EAAOma,WAAW+G,eAGb,QAKV7O,EAAOjO,KAAK,CACX,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACE,WACFiO,EAAO4zB,QAASlmC,KAAK2K,eAAkB3K,QAIlCoS,EAAQ6yB,UACb3yB,EAAO4zB,QAAQjB,QAAU,YAM1B,IAAI4B,GAAS,cAEbv0B,EAAOvP,GAAG4K,OAAO,CAChBm5B,SAAU,SAAUjxB,GACnB,IAAIkxB,EAASp9B,EAAMgS,EAAKqrB,EAAOvzB,EAAGwzB,EACjCplC,EAAI,EACJ4L,EAAMzN,KAAKgC,OACXklC,EAA2B,iBAAVrxB,GAAsBA,EAExC,GAAKvD,EAAO0B,WAAY6B,GACvB,OAAO7V,KAAKqE,MAAK,SAAUoP,GAC1BnB,EAAQtS,MAAO8mC,SAAUjxB,EAAMlV,KAAMX,KAAMyT,EAAGzT,KAAK4K,eAIrD,GAAKs8B,EAIJ,IAFAH,GAAYlxB,GAAS,IAAK7Q,MAAOoiB,IAAe,GAExCvlB,EAAI4L,EAAK5L,IAOhB,GALA8Z,EAAwB,KADxBhS,EAAO3J,KAAM6B,IACF0L,WAAoB5D,EAAKiB,WACjC,IAAMjB,EAAKiB,UAAY,KAAMN,QAASu8B,GAAQ,KAChD,KAGU,CAEV,IADApzB,EAAI,EACKuzB,EAAQD,EAAQtzB,MACnBkI,EAAIlV,QAAS,IAAMugC,EAAQ,KAAQ,IACvCrrB,GAAOqrB,EAAQ,KAKjBC,EAAa30B,EAAO3S,KAAMgc,GACrBhS,EAAKiB,YAAcq8B,IACvBt9B,EAAKiB,UAAYq8B,GAMrB,OAAOjnC,MAGRmnC,YAAa,SAAUtxB,GACtB,IAAIkxB,EAASp9B,EAAMgS,EAAKqrB,EAAOvzB,EAAGwzB,EACjCplC,EAAI,EACJ4L,EAAMzN,KAAKgC,OACXklC,EAA+B,IAArBnlC,UAAUC,QAAiC,iBAAV6T,GAAsBA,EAElE,GAAKvD,EAAO0B,WAAY6B,GACvB,OAAO7V,KAAKqE,MAAK,SAAUoP,GAC1BnB,EAAQtS,MAAOmnC,YAAatxB,EAAMlV,KAAMX,KAAMyT,EAAGzT,KAAK4K,eAGxD,GAAKs8B,EAGJ,IAFAH,GAAYlxB,GAAS,IAAK7Q,MAAOoiB,IAAe,GAExCvlB,EAAI4L,EAAK5L,IAQhB,GALA8Z,EAAwB,KAFxBhS,EAAO3J,KAAM6B,IAEF0L,WAAoB5D,EAAKiB,WACjC,IAAMjB,EAAKiB,UAAY,KAAMN,QAASu8B,GAAQ,KAChD,IAGU,CAEV,IADApzB,EAAI,EACKuzB,EAAQD,EAAQtzB,MAExB,KAAQkI,EAAIlV,QAAS,IAAMugC,EAAQ,MAAS,GAC3CrrB,EAAMA,EAAIrR,QAAS,IAAM08B,EAAQ,IAAK,KAKxCC,EAAapxB,EAAQvD,EAAO3S,KAAMgc,GAAQ,GACrChS,EAAKiB,YAAcq8B,IACvBt9B,EAAKiB,UAAYq8B,GAMrB,OAAOjnC,MAGRonC,YAAa,SAAUvxB,EAAOwxB,GAC7B,IAAIn9B,SAAc2L,EAElB,MAAyB,kBAAbwxB,GAAmC,WAATn9B,EAC9Bm9B,EAAWrnC,KAAK8mC,SAAUjxB,GAAU7V,KAAKmnC,YAAatxB,GAGzDvD,EAAO0B,WAAY6B,GAChB7V,KAAKqE,MAAK,SAAUxC,GAC1ByQ,EAAQtS,MAAOonC,YAAavxB,EAAMlV,KAAKX,KAAM6B,EAAG7B,KAAK4K,UAAWy8B,GAAWA,MAItErnC,KAAKqE,MAAK,WAChB,GAAc,WAAT6F,EAOJ,IALA,IAAIU,EACH/I,EAAI,EACJwjB,EAAO/S,EAAQtS,MACfsnC,EAAazxB,EAAM7Q,MAAOoiB,IAAe,GAEjCxc,EAAY08B,EAAYzlC,MAE3BwjB,EAAKkiB,SAAU38B,GACnBya,EAAK8hB,YAAav8B,GAElBya,EAAKyhB,SAAUl8B,QAKNV,IAASihB,GAAyB,YAATjhB,IAC/BlK,KAAK4K,WAET0H,EAAOsa,MAAO5sB,KAAM,gBAAiBA,KAAK4K,WAO3C5K,KAAK4K,UAAY5K,KAAK4K,YAAuB,IAAViL,EAAkB,GAAKvD,EAAOsa,MAAO5sB,KAAM,kBAAqB,QAKtGunC,SAAU,SAAUtjC,GAInB,IAHA,IAAI2G,EAAY,IAAM3G,EAAW,IAChCpC,EAAI,EACJC,EAAI9B,KAAKgC,OACFH,EAAIC,EAAGD,IACd,GAA0B,IAArB7B,KAAK6B,GAAG0L,WAAmB,IAAMvN,KAAK6B,GAAG+I,UAAY,KAAKN,QAAQu8B,GAAQ,KAAKpgC,QAASmE,IAAe,EAC3G,OAAO,EAIT,OAAO,KAUT0H,EAAOjO,KAAM,0MAEqDrB,MAAM,MAAM,SAAUnB,EAAGiD,GAG1FwN,EAAOvP,GAAI+B,GAAS,SAAUuK,EAAMtM,GACnC,OAAOhB,UAAUC,OAAS,EACzBhC,KAAKqJ,GAAIvE,EAAM,KAAMuK,EAAMtM,GAC3B/C,KAAKsJ,QAASxE,OAIjBwN,EAAOvP,GAAG4K,OAAO,CAChB65B,MAAO,SAAUC,EAAQC,GACxB,OAAO1nC,KAAK00B,WAAY+S,GAAS9S,WAAY+S,GAASD,IAGvDtlC,KAAM,SAAU4tB,EAAO1gB,EAAMtM,GAC5B,OAAO/C,KAAKqJ,GAAI0mB,EAAO,KAAM1gB,EAAMtM,IAEpC4kC,OAAQ,SAAU5X,EAAOhtB,GACxB,OAAO/C,KAAKuJ,IAAKwmB,EAAO,KAAMhtB,IAG/BoM,SAAU,SAAUlL,EAAU8rB,EAAO1gB,EAAMtM,GAC1C,OAAO/C,KAAKqJ,GAAI0mB,EAAO9rB,EAAUoL,EAAMtM,IAExC6kC,WAAY,SAAU3jC,EAAU8rB,EAAOhtB,GAEtC,OAA4B,IAArBhB,UAAUC,OAAehC,KAAKuJ,IAAKtF,EAAU,MAASjE,KAAKuJ,IAAKwmB,EAAO9rB,GAAY,KAAMlB,MAKlG,IAAI8kC,GAAQv1B,EAAO2D,MAEf6xB,GAAS,KAITC,GAAe,mIAEnBz1B,EAAO0Z,UAAY,SAAU3c,GAE5B,GAAKrI,EAAOghC,MAAQhhC,EAAOghC,KAAKC,MAG/B,OAAOjhC,EAAOghC,KAAKC,MAAO54B,EAAO,IAGlC,IAAI64B,EACHC,EAAQ,KACRC,EAAM91B,EAAO3S,KAAM0P,EAAO,IAI3B,OAAO+4B,IAAQ91B,EAAO3S,KAAMyoC,EAAI99B,QAASy9B,IAAc,SAAUvjB,EAAO6jB,EAAOC,EAAM5N,GAQpF,OALKwN,GAAmBG,IACvBF,EAAQ,GAIM,IAAVA,EACG3jB,GAIR0jB,EAAkBI,GAAQD,EAM1BF,IAAUzN,GAAS4N,EAGZ,QAELv9B,SAAU,UAAYq9B,EAAxB,GACA91B,EAAO9K,MAAO,iBAAmB6H,IAKnCiD,EAAOi2B,SAAW,SAAUl5B,GAC3B,IAAIsQ,EACJ,IAAMtQ,GAAwB,iBAATA,EACpB,OAAO,KAER,IACMrI,EAAOwhC,UAEX7oB,GADM,IAAI6oB,WACAC,gBAAiBp5B,EAAM,cAEjCsQ,EAAM,IAAI+oB,cAAe,qBACrBC,MAAQ,QACZhpB,EAAIipB,QAASv5B,IAEb,MAAO7E,GACRmV,OAAM1e,EAKP,OAHM0e,GAAQA,EAAIvD,kBAAmBuD,EAAItF,qBAAsB,eAAgBrY,QAC9EsQ,EAAO9K,MAAO,gBAAkB6H,GAE1BsQ,GAIR,IAECkpB,GACAC,GAEAC,GAAQ,OACRC,GAAM,gBACNC,GAAW,gCAGXC,GAAa,iBACbC,GAAY,QACZC,GAAO,4DAWPC,GAAa,GAObC,GAAa,GAGbC,GAAW,KAAK3jC,OAAO,KAIxB,IACCkjC,GAAenoB,SAASG,KACvB,MAAOtW,IAGRs+B,GAAejyB,EAASwE,cAAe,MAC1ByF,KAAO,GACpBgoB,GAAeA,GAAahoB,KAO7B,SAAS0oB,GAA6BC,GAGrC,OAAO,SAAUC,EAAoBt7B,GAED,iBAAvBs7B,IACXt7B,EAAOs7B,EACPA,EAAqB,KAGtB,IAAIC,EACH9nC,EAAI,EACJ+nC,EAAYF,EAAmB/+B,cAAc3F,MAAOoiB,IAAe,GAEpE,GAAK9U,EAAO0B,WAAY5F,GAEvB,KAASu7B,EAAWC,EAAU/nC,MAEC,MAAzB8nC,EAASnkB,OAAQ,IACrBmkB,EAAWA,EAASxjC,MAAO,IAAO,KACjCsjC,EAAWE,GAAaF,EAAWE,IAAc,IAAI3jC,QAASoI,KAI9Dq7B,EAAWE,GAAaF,EAAWE,IAAc,IAAI/iC,KAAMwH,IAQjE,SAASy7B,GAA+BJ,EAAWtlC,EAAS0+B,EAAiBiH,GAE5E,IAAIC,EAAY,GACfC,EAAqBP,IAAcH,GAEpC,SAASW,EAASN,GACjB,IAAIzoB,EAYJ,OAXA6oB,EAAWJ,IAAa,EACxBr3B,EAAOjO,KAAMolC,EAAWE,IAAc,IAAI,SAAUzwB,EAAGgxB,GACtD,IAAIC,EAAsBD,EAAoB/lC,EAAS0+B,EAAiBiH,GACxE,MAAoC,iBAAxBK,GAAqCH,GAAqBD,EAAWI,GAIrEH,IACD9oB,EAAWipB,QADf,GAHNhmC,EAAQylC,UAAU5jC,QAASmkC,GAC3BF,EAASE,IACF,MAKFjpB,EAGR,OAAO+oB,EAAS9lC,EAAQylC,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,SAASG,GAAYxqC,EAAQ+T,GAC5B,IAAII,EAAMvN,EACT6jC,EAAc/3B,EAAOg4B,aAAaD,aAAe,GAElD,IAAM7jC,KAAOmN,OACQ1S,IAAf0S,EAAKnN,MACP6jC,EAAa7jC,GAAQ5G,EAAWmU,IAASA,EAAO,KAASvN,GAAQmN,EAAKnN,IAO1E,OAJKuN,GACJzB,EAAO3E,QAAQ,EAAM/N,EAAQmU,GAGvBnU,EA3ERipC,GAAeO,GAAKlvB,KAAM4uB,GAAan+B,gBAAmB,GAoO1D2H,EAAO3E,OAAO,CAGb48B,OAAQ,EAGRC,aAAc,GACdC,KAAM,GAENH,aAAc,CACbI,IAAK5B,GACL5+B,KAAM,MACNygC,QAvRgB,4DAuRQvgC,KAAMy+B,GAAc,IAC5C92B,QAAQ,EACR64B,aAAa,EACbjC,OAAO,EACPkC,YAAa,mDAabC,QAAS,CACR,IAAKvB,GACLr0B,KAAM,aACNokB,KAAM,YACN3Z,IAAK,4BACLorB,KAAM,qCAGPjlB,SAAU,CACTnG,IAAK,MACL2Z,KAAM,OACNyR,KAAM,QAGPC,eAAgB,CACfrrB,IAAK,cACLzK,KAAM,eACN61B,KAAM,gBAKPE,WAAY,CAGX,SAAU3xB,OAGV,aAAa,EAGb,YAAahH,EAAO0Z,UAGpB,WAAY1Z,EAAOi2B,UAOpB8B,YAAa,CACZK,KAAK,EACLl8B,SAAS,IAOX08B,UAAW,SAAUtrC,EAAQurC,GAC5B,OAAOA,EAGNf,GAAYA,GAAYxqC,EAAQ0S,EAAOg4B,cAAgBa,GAGvDf,GAAY93B,EAAOg4B,aAAc1qC,IAGnCwrC,cAAe5B,GAA6BH,IAC5CgC,cAAe7B,GAA6BF,IAG5CgC,KAAM,SAAUZ,EAAKvmC,GAGA,iBAARumC,IACXvmC,EAAUumC,EACVA,OAAMzpC,GAIPkD,EAAUA,GAAW,GAErB,IACCw7B,EAEA99B,EAEA0pC,EAEAC,EAEAC,EAGAC,EAEAC,EAEAC,EAEAC,EAAIv5B,EAAO44B,UAAW,GAAI/mC,GAE1B2nC,EAAkBD,EAAEr9B,SAAWq9B,EAE/BE,EAAqBF,EAAEr9B,UAAas9B,EAAgBv+B,UAAYu+B,EAAgBh6B,QAC/EQ,EAAQw5B,GACRx5B,EAAOlG,MAER+c,EAAW7W,EAAOwW,WAClBkjB,EAAmB15B,EAAOqV,UAAU,eAEpCskB,EAAaJ,EAAEI,YAAc,GAE7BC,EAAiB,GACjBC,EAAsB,GAEtBnjB,EAAQ,EAERojB,EAAW,WAEXtC,EAAQ,CACPpiB,WAAY,EAGZ2kB,kBAAmB,SAAU7lC,GAC5B,IAAIxB,EACJ,GAAe,IAAVgkB,EAAc,CAClB,IAAM4iB,EAEL,IADAA,EAAkB,GACT5mC,EAAQikC,GAAS/uB,KAAMsxB,IAC/BI,EAAiB5mC,EAAM,GAAG2F,eAAkB3F,EAAO,GAGrDA,EAAQ4mC,EAAiBplC,EAAImE,eAE9B,OAAgB,MAAT3F,EAAgB,KAAOA,GAI/BsnC,sBAAuB,WACtB,OAAiB,IAAVtjB,EAAcwiB,EAAwB,MAI9Ce,iBAAkB,SAAUznC,EAAM+Q,GACjC,IAAI22B,EAAQ1nC,EAAK6F,cAKjB,OAJMqe,IACLlkB,EAAOqnC,EAAqBK,GAAUL,EAAqBK,IAAW1nC,EACtEonC,EAAgBpnC,GAAS+Q,GAEnB7V,MAIRysC,iBAAkB,SAAUviC,GAI3B,OAHM8e,IACL6iB,EAAEa,SAAWxiC,GAEPlK,MAIRisC,WAAY,SAAUrnC,GACrB,IAAI+nC,EACJ,GAAK/nC,EACJ,GAAKokB,EAAQ,EACZ,IAAM2jB,KAAQ/nC,EAEbqnC,EAAYU,GAAS,CAAEV,EAAYU,GAAQ/nC,EAAK+nC,SAIjD7C,EAAM5gB,OAAQtkB,EAAKklC,EAAM8C,SAG3B,OAAO5sC,MAIR6sC,MAAO,SAAUC,GAChB,IAAIC,EAAYD,GAAcV,EAK9B,OAJKT,GACJA,EAAUkB,MAAOE,GAElB11B,EAAM,EAAG01B,GACF/sC,OAwCV,GAnCAmpB,EAASF,QAAS6gB,GAAQ5G,SAAW8I,EAAiBxlB,IACtDsjB,EAAMkD,QAAUlD,EAAMzyB,KACtByyB,EAAMtiC,MAAQsiC,EAAM1gB,KAMpByiB,EAAEnB,MAAUA,GAAOmB,EAAEnB,KAAO5B,IAAiB,IAAKx+B,QAASy+B,GAAO,IAAKz+B,QAAS6+B,GAAWN,GAAc,GAAM,MAG/GgD,EAAE3hC,KAAO/F,EAAQrB,QAAUqB,EAAQ+F,MAAQ2hC,EAAE/oC,QAAU+oC,EAAE3hC,KAGzD2hC,EAAEjC,UAAYt3B,EAAO3S,KAAMksC,EAAElC,UAAY,KAAMh/B,cAAc3F,MAAOoiB,IAAe,CAAE,IAG/D,MAAjBykB,EAAEoB,cACNtN,EAAQyJ,GAAKlvB,KAAM2xB,EAAEnB,IAAI//B,eACzBkhC,EAAEoB,eAAkBtN,GACjBA,EAAO,KAAQkJ,GAAc,IAAOlJ,EAAO,KAAQkJ,GAAc,KAChElJ,EAAO,KAAwB,UAAfA,EAAO,GAAkB,KAAO,WAC/CkJ,GAAc,KAA+B,UAAtBA,GAAc,GAAkB,KAAO,UAK/DgD,EAAEx8B,MAAQw8B,EAAEjB,aAAiC,iBAAXiB,EAAEx8B,OACxCw8B,EAAEx8B,KAAOiD,EAAOokB,MAAOmV,EAAEx8B,KAAMw8B,EAAEqB,cAIlCrD,GAA+BR,GAAYwC,EAAG1nC,EAAS2lC,GAGxC,IAAV9gB,EACJ,OAAO8gB,EAoER,IAAMjoC,KA/DN6pC,EAAcp5B,EAAOlG,OAASy/B,EAAE95B,SAGQ,GAApBO,EAAOi4B,UAC1Bj4B,EAAOlG,MAAM9C,QAAQ,aAItBuiC,EAAE3hC,KAAO2hC,EAAE3hC,KAAK4I,cAGhB+4B,EAAEsB,YAAcjE,GAAW9+B,KAAMyhC,EAAE3hC,MAInCqhC,EAAWM,EAAEnB,IAGPmB,EAAEsB,aAGFtB,EAAEx8B,OACNk8B,EAAaM,EAAEnB,MAAS5C,GAAO19B,KAAMmhC,GAAa,IAAM,KAAQM,EAAEx8B,YAE3Dw8B,EAAEx8B,OAIO,IAAZw8B,EAAE9wB,QACN8wB,EAAEnB,IAAM1B,GAAI5+B,KAAMmhC,GAGjBA,EAASjhC,QAAS0+B,GAAK,OAASnB,MAGhC0D,GAAazD,GAAO19B,KAAMmhC,GAAa,IAAM,KAAQ,KAAO1D,OAK1DgE,EAAEuB,aACD96B,EAAOk4B,aAAce,IACzBzB,EAAMyC,iBAAkB,oBAAqBj6B,EAAOk4B,aAAce,IAE9Dj5B,EAAOm4B,KAAMc,IACjBzB,EAAMyC,iBAAkB,gBAAiBj6B,EAAOm4B,KAAMc,MAKnDM,EAAEx8B,MAAQw8B,EAAEsB,aAAgC,IAAlBtB,EAAEhB,aAAyB1mC,EAAQ0mC,cACjEf,EAAMyC,iBAAkB,eAAgBV,EAAEhB,aAI3Cf,EAAMyC,iBACL,SACAV,EAAEjC,UAAW,IAAOiC,EAAEf,QAASe,EAAEjC,UAAU,IAC1CiC,EAAEf,QAASe,EAAEjC,UAAU,KAA8B,MAArBiC,EAAEjC,UAAW,GAAc,KAAOL,GAAW,WAAa,IAC1FsC,EAAEf,QAAS,MAIFe,EAAEwB,QACZvD,EAAMyC,iBAAkB1qC,EAAGgqC,EAAEwB,QAASxrC,IAIvC,GAAKgqC,EAAEyB,cAAmE,IAAnDzB,EAAEyB,WAAW3sC,KAAMmrC,EAAiBhC,EAAO+B,IAA2B,IAAV7iB,GAElF,OAAO8gB,EAAM+C,QAOd,IAAMhrC,KAHNuqC,EAAW,QAGA,CAAEY,QAAS,EAAGxlC,MAAO,EAAG07B,SAAU,GAC5C4G,EAAOjoC,GAAKgqC,EAAGhqC,IAOhB,GAHA8pC,EAAY9B,GAA+BP,GAAYuC,EAAG1nC,EAAS2lC,GAK5D,CACNA,EAAMpiB,WAAa,EAGdgkB,GACJK,EAAmBziC,QAAS,WAAY,CAAEwgC,EAAO+B,IAG7CA,EAAElD,OAASkD,EAAEt9B,QAAU,IAC3Bk9B,EAAe78B,YAAW,WACzBk7B,EAAM+C,MAAM,aACVhB,EAAEt9B,UAGN,IACCya,EAAQ,EACR2iB,EAAU4B,KAAMrB,EAAgB70B,GAC/B,MAAQ7M,GAET,KAAKwe,EAAQ,GAIZ,MAAMxe,EAHN6M,GAAO,EAAG7M,SArBZ6M,GAAO,EAAG,gBA8BX,SAASA,EAAMu1B,EAAQY,EAAkBC,EAAWJ,GACnD,IAAIK,EAAWV,EAASxlC,EAAOmmC,EAAUC,EACxCd,EAAaU,EAGC,IAAVxkB,IAKLA,EAAQ,EAGHyiB,GACJ98B,aAAc88B,GAKfE,OAAY1qC,EAGZuqC,EAAwB6B,GAAW,GAGnCvD,EAAMpiB,WAAaklB,EAAS,EAAI,EAAI,EAGpCc,EAAYd,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCa,IACJE,EAniBJ,SAA8B9B,EAAG/B,EAAO2D,GAMvC,IALA,IAAII,EAAeC,EAAIC,EAAe7jC,EACrC4b,EAAW+lB,EAAE/lB,SACb8jB,EAAYiC,EAAEjC,UAGY,MAAnBA,EAAW,IAClBA,EAAU3uB,aACEha,IAAP6sC,IACJA,EAAKjC,EAAEa,UAAY5C,EAAMuC,kBAAkB,iBAK7C,GAAKyB,EACJ,IAAM5jC,KAAQ4b,EACb,GAAKA,EAAU5b,IAAU4b,EAAU5b,GAAOE,KAAM0jC,GAAO,CACtDlE,EAAU5jC,QAASkE,GACnB,MAMH,GAAK0/B,EAAW,KAAO6D,EACtBM,EAAgBnE,EAAW,OACrB,CAEN,IAAM1/B,KAAQujC,EAAY,CACzB,IAAM7D,EAAW,IAAOiC,EAAEZ,WAAY/gC,EAAO,IAAM0/B,EAAU,IAAO,CACnEmE,EAAgB7jC,EAChB,MAEK2jC,IACLA,EAAgB3jC,GAIlB6jC,EAAgBA,GAAiBF,EAMlC,GAAKE,EAIJ,OAHKA,IAAkBnE,EAAW,IACjCA,EAAU5jC,QAAS+nC,GAEbN,EAAWM,GAmfLC,CAAqBnC,EAAG/B,EAAO2D,IAI3CE,EAhfH,SAAsB9B,EAAG8B,EAAU7D,EAAO4D,GACzC,IAAIO,EAAOC,EAASC,EAAMn4B,EAAKgQ,EAC9BilB,EAAa,GAEbrB,EAAYiC,EAAEjC,UAAUzjC,QAGzB,GAAKyjC,EAAW,GACf,IAAMuE,KAAQtC,EAAEZ,WACfA,EAAYkD,EAAKxjC,eAAkBkhC,EAAEZ,WAAYkD,GAOnD,IAHAD,EAAUtE,EAAU3uB,QAGZizB,GAcP,GAZKrC,EAAEb,eAAgBkD,KACtBpE,EAAO+B,EAAEb,eAAgBkD,IAAcP,IAIlC3nB,GAAQ0nB,GAAa7B,EAAEuC,aAC5BT,EAAW9B,EAAEuC,WAAYT,EAAU9B,EAAElC,WAGtC3jB,EAAOkoB,EACPA,EAAUtE,EAAU3uB,QAKnB,GAAiB,MAAZizB,EAEJA,EAAUloB,OAGJ,GAAc,MAATA,GAAgBA,IAASkoB,EAAU,CAM9C,KAHAC,EAAOlD,EAAYjlB,EAAO,IAAMkoB,IAAajD,EAAY,KAAOiD,IAI/D,IAAMD,KAAShD,EAId,IADAj1B,EAAMi4B,EAAMjrC,MAAO,MACT,KAAQkrC,IAGjBC,EAAOlD,EAAYjlB,EAAO,IAAMhQ,EAAK,KACpCi1B,EAAY,KAAOj1B,EAAK,KACb,EAEG,IAATm4B,EACJA,EAAOlD,EAAYgD,IAGgB,IAAxBhD,EAAYgD,KACvBC,EAAUl4B,EAAK,GACf4zB,EAAU5jC,QAASgQ,EAAK,KAEzB,MAOJ,IAAc,IAATm4B,EAGJ,GAAKA,GAAQtC,EAAY,OACxB8B,EAAWQ,EAAMR,QAEjB,IACCA,EAAWQ,EAAMR,GAChB,MAAQnjC,GACT,MAAO,CAAEwe,MAAO,cAAexhB,MAAO2mC,EAAO3jC,EAAI,sBAAwBwb,EAAO,OAASkoB,IAQ/F,MAAO,CAAEllB,MAAO,UAAW3Z,KAAMs+B,GAwZpBU,CAAaxC,EAAG8B,EAAU7D,EAAO4D,GAGvCA,GAGC7B,EAAEuB,cACNQ,EAAW9D,EAAMuC,kBAAkB,oBAElC/5B,EAAOk4B,aAAce,GAAaqC,IAEnCA,EAAW9D,EAAMuC,kBAAkB,WAElC/5B,EAAOm4B,KAAMc,GAAaqC,IAKZ,MAAXhB,GAA6B,SAAXf,EAAE3hC,KACxB4iC,EAAa,YAGS,MAAXF,EACXE,EAAa,eAIbA,EAAaa,EAAS3kB,MACtBgkB,EAAUW,EAASt+B,KAEnBq+B,IADAlmC,EAAQmmC,EAASnmC,UAMlBA,EAAQslC,GACHF,GAAWE,IACfA,EAAa,QACRF,EAAS,IACbA,EAAS,KAMZ9C,EAAM8C,OAASA,EACf9C,EAAMgD,YAAeU,GAAoBV,GAAe,GAGnDY,EACJvkB,EAASuB,YAAaohB,EAAiB,CAAEkB,EAASF,EAAYhD,IAE9D3gB,EAAS4Z,WAAY+I,EAAiB,CAAEhC,EAAOgD,EAAYtlC,IAI5DsiC,EAAMmC,WAAYA,GAClBA,OAAahrC,EAERyqC,GACJK,EAAmBziC,QAASokC,EAAY,cAAgB,YACvD,CAAE5D,EAAO+B,EAAG6B,EAAYV,EAAUxlC,IAIpCwkC,EAAiBnjB,SAAUijB,EAAiB,CAAEhC,EAAOgD,IAEhDpB,IACJK,EAAmBziC,QAAS,eAAgB,CAAEwgC,EAAO+B,MAE3Cv5B,EAAOi4B,QAChBj4B,EAAOlG,MAAM9C,QAAQ,cAKxB,OAAOwgC,GAGRwE,QAAS,SAAU5D,EAAKr7B,EAAMjE,GAC7B,OAAOkH,EAAOW,IAAKy3B,EAAKr7B,EAAMjE,EAAU,SAGzCmjC,UAAW,SAAU7D,EAAKt/B,GACzB,OAAOkH,EAAOW,IAAKy3B,OAAKzpC,EAAWmK,EAAU,aAI/CkH,EAAOjO,KAAM,CAAE,MAAO,SAAU,SAAUxC,EAAGiB,GAC5CwP,EAAQxP,GAAW,SAAU4nC,EAAKr7B,EAAMjE,EAAUlB,GAQjD,OANKoI,EAAO0B,WAAY3E,KACvBnF,EAAOA,GAAQkB,EACfA,EAAWiE,EACXA,OAAOpO,GAGDqR,EAAOg5B,KAAK,CAClBZ,IAAKA,EACLxgC,KAAMpH,EACN6mC,SAAUz/B,EACVmF,KAAMA,EACN29B,QAAS5hC,QAMZkH,EAAOsnB,SAAW,SAAU8Q,GAC3B,OAAOp4B,EAAOg5B,KAAK,CAClBZ,IAAKA,EACLxgC,KAAM,MACNy/B,SAAU,SACVhB,OAAO,EACP52B,QAAQ,EACR,QAAU,KAKZO,EAAOvP,GAAG4K,OAAO,CAChB6gC,QAAS,SAAUlV,GAClB,GAAKhnB,EAAO0B,WAAYslB,GACvB,OAAOt5B,KAAKqE,MAAK,SAASxC,GACzByQ,EAAOtS,MAAMwuC,QAASlV,EAAK34B,KAAKX,KAAM6B,OAIxC,GAAK7B,KAAK,GAAK,CAEd,IAAI64B,EAAOvmB,EAAQgnB,EAAMt5B,KAAK,GAAGia,eAAgB1G,GAAG,GAAGO,OAAM,GAExD9T,KAAK,GAAGoa,YACZye,EAAKO,aAAcp5B,KAAK,IAGzB64B,EAAKj0B,KAAI,WAGR,IAFA,IAAI+E,EAAO3J,KAEH2J,EAAK+U,YAA2C,IAA7B/U,EAAK+U,WAAWnR,UAC1C5D,EAAOA,EAAK+U,WAGb,OAAO/U,KACLsvB,OAAQj5B,MAGZ,OAAOA,MAGRyuC,UAAW,SAAUnV,GACpB,OAAKhnB,EAAO0B,WAAYslB,GAChBt5B,KAAKqE,MAAK,SAASxC,GACzByQ,EAAOtS,MAAMyuC,UAAWnV,EAAK34B,KAAKX,KAAM6B,OAInC7B,KAAKqE,MAAK,WAChB,IAAIghB,EAAO/S,EAAQtS,MAClB8lB,EAAWT,EAAKS,WAEZA,EAAS9jB,OACb8jB,EAAS0oB,QAASlV,GAGlBjU,EAAK4T,OAAQK,OAKhBT,KAAM,SAAUS,GACf,IAAItlB,EAAa1B,EAAO0B,WAAYslB,GAEpC,OAAOt5B,KAAKqE,MAAK,SAASxC,GACzByQ,EAAQtS,MAAOwuC,QAASx6B,EAAaslB,EAAK34B,KAAKX,KAAM6B,GAAKy3B,OAI5DoV,OAAQ,WACP,OAAO1uC,KAAKC,SAASoE,MAAK,WACnBiO,EAAO2C,SAAUjV,KAAM,SAC5BsS,EAAQtS,MAAOu5B,YAAav5B,KAAKyZ,eAEhCpO,SAKLiH,EAAOnI,KAAKqZ,QAAQ8a,OAAS,SAAU30B,GAGtC,OAAOA,EAAK8hB,aAAe,GAAK9hB,EAAK6yB,cAAgB,IAClDpqB,EAAQ4qB,yBACiE,UAAxErzB,EAAK2hB,OAAS3hB,EAAK2hB,MAAMgP,SAAYhoB,EAAOsb,IAAKjkB,EAAM,aAG5D2I,EAAOnI,KAAKqZ,QAAQmrB,QAAU,SAAUhlC,GACvC,OAAQ2I,EAAOnI,KAAKqZ,QAAQ8a,OAAQ30B,IAMrC,IAAIilC,GAAM,OACTC,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAa1P,EAAQj9B,EAAK4qC,EAAa1mB,GAC/C,IAAI1hB,EAEJ,GAAKwN,EAAO4B,QAAS5R,GAEpBgQ,EAAOjO,KAAM/B,GAAK,SAAUT,EAAGqtC,GACzBhC,GAAe2B,GAASzkC,KAAMm1B,GAElC/Y,EAAK+Y,EAAQ2P,GAIbD,GAAa1P,EAAS,KAAqB,iBAAN2P,EAAiBrtC,EAAI,IAAO,IAAKqtC,EAAGhC,EAAa1mB,WAIlF,GAAM0mB,GAAsC,WAAvB56B,EAAOpI,KAAM5H,GAQxCkkB,EAAK+Y,EAAQj9B,QANb,IAAMwC,KAAQxC,EACb2sC,GAAa1P,EAAS,IAAMz6B,EAAO,IAAKxC,EAAKwC,GAAQooC,EAAa1mB,GAWrElU,EAAOokB,MAAQ,SAAUnrB,EAAG2hC,GAC3B,IAAI3N,EACHsM,EAAI,GACJrlB,EAAM,SAAUhgB,EAAKqP,GAEpBA,EAAQvD,EAAO0B,WAAY6B,GAAUA,IAAqB,MAATA,EAAgB,GAAKA,EACtEg2B,EAAGA,EAAE7pC,QAAWmtC,mBAAoB3oC,GAAQ,IAAM2oC,mBAAoBt5B,IASxE,QALqB5U,IAAhBisC,IACJA,EAAc56B,EAAOg4B,cAAgBh4B,EAAOg4B,aAAa4C,aAIrD56B,EAAO4B,QAAS3I,IAASA,EAAEuG,SAAWQ,EAAO2B,cAAe1I,GAEhE+G,EAAOjO,KAAMkH,GAAG,WACfib,EAAKxmB,KAAK8E,KAAM9E,KAAK6V,eAMtB,IAAM0pB,KAAUh0B,EACf0jC,GAAa1P,EAAQh0B,EAAGg0B,GAAU2N,EAAa1mB,GAKjD,OAAOqlB,EAAE1mC,KAAM,KAAMmF,QAASskC,GAAK,MAGpCt8B,EAAOvP,GAAG4K,OAAO,CAChByhC,UAAW,WACV,OAAO98B,EAAOokB,MAAO12B,KAAKqvC,mBAE3BA,eAAgB,WACf,OAAOrvC,KAAK4E,KAAI,WAEf,IAAIsZ,EAAW5L,EAAOpL,KAAMlH,KAAM,YAClC,OAAOke,EAAW5L,EAAO6C,UAAW+I,GAAale,QAEjDiF,QAAO,WACP,IAAIiF,EAAOlK,KAAKkK,KAEhB,OAAOlK,KAAK8E,OAASwN,EAAQtS,MAAOslB,GAAI,cACvC0pB,GAAa5kC,KAAMpK,KAAKiV,YAAe85B,GAAgB3kC,KAAMF,KAC3DlK,KAAKihB,UAAYiN,EAAe9jB,KAAMF,OAEzCtF,KAAI,SAAU/C,EAAG8H,GACjB,IAAIwU,EAAM7L,EAAQtS,MAAOme,MAEzB,OAAc,MAAPA,EACN,KACA7L,EAAO4B,QAASiK,GACf7L,EAAO1N,IAAKuZ,GAAK,SAAUA,GAC1B,MAAO,CAAErZ,KAAM6E,EAAK7E,KAAM+Q,MAAOsI,EAAI7T,QAASwkC,GAAO,YAEtD,CAAEhqC,KAAM6E,EAAK7E,KAAM+Q,MAAOsI,EAAI7T,QAASwkC,GAAO,YAC9C77B,SAOLX,EAAOg4B,aAAagF,SAA+BruC,IAAzB+F,EAAO0hC,cAEhC,WAGC,OAAQ1oC,KAAK2qC,SAQZ,wCAAwCvgC,KAAMpK,KAAKkK,OAEnDqlC,MAuKH,WACC,IACC,OAAO,IAAIvoC,EAAO0hC,cAAe,qBAChC,MAAOl+B,KA1KgBglC,IAGzBD,GAED,IAAIE,GAAQ,EACXC,GAAe,GACfC,GAAer9B,EAAOg4B,aAAagF,MA0JpC,SAASC,KACR,IACC,OAAO,IAAIvoC,EAAO4oC,eACjB,MAAOplC,KAxJLxD,EAAO0V,aACX1V,EAAO0V,YAAa,YAAY,WAC/B,IAAM,IAAIlW,KAAOkpC,GAChBA,GAAclpC,QAAOvF,GAAW,MAMnCmR,EAAQy9B,OAASF,IAAkB,oBAAqBA,IACxDA,GAAev9B,EAAQk5B,OAASqE,KAK/Br9B,EAAO+4B,eAAc,SAAUlnC,GAI7B,IAAIiH,EAFL,IAAMjH,EAAQ8oC,aAAe76B,EAAQy9B,KAIpC,MAAO,CACNtC,KAAM,SAAUF,EAASnK,GACxB,IAAIrhC,EACHytC,EAAMnrC,EAAQmrC,MACd7uC,IAAOgvC,GAMR,GAHAH,EAAIhH,KAAMnkC,EAAQ+F,KAAM/F,EAAQumC,IAAKvmC,EAAQwkC,MAAOxkC,EAAQ2rC,SAAU3rC,EAAQod,UAGzEpd,EAAQ4rC,UACZ,IAAMluC,KAAKsC,EAAQ4rC,UAClBT,EAAKztC,GAAMsC,EAAQ4rC,UAAWluC,GAmBhC,IAAMA,KAdDsC,EAAQuoC,UAAY4C,EAAI7C,kBAC5B6C,EAAI7C,iBAAkBtoC,EAAQuoC,UAQzBvoC,EAAQ8oC,aAAgBI,EAAQ,sBACrCA,EAAQ,oBAAsB,kBAIpBA,OAOYpsC,IAAjBosC,EAASxrC,IACbytC,EAAI/C,iBAAkB1qC,EAAGwrC,EAASxrC,GAAM,IAO1CytC,EAAI/B,KAAQppC,EAAQgpC,YAAchpC,EAAQkL,MAAU,MAGpDjE,EAAW,SAAU8N,EAAG82B,GACvB,IAAIpD,EAAQE,EAAYW,EAGxB,GAAKriC,IAAc4kC,GAA8B,IAAnBV,EAAI5nB,YAOjC,UALOgoB,GAAcjvC,GACrB2K,OAAWnK,EACXquC,EAAIW,mBAAqB39B,EAAOkC,KAG3Bw7B,EACoB,IAAnBV,EAAI5nB,YACR4nB,EAAIzC,YAEC,CACNY,EAAY,GACZb,EAAS0C,EAAI1C,OAKoB,iBAArB0C,EAAIY,eACfzC,EAAUv4B,KAAOo6B,EAAIY,cAKtB,IACCpD,EAAawC,EAAIxC,WAChB,MAAOtiC,GAERsiC,EAAa,GAQRF,IAAUzoC,EAAQwmC,SAAYxmC,EAAQ8oC,YAGrB,OAAXL,IACXA,EAAS,KAHTA,EAASa,EAAUv4B,KAAO,IAAM,IAS9Bu4B,GACJvK,EAAU0J,EAAQE,EAAYW,EAAW6B,EAAIhD,0BAIzCnoC,EAAQwkC,MAGiB,IAAnB2G,EAAI5nB,WAGf9Y,WAAYxD,GAGZkkC,EAAIW,mBAAqBP,GAAcjvC,GAAO2K,EAP9CA,KAWFyhC,MAAO,WACDzhC,GACJA,OAAUnK,GAAW,QAyB3BqR,EAAO44B,UAAU,CAChBJ,QAAS,CACRqF,OAAQ,6FAETrqB,SAAU,CACTqqB,OAAQ,uBAETlF,WAAY,CACX,cAAe,SAAU/1B,GAExB,OADA5C,EAAOuC,WAAYK,GACZA,MAMV5C,EAAO84B,cAAe,UAAU,SAAUS,QACxB5qC,IAAZ4qC,EAAE9wB,QACN8wB,EAAE9wB,OAAQ,GAEN8wB,EAAEoB,cACNpB,EAAE3hC,KAAO,MACT2hC,EAAE95B,QAAS,MAKbO,EAAO+4B,cAAe,UAAU,SAASQ,GAGxC,GAAKA,EAAEoB,YAAc,CAEpB,IAAIkD,EACHC,EAAOv5B,EAASu5B,MAAQ99B,EAAO,QAAQ,IAAMuE,EAASuF,gBAEvD,MAAO,CAENmxB,KAAM,SAAUr0B,EAAG9N,IAElB+kC,EAASt5B,EAASwE,cAAc,WAEzBstB,OAAQ,EAEVkD,EAAEwE,gBACNF,EAAOG,QAAUzE,EAAEwE,eAGpBF,EAAOx8B,IAAMk4B,EAAEnB,IAGfyF,EAAOI,OAASJ,EAAOF,mBAAqB,SAAU/2B,EAAG82B,IAEnDA,IAAYG,EAAOzoB,YAAc,kBAAkBtd,KAAM+lC,EAAOzoB,eAGpEyoB,EAAOI,OAASJ,EAAOF,mBAAqB,KAGvCE,EAAO/1B,YACX+1B,EAAO/1B,WAAWkB,YAAa60B,GAIhCA,EAAS,KAGHH,GACL5kC,EAAU,IAAK,aAOlBglC,EAAKhX,aAAc+W,EAAQC,EAAK1xB,aAGjCmuB,MAAO,WACDsD,GACJA,EAAOI,YAAQtvC,GAAW,SAU/B,IAAIuvC,GAAe,GAClBC,GAAS,oBAGVn+B,EAAO44B,UAAU,CAChBwF,MAAO,WACPC,cAAe,WACd,IAAIvlC,EAAWolC,GAAaxmC,OAAWsI,EAAO6B,QAAU,IAAQ0zB,KAEhE,OADA7nC,KAAMoL,IAAa,EACZA,KAKTkH,EAAO84B,cAAe,cAAc,SAAUS,EAAG+E,EAAkB9G,GAElE,IAAI+G,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZnF,EAAE6E,QAAqBD,GAAOrmC,KAAMyhC,EAAEnB,KAChD,MACkB,iBAAXmB,EAAEx8B,QAAwBw8B,EAAEhB,aAAe,IAAKpkC,QAAQ,sCAAwCgqC,GAAOrmC,KAAMyhC,EAAEx8B,OAAU,QAIlI,GAAK2hC,GAAiC,UAArBnF,EAAEjC,UAAW,GAsD7B,OAnDAiH,EAAehF,EAAE8E,cAAgBr+B,EAAO0B,WAAY63B,EAAE8E,eACrD9E,EAAE8E,gBACF9E,EAAE8E,cAGEK,EACJnF,EAAGmF,GAAanF,EAAGmF,GAAW1mC,QAASmmC,GAAQ,KAAOI,IAC/B,IAAZhF,EAAE6E,QACb7E,EAAEnB,MAAS5C,GAAO19B,KAAMyhC,EAAEnB,KAAQ,IAAM,KAAQmB,EAAE6E,MAAQ,IAAMG,GAIjEhF,EAAEZ,WAAW,eAAiB,WAI7B,OAHM8F,GACLz+B,EAAO9K,MAAOqpC,EAAe,mBAEvBE,EAAmB,IAI3BlF,EAAEjC,UAAW,GAAM,OAGnBkH,EAAc9pC,EAAQ6pC,GACtB7pC,EAAQ6pC,GAAiB,WACxBE,EAAoBhvC,WAIrB+nC,EAAM5gB,QAAO,WAEZliB,EAAQ6pC,GAAiBC,EAGpBjF,EAAGgF,KAEPhF,EAAE8E,cAAgBC,EAAiBD,cAGnCH,GAAa5pC,KAAMiqC,IAIfE,GAAqBz+B,EAAO0B,WAAY88B,IAC5CA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAc7vC,KAI5B,YAUTqR,EAAOmT,UAAY,SAAUpW,EAAMb,EAASyiC,GAC3C,IAAM5hC,GAAwB,iBAATA,EACpB,OAAO,KAEgB,kBAAZb,IACXyiC,EAAcziC,EACdA,GAAU,GAEXA,EAAUA,GAAWqI,EAErB,IAAIq6B,EAASlsB,EAAW9K,KAAM7K,GAC7BspB,GAAWsY,GAAe,GAG3B,OAAKC,EACG,CAAE1iC,EAAQ6M,cAAe61B,EAAO,MAGxCA,EAAS5+B,EAAOomB,cAAe,CAAErpB,GAAQb,EAASmqB,GAE7CA,GAAWA,EAAQ32B,QACvBsQ,EAAQqmB,GAAUlQ,SAGZnW,EAAOlO,MAAO,GAAI8sC,EAAOz3B,cAKjC,IAAI03B,GAAQ7+B,EAAOvP,GAAG+wB,KAKtBxhB,EAAOvP,GAAG+wB,KAAO,SAAU4W,EAAK0G,EAAQhmC,GACvC,GAAoB,iBAARs/B,GAAoByG,GAC/B,OAAOA,GAAM1vC,MAAOzB,KAAM+B,WAG3B,IAAIkC,EAAU0pC,EAAUzjC,EACvBmb,EAAOrlB,KACPuJ,EAAMmhC,EAAIjkC,QAAQ,KA+CnB,OA7CK8C,GAAO,IACXtF,EAAWqO,EAAO3S,KAAM+qC,EAAIvkC,MAAOoD,EAAKmhC,EAAI1oC,SAC5C0oC,EAAMA,EAAIvkC,MAAO,EAAGoD,IAIhB+I,EAAO0B,WAAYo9B,IAGvBhmC,EAAWgmC,EACXA,OAASnwC,GAGEmwC,GAA4B,iBAAXA,IAC5BlnC,EAAO,QAIHmb,EAAKrjB,OAAS,GAClBsQ,EAAOg5B,KAAK,CACXZ,IAAKA,EAGLxgC,KAAMA,EACNy/B,SAAU,OACVt6B,KAAM+hC,IACJ/5B,MAAK,SAAU64B,GAGjBvC,EAAW5rC,UAEXsjB,EAAKiU,KAAMr1B,EAIVqO,EAAO,SAAS2mB,OAAQ3mB,EAAOmT,UAAWyqB,IAAiB1nC,KAAMvE,GAGjEisC,MAEChN,SAAU93B,GAAY,SAAU0+B,EAAO8C,GACzCvnB,EAAKhhB,KAAM+G,EAAUuiC,GAAY,CAAE7D,EAAMoG,aAActD,EAAQ9C,MAI1D9pC,MAORsS,EAAOjO,KAAM,CAAE,YAAa,WAAY,eAAgB,YAAa,cAAe,aAAc,SAAUxC,EAAGqI,GAC9GoI,EAAOvP,GAAImH,GAAS,SAAUnH,GAC7B,OAAO/C,KAAKqJ,GAAIa,EAAMnH,OAOxBuP,EAAOnI,KAAKqZ,QAAQ6tB,SAAW,SAAU1nC,GACxC,OAAO2I,EAAOkD,KAAKlD,EAAOwxB,QAAQ,SAAU/gC,GAC3C,OAAO4G,IAAS5G,EAAG4G,QACjB3H,QAOJ,IAAI8U,GAAU9P,EAAO6P,SAASuF,gBAK9B,SAASk1B,GAAW3nC,GACnB,OAAO2I,EAAOU,SAAUrJ,GACvBA,EACkB,IAAlBA,EAAK4D,WACJ5D,EAAK4S,aAAe5S,EAAKgoB,cAI5Brf,EAAOi/B,OAAS,CACfC,UAAW,SAAU7nC,EAAMxF,EAAStC,GACnC,IAAI4vC,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvDnU,EAAWrrB,EAAOsb,IAAKjkB,EAAM,YAC7BooC,EAAUz/B,EAAQ3I,GAClBipB,EAAQ,GAGS,WAAb+K,IACJh0B,EAAK2hB,MAAMqS,SAAW,YAGvBkU,EAAYE,EAAQR,SACpBI,EAAYr/B,EAAOsb,IAAKjkB,EAAM,OAC9BmoC,EAAax/B,EAAOsb,IAAKjkB,EAAM,SACI,aAAbg0B,GAAwC,UAAbA,IAChDrrB,EAAO+C,QAAQ,OAAQ,CAAEs8B,EAAWG,KAAkB,GAKtDF,GADAH,EAAcM,EAAQpU,YACDnhB,IACrBk1B,EAAUD,EAAY5V,OAEtB+V,EAASl9B,WAAYi9B,IAAe,EACpCD,EAAUh9B,WAAYo9B,IAAgB,GAGlCx/B,EAAO0B,WAAY7P,KACvBA,EAAUA,EAAQxD,KAAMgJ,EAAM9H,EAAGgwC,IAGd,MAAf1tC,EAAQqY,MACZoW,EAAMpW,IAAQrY,EAAQqY,IAAMq1B,EAAUr1B,IAAQo1B,GAE1B,MAAhBztC,EAAQ03B,OACZjJ,EAAMiJ,KAAS13B,EAAQ03B,KAAOgW,EAAUhW,KAAS6V,GAG7C,UAAWvtC,EACfA,EAAQ6tC,MAAMrxC,KAAMgJ,EAAMipB,GAE1Bmf,EAAQnkB,IAAKgF,KAKhBtgB,EAAOvP,GAAG4K,OAAO,CAChB4jC,OAAQ,SAAUptC,GACjB,GAAKpC,UAAUC,OACd,YAAmBf,IAAZkD,EACNnE,KACAA,KAAKqE,MAAK,SAAUxC,GACnByQ,EAAOi/B,OAAOC,UAAWxxC,KAAMmE,EAAStC,MAI3C,IAAIiV,EAASm7B,EACZC,EAAM,CAAE11B,IAAK,EAAGqf,KAAM,GACtBlyB,EAAO3J,KAAM,GACbsc,EAAM3S,GAAQA,EAAKsQ,cAEpB,OAAMqC,GAINxF,EAAUwF,EAAIF,gBAGR9J,EAAO4E,SAAUJ,EAASnN,WAMpBA,EAAKwoC,wBAA0BhnB,IAC1C+mB,EAAMvoC,EAAKwoC,yBAEZF,EAAMX,GAAWh1B,GACV,CACNE,IAAK01B,EAAI11B,KAASy1B,EAAIG,aAAet7B,EAAQ4c,YAAiB5c,EAAQ6c,WAAc,GACpFkI,KAAMqW,EAAIrW,MAASoW,EAAII,aAAev7B,EAAQwc,aAAiBxc,EAAQyc,YAAc,KAX9E2e,QARR,GAuBDvU,SAAU,WACT,GAAM39B,KAAM,GAAZ,CAIA,IAAIsyC,EAAcf,EACjBgB,EAAe,CAAE/1B,IAAK,EAAGqf,KAAM,GAC/BlyB,EAAO3J,KAAM,GAwBd,MArBwC,UAAnCsS,EAAOsb,IAAKjkB,EAAM,YAEtB4nC,EAAS5nC,EAAKwoC,yBAGdG,EAAetyC,KAAKsyC,eAGpBf,EAASvxC,KAAKuxC,SACRj/B,EAAO2C,SAAUq9B,EAAc,GAAK,UACzCC,EAAeD,EAAaf,UAI7BgB,EAAa/1B,KAAQlK,EAAOsb,IAAK0kB,EAAc,GAAK,kBAAkB,GACtEC,EAAa1W,MAAQvpB,EAAOsb,IAAK0kB,EAAc,GAAK,mBAAmB,IAMjE,CACN91B,IAAM+0B,EAAO/0B,IAAO+1B,EAAa/1B,IAAMlK,EAAOsb,IAAKjkB,EAAM,aAAa,GACtEkyB,KAAM0V,EAAO1V,KAAO0W,EAAa1W,KAAOvpB,EAAOsb,IAAKjkB,EAAM,cAAc,MAI1E2oC,aAAc,WACb,OAAOtyC,KAAK4E,KAAI,WAGf,IAFA,IAAI0tC,EAAetyC,KAAKsyC,cAAgBx7B,GAEhCw7B,IAAmBhgC,EAAO2C,SAAUq9B,EAAc,SAAuD,WAA3ChgC,EAAOsb,IAAK0kB,EAAc,aAC/FA,EAAeA,EAAaA,aAE7B,OAAOA,GAAgBx7B,SAM1BxE,EAAOjO,KAAM,CAAEivB,WAAY,cAAeI,UAAW,gBAAiB,SAAU5wB,EAAQoE,GACvF,IAAIsV,EAAM,IAAIpS,KAAMlD,GAEpBoL,EAAOvP,GAAID,GAAW,SAAUqb,GAC/B,OAAO0P,EAAQ7tB,MAAM,SAAU2J,EAAM7G,EAAQqb,GAC5C,IAAI8zB,EAAMX,GAAW3nC,GAErB,QAAa1I,IAARkd,EACJ,OAAO8zB,EAAO/qC,KAAQ+qC,EAAOA,EAAK/qC,GACjC+qC,EAAIp7B,SAASuF,gBAAiBtZ,GAC9B6G,EAAM7G,GAGHmvC,EACJA,EAAIO,SACFh2B,EAAYlK,EAAQ2/B,GAAM3e,aAApBnV,EACP3B,EAAM2B,EAAM7L,EAAQ2/B,GAAMve,aAI3B/pB,EAAM7G,GAAWqb,IAEhBrb,EAAQqb,EAAKpc,UAAUC,OAAQ,UAQpCsQ,EAAOjO,KAAM,CAAE,MAAO,SAAU,SAAUxC,EAAGqF,GAC5CoL,EAAO0sB,SAAU93B,GAASg0B,GAAc9oB,EAAQ8qB,eAC/C,SAAUvzB,EAAM6xB,GACf,GAAKA,EAGJ,OAFAA,EAAWV,GAAQnxB,EAAMzC,GAElB8zB,GAAU5wB,KAAMoxB,GACtBlpB,EAAQ3I,GAAOg0B,WAAYz2B,GAAS,KACpCs0B,QAQLlpB,EAAOjO,KAAM,CAAEouC,OAAQ,SAAUC,MAAO,UAAW,SAAU5tC,EAAMoF,GAClEoI,EAAOjO,KAAM,CAAEg7B,QAAS,QAAUv6B,EAAMuyB,QAASntB,EAAM,GAAI,QAAUpF,IAAQ,SAAU6tC,EAAcC,GAEpGtgC,EAAOvP,GAAI6vC,GAAa,SAAUxT,EAAQvpB,GACzC,IAAIiY,EAAY/rB,UAAUC,SAAY2wC,GAAkC,kBAAXvT,GAC5DxxB,EAAQ+kC,KAA6B,IAAXvT,IAA6B,IAAVvpB,EAAiB,SAAW,UAE1E,OAAOgY,EAAQ7tB,MAAM,SAAU2J,EAAMO,EAAM2L,GAC1C,IAAIyG,EAEJ,OAAKhK,EAAOU,SAAUrJ,GAIdA,EAAKkN,SAASuF,gBAAiB,SAAWtX,GAI3B,IAAlB6E,EAAK4D,UACT+O,EAAM3S,EAAKyS,gBAIJhI,KAAKkB,IACX3L,EAAKmhB,KAAM,SAAWhmB,GAAQwX,EAAK,SAAWxX,GAC9C6E,EAAKmhB,KAAM,SAAWhmB,GAAQwX,EAAK,SAAWxX,GAC9CwX,EAAK,SAAWxX,UAID7D,IAAV4U,EAENvD,EAAOsb,IAAKjkB,EAAMO,EAAM0D,GAGxB0E,EAAOgZ,MAAO3hB,EAAMO,EAAM2L,EAAOjI,KAChC1D,EAAM4jB,EAAYsR,OAASn+B,EAAW6sB,EAAW,aAOvDxb,EAAOvP,GAAG8vC,KAAO,WAChB,OAAO7yC,KAAKgC,QAGbsQ,EAAOvP,GAAG+vC,QAAUxgC,EAAOvP,GAAG0jB,aAqB5B,KAFqB,EAAF,WACnB,OAAOnU,GACP,QAFiB,OAEjB,aAMF,IAECygC,GAAU/rC,EAAOsL,OAGjB0gC,GAAKhsC,EAAOvH,EAwBb,OAtBA6S,EAAO2gC,WAAa,SAAUl/B,GAS7B,OARK/M,EAAOvH,IAAM6S,IACjBtL,EAAOvH,EAAIuzC,IAGPj/B,GAAQ/M,EAAOsL,SAAWA,IAC9BtL,EAAOsL,OAASygC,IAGVzgC,UAMIN,IAAamZ,IACxBnkB,EAAOsL,OAAStL,EAAOvH,EAAI6S,GAMrBA,GAvlUuD,iBAAnBpS,EAAOC,QAQhDD,EAAOC,QAAU4R,EAAO8E,SACvBzW,EAAS2R,GAAQ,GACjB,SAAUmhC,GACT,IAAMA,EAAEr8B,SACP,MAAM,IAAI3S,MAAO,4CAElB,OAAO9D,EAAS8yC,IAGlB9yC,EAAS2R,I,yBCjCX,EAAQ,YACR,IAAIohC,EAAe,EAAQ,YAE3BjzC,EAAOC,QAAUgzC,EAAa,UAAUxzC,M,yBCHxC,IAAIyzC,EAAuB,EAAQ,YAA8BC,OAC7DC,EAAQ,EAAQ,YAChBC,EAAc,EAAQ,YAM1BrzC,EAAOC,QAAU,SAAUqzC,GACzB,OAAOF,GAAM,WACX,QAASC,EAAYC,MANf,cAOGA,MACHJ,GAAwBG,EAAYC,GAAa1uC,OAAS0uC,O,yBCZpE,IAAIC,EAAgB,EAAQ,YACxB3wC,EAAS,EAAQ,YAEjB4wC,EAAkBp6B,OAAO3U,UAE7BzE,EAAOC,QAAU,SAAUwzC,GACzB,IAAIC,EAAMD,EAAGh0C,KACb,MAAoB,iBAANg0C,GAAkBA,IAAOD,GACjCD,EAAcC,EAAiBC,IAAOC,IAAQF,EAAgB/zC,KAAQmD,EAAS8wC","file":"script/chunks/chunk.1.d250b422af.js","sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var parent = require('../../es/instance/trim');\n\nmodule.exports = parent;\n","/*! Flight v1.5.0 | (c) Twitter, Inc. | MIT License */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"flight\"] = factory();\n\telse\n\t\troot[\"flight\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(1),\n __webpack_require__(2),\n __webpack_require__(3),\n __webpack_require__(4),\n __webpack_require__(5),\n __webpack_require__(6),\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, component, compose, debug, logger, registry, utils) {\n 'use strict';\n\n return {\n advice: advice,\n component: component,\n compose: compose,\n debug: debug,\n logger: logger,\n registry: registry,\n utils: utils\n };\n\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var advice = {\n\n around: function(base, wrapped) {\n return function composedAround() {\n // unpacking arguments by hand benchmarked faster\n var i = 0, l = arguments.length, args = new Array(l + 1);\n args[0] = base.bind(this);\n for (; i < l; i++) {\n args[i + 1] = arguments[i];\n }\n return wrapped.apply(this, args);\n };\n },\n\n before: function(base, before) {\n var beforeFn = (typeof before == 'function') ? before : before.obj[before.fnName];\n return function composedBefore() {\n beforeFn.apply(this, arguments);\n return base.apply(this, arguments);\n };\n },\n\n after: function(base, after) {\n var afterFn = (typeof after == 'function') ? after : after.obj[after.fnName];\n return function composedAfter() {\n var res = (base.unbound || base).apply(this, arguments);\n afterFn.apply(this, arguments);\n return res;\n };\n },\n\n // a mixin that allows other mixins to augment existing functions by adding additional\n // code before, after or around.\n withAdvice: function() {\n ['before', 'after', 'around'].forEach(function(m) {\n this[m] = function(method, fn) {\n var methods = method.trim().split(' ');\n\n methods.forEach(function(i) {\n utils.mutateProperty(this, i, function() {\n if (typeof this[i] == 'function') {\n this[i] = advice[m](this[i], fn);\n } else {\n this[i] = fn;\n }\n\n return this[i];\n });\n }, this);\n };\n }, this);\n }\n };\n\n return advice;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(1),\n __webpack_require__(7),\n __webpack_require__(3),\n __webpack_require__(8),\n __webpack_require__(6),\n __webpack_require__(5),\n __webpack_require__(4)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, utils, compose, withBase, registry, withLogging, debug) {\n 'use strict';\n\n var functionNameRegEx = /function (.*?)\\s?\\(/;\n var ignoredMixin = {\n withBase: true,\n withLogging: true\n };\n\n // teardown for all instances of this constructor\n function teardownAll() {\n var componentInfo = registry.findComponentInfo(this);\n\n componentInfo && Object.keys(componentInfo.instances).forEach(function(k) {\n var info = componentInfo.instances[k];\n // It's possible that a previous teardown caused another component to teardown,\n // so we can't assume that the instances object is as it was.\n if (info && info.instance) {\n info.instance.teardown();\n }\n });\n }\n\n function attachTo(selector/*, options args */) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length;\n var args = new Array(l - 1);\n for (var i = 1; i < l; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (!selector) {\n throw new Error('Component needs to be attachTo\\'d a jQuery object, native node or selector string');\n }\n\n var options = utils.merge.apply(utils, args);\n var componentInfo = registry.findComponentInfo(this);\n\n $(selector).each(function(i, node) {\n if (componentInfo && componentInfo.isAttachedTo(node)) {\n // already attached\n return;\n }\n\n (new this).initialize(node, options);\n }.bind(this));\n }\n\n function prettyPrintMixins() {\n //could be called from constructor or constructor.prototype\n var mixedIn = this.mixedIn || this.prototype.mixedIn || [];\n return mixedIn.map(function(mixin) {\n if (mixin.name == null) {\n // function name property not supported by this browser, use regex\n var m = mixin.toString().match(functionNameRegEx);\n return (m && m[1]) ? m[1] : '';\n }\n return (!ignoredMixin[mixin.name] ? mixin.name : '');\n }).filter(Boolean).join(', ');\n };\n\n\n // define the constructor for a custom component type\n // takes an unlimited number of mixin functions as arguments\n // typical api call with 3 mixins: define(timeline, withTweetCapability, withScrollCapability);\n function define(/*mixins*/) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length;\n var mixins = new Array(l);\n for (var i = 0; i < l; i++) {\n mixins[i] = arguments[i];\n }\n\n var Component = function() {};\n\n Component.toString = Component.prototype.toString = prettyPrintMixins;\n if (debug.enabled) {\n Component.describe = Component.prototype.describe = Component.toString();\n }\n\n // 'options' is optional hash to be merged with 'defaults' in the component definition\n Component.attachTo = attachTo;\n // enables extension of existing \"base\" Components\n Component.mixin = function() {\n var newComponent = define(); //TODO: fix pretty print\n var newPrototype = Object.create(Component.prototype);\n newPrototype.mixedIn = [].concat(Component.prototype.mixedIn);\n newPrototype.defaults = utils.merge(Component.prototype.defaults);\n newPrototype.attrDef = Component.prototype.attrDef;\n compose.mixin(newPrototype, arguments);\n newComponent.prototype = newPrototype;\n newComponent.prototype.constructor = newComponent;\n return newComponent;\n };\n Component.teardownAll = teardownAll;\n\n // prepend common mixins to supplied list, then mixin all flavors\n if (debug.enabled) {\n mixins.unshift(withLogging);\n }\n mixins.unshift(withBase, advice.withAdvice, registry.withRegistration);\n compose.mixin(Component.prototype, mixins);\n\n return Component;\n }\n\n define.teardownAll = function() {\n registry.components.slice().forEach(function(c) {\n c.component.teardownAll();\n });\n registry.reset();\n };\n\n return define;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var dontLock = ['mixedIn', 'attrDef'];\n\n function setWritability(obj, writable) {\n Object.keys(obj).forEach(function (key) {\n if (dontLock.indexOf(key) < 0) {\n utils.propertyWritability(obj, key, writable);\n }\n });\n }\n\n function mixin(base, mixins) {\n base.mixedIn = Object.prototype.hasOwnProperty.call(base, 'mixedIn') ? base.mixedIn : [];\n\n for (var i = 0; i < mixins.length; i++) {\n if (base.mixedIn.indexOf(mixins[i]) == -1) {\n setWritability(base, false);\n mixins[i].call(base);\n base.mixedIn.push(mixins[i]);\n }\n }\n\n setWritability(base, true);\n }\n\n return {\n mixin: mixin\n };\n\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function(registry) {\n 'use strict';\n\n // ==========================================\n // Search object model\n // ==========================================\n\n function traverse(util, searchTerm, options) {\n options = options || {};\n var obj = options.obj || window;\n var path = options.path || ((obj == window) ? 'window' : '');\n var props = Object.keys(obj);\n props.forEach(function(prop) {\n if ((tests[util] || util)(searchTerm, obj, prop)) {\n console.log([path, '.', prop].join(''), '->', ['(', typeof obj[prop], ')'].join(''), obj[prop]);\n }\n if (Object.prototype.toString.call(obj[prop]) == '[object Object]' && (obj[prop] != obj) && path.split('.').indexOf(prop) == -1) {\n traverse(util, searchTerm, {obj: obj[prop], path: [path,prop].join('.')});\n }\n });\n }\n\n function search(util, expected, searchTerm, options) {\n if (!expected || typeof searchTerm == expected) {\n traverse(util, searchTerm, options);\n } else {\n console.error([searchTerm, 'must be', expected].join(' '));\n }\n }\n\n var tests = {\n 'name': function(searchTerm, obj, prop) {return searchTerm == prop;},\n 'nameContains': function(searchTerm, obj, prop) {return prop.indexOf(searchTerm) > -1;},\n 'type': function(searchTerm, obj, prop) {return obj[prop] instanceof searchTerm;},\n 'value': function(searchTerm, obj, prop) {return obj[prop] === searchTerm;},\n 'valueCoerced': function(searchTerm, obj, prop) {return obj[prop] == searchTerm;}\n };\n\n function byName(searchTerm, options) {search('name', 'string', searchTerm, options);}\n function byNameContains(searchTerm, options) {search('nameContains', 'string', searchTerm, options);}\n function byType(searchTerm, options) {search('type', 'function', searchTerm, options);}\n function byValue(searchTerm, options) {search('value', null, searchTerm, options);}\n function byValueCoerced(searchTerm, options) {search('valueCoerced', null, searchTerm, options);}\n function custom(fn, options) {traverse(fn, null, options);}\n\n // ==========================================\n // Event logging\n // ==========================================\n\n var ALL = 'all'; //no filter\n\n //log nothing by default\n var logFilter = {\n eventNames: [],\n actions: []\n }\n\n function filterEventLogsByAction(/*actions*/) {\n var actions = [].slice.call(arguments);\n\n logFilter.eventNames.length || (logFilter.eventNames = ALL);\n logFilter.actions = actions.length ? actions : ALL;\n saveLogFilter();\n }\n\n function filterEventLogsByName(/*eventNames*/) {\n var eventNames = [].slice.call(arguments);\n\n logFilter.actions.length || (logFilter.actions = ALL);\n logFilter.eventNames = eventNames.length ? eventNames : ALL;\n saveLogFilter();\n }\n\n function hideAllEventLogs() {\n logFilter.actions = [];\n logFilter.eventNames = [];\n saveLogFilter();\n }\n\n function showAllEventLogs() {\n logFilter.actions = ALL;\n logFilter.eventNames = ALL;\n saveLogFilter();\n }\n\n function saveLogFilter() {\n try {\n if (window.localStorage) {\n localStorage.setItem('logFilter_eventNames', logFilter.eventNames);\n localStorage.setItem('logFilter_actions', logFilter.actions);\n }\n } catch (ignored) {};\n }\n\n function retrieveLogFilter() {\n var eventNames, actions;\n try {\n eventNames = (window.localStorage && localStorage.getItem('logFilter_eventNames'));\n actions = (window.localStorage && localStorage.getItem('logFilter_actions'));\n } catch (ignored) {\n return;\n }\n eventNames && (logFilter.eventNames = eventNames);\n actions && (logFilter.actions = actions);\n\n // reconstitute arrays in place\n Object.keys(logFilter).forEach(function(k) {\n var thisProp = logFilter[k];\n if (typeof thisProp == 'string' && thisProp !== ALL) {\n logFilter[k] = thisProp ? thisProp.split(',') : [];\n }\n });\n }\n\n return {\n\n enable: function(enable) {\n this.enabled = !!enable;\n\n if (enable && window.console) {\n console.info('Booting in DEBUG mode');\n console.info('You can configure event logging with DEBUG.events.logAll()/logNone()/logByName()/logByAction()');\n }\n\n retrieveLogFilter();\n\n window.DEBUG = this;\n },\n\n warn: function (message) {\n if (!window.console) { return; }\n var fn = (console.warn || console.log);\n fn.call(console, this.toString() + ': ' + message);\n },\n\n registry: registry,\n\n find: {\n byName: byName,\n byNameContains: byNameContains,\n byType: byType,\n byValue: byValue,\n byValueCoerced: byValueCoerced,\n custom: custom\n },\n\n events: {\n logFilter: logFilter,\n\n // Accepts any number of action args\n // e.g. DEBUG.events.logByAction(\"on\", \"off\")\n logByAction: filterEventLogsByAction,\n\n // Accepts any number of event name args (inc. regex or wildcards)\n // e.g. DEBUG.events.logByName(/ui.*/, \"*Thread*\");\n logByName: filterEventLogsByName,\n\n logAll: showAllEventLogs,\n logNone: hideAllEventLogs\n }\n };\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n 'use strict';\n\n var actionSymbols = {\n on: '<-',\n trigger: '->',\n off: 'x '\n };\n\n function elemToString(elem) {\n var tagStr = elem.tagName ? elem.tagName.toLowerCase() : elem.toString();\n var classStr = elem.className ? '.' + (elem.className) : '';\n var result = tagStr + classStr;\n return elem.tagName ? ['\\'', '\\''].join(result) : result;\n }\n\n function log(action, component, eventArgs) {\n if (!window.DEBUG || !window.DEBUG.enabled) {\n return;\n }\n var name, eventType, elem, fn, payload, logFilter, toRegExp, actionLoggable, nameLoggable, info;\n\n if (typeof eventArgs[eventArgs.length - 1] == 'function') {\n fn = eventArgs.pop();\n fn = fn.unbound || fn; // use unbound version if any (better info)\n }\n\n if (eventArgs.length == 1) {\n elem = component.$node[0];\n eventType = eventArgs[0];\n } else if ((eventArgs.length == 2) && typeof eventArgs[1] == 'object' && !eventArgs[1].type) {\n //2 args, first arg is not elem\n elem = component.$node[0];\n eventType = eventArgs[0];\n if (action == \"trigger\") {\n payload = eventArgs[1];\n }\n } else {\n //2+ args, first arg is elem\n elem = eventArgs[0];\n eventType = eventArgs[1];\n if (action == \"trigger\") {\n payload = eventArgs[2];\n }\n }\n\n name = typeof eventType == 'object' ? eventType.type : eventType;\n\n logFilter = DEBUG.events.logFilter;\n\n // no regex for you, actions...\n actionLoggable = logFilter.actions == 'all' || (logFilter.actions.indexOf(action) > -1);\n // event name filter allow wildcards or regex...\n toRegExp = function(expr) {\n return expr.test ? expr : new RegExp('^' + expr.replace(/\\*/g, '.*') + '$');\n };\n nameLoggable =\n logFilter.eventNames == 'all' ||\n logFilter.eventNames.some(function(e) {return toRegExp(e).test(name);});\n\n if (actionLoggable && nameLoggable) {\n info = [actionSymbols[action], action, '[' + name + ']'];\n payload && info.push(payload);\n info.push(elemToString(elem));\n info.push(component.constructor.describe.split(' ').slice(0,3).join(' '));\n console.groupCollapsed && action == 'trigger' && console.groupCollapsed(action, name);\n // IE9 doesn't define `apply` for console methods, but this works everywhere:\n Function.prototype.apply.call(console.info, console, info);\n }\n }\n\n function withLogging() {\n this.before('trigger', function() {\n log('trigger', this, utils.toArray(arguments));\n });\n if (console.groupCollapsed) {\n this.after('trigger', function() {\n console.groupEnd();\n });\n }\n this.before('on', function() {\n log('on', this, utils.toArray(arguments));\n });\n this.before('off', function() {\n log('off', this, utils.toArray(arguments));\n });\n }\n\n return withLogging;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n 'use strict';\n\n function parseEventArgs(instance, args) {\n var element, type, callback;\n var end = args.length;\n\n if (typeof args[end - 1] == 'function') {\n end -= 1;\n callback = args[end];\n }\n\n if (typeof args[end - 1] == 'object') {\n end -= 1;\n }\n\n if (end == 2) {\n element = args[0];\n type = args[1];\n } else {\n element = instance.node;\n type = args[0];\n }\n\n return {\n element: element,\n type: type,\n callback: callback\n };\n }\n\n function matchEvent(a, b) {\n return (\n (a.element == b.element) &&\n (a.type == b.type) &&\n (b.callback == null || (a.callback == b.callback))\n );\n }\n\n function Registry() {\n\n var registry = this;\n\n (this.reset = function() {\n this.components = [];\n this.allInstances = {};\n this.events = [];\n }).call(this);\n\n function ComponentInfo(component) {\n this.component = component;\n this.attachedTo = [];\n this.instances = {};\n\n this.addInstance = function(instance) {\n var instanceInfo = new InstanceInfo(instance);\n this.instances[instance.identity] = instanceInfo;\n this.attachedTo.push(instance.node);\n\n return instanceInfo;\n };\n\n this.removeInstance = function(instance) {\n delete this.instances[instance.identity];\n var indexOfNode = this.attachedTo.indexOf(instance.node);\n (indexOfNode > -1) && this.attachedTo.splice(indexOfNode, 1);\n\n if (!Object.keys(this.instances).length) {\n //if I hold no more instances remove me from registry\n registry.removeComponentInfo(this);\n }\n };\n\n this.isAttachedTo = function(node) {\n return this.attachedTo.indexOf(node) > -1;\n };\n }\n\n function InstanceInfo(instance) {\n this.instance = instance;\n this.events = [];\n\n this.addBind = function(event) {\n this.events.push(event);\n registry.events.push(event);\n };\n\n this.removeBind = function(event) {\n for (var i = 0, e; e = this.events[i]; i++) {\n if (matchEvent(e, event)) {\n this.events.splice(i, 1);\n }\n }\n };\n }\n\n this.addInstance = function(instance) {\n var component = this.findComponentInfo(instance);\n\n if (!component) {\n component = new ComponentInfo(instance.constructor);\n this.components.push(component);\n }\n\n var inst = component.addInstance(instance);\n\n this.allInstances[instance.identity] = inst;\n\n return component;\n };\n\n this.removeInstance = function(instance) {\n //remove from component info\n var componentInfo = this.findComponentInfo(instance);\n componentInfo && componentInfo.removeInstance(instance);\n\n //remove from registry\n delete this.allInstances[instance.identity];\n };\n\n this.removeComponentInfo = function(componentInfo) {\n var index = this.components.indexOf(componentInfo);\n (index > -1) && this.components.splice(index, 1);\n };\n\n this.findComponentInfo = function(which) {\n var component = which.attachTo ? which : which.constructor;\n\n for (var i = 0, c; c = this.components[i]; i++) {\n if (c.component === component) {\n return c;\n }\n }\n\n return null;\n };\n\n this.findInstanceInfo = function(instance) {\n return this.allInstances[instance.identity] || null;\n };\n\n this.getBoundEventNames = function(instance) {\n return this.findInstanceInfo(instance).events.map(function(ev) {\n return ev.type;\n });\n };\n\n this.findInstanceInfoByNode = function(node) {\n var result = [];\n Object.keys(this.allInstances).forEach(function(k) {\n var thisInstanceInfo = this.allInstances[k];\n if (thisInstanceInfo.instance.node === node) {\n result.push(thisInstanceInfo);\n }\n }, this);\n return result;\n };\n\n this.on = function(componentOn) {\n var instance = registry.findInstanceInfo(this), boundCallback;\n\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length, i = 1;\n var otherArgs = new Array(l - 1);\n for (; i < l; i++) {\n otherArgs[i - 1] = arguments[i];\n }\n\n if (instance) {\n boundCallback = componentOn.apply(null, otherArgs);\n if (boundCallback) {\n otherArgs[otherArgs.length - 1] = boundCallback;\n }\n var event = parseEventArgs(this, otherArgs);\n instance.addBind(event);\n }\n };\n\n this.off = function(/*el, type, callback*/) {\n var event = parseEventArgs(this, arguments),\n instance = registry.findInstanceInfo(this);\n\n if (instance) {\n instance.removeBind(event);\n }\n\n //remove from global event registry\n for (var i = 0, e; e = registry.events[i]; i++) {\n if (matchEvent(e, event)) {\n registry.events.splice(i, 1);\n }\n }\n };\n\n // debug tools may want to add advice to trigger\n registry.trigger = function() {};\n\n this.teardown = function() {\n registry.removeInstance(this);\n };\n\n this.withRegistration = function() {\n this.after('initialize', function() {\n registry.addInstance(this);\n });\n\n this.around('on', registry.on);\n this.after('off', registry.off);\n //debug tools may want to add advice to trigger\n window.DEBUG && (false).enabled && this.after('trigger', registry.trigger);\n this.after('teardown', {obj: registry, fnName: 'teardown'});\n };\n\n }\n\n return new Registry;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function(debug) {\n 'use strict';\n\n var DEFAULT_INTERVAL = 100;\n\n function canWriteProtect() {\n var writeProtectSupported = debug.enabled && !Object.propertyIsEnumerable('getOwnPropertyDescriptor');\n if (writeProtectSupported) {\n //IE8 getOwnPropertyDescriptor is built-in but throws exeption on non DOM objects\n try {\n Object.getOwnPropertyDescriptor(Object, 'keys');\n } catch (e) {\n return false;\n }\n }\n\n return writeProtectSupported;\n }\n\n var utils = {\n\n isDomObj: function(obj) {\n return !!(obj.nodeType || (obj === window));\n },\n\n toArray: function(obj, from) {\n from = from || 0;\n var len = obj.length, arr = new Array(len - from);\n for (var i = from; i < len; i++) {\n arr[i - from] = obj[i];\n }\n return arr;\n },\n\n // returns new object representing multiple objects merged together\n // optional final argument is boolean which specifies if merge is recursive\n // original objects are unmodified\n //\n // usage:\n // var base = {a:2, b:6};\n // var extra = {b:3, c:4};\n // merge(base, extra); //{a:2, b:3, c:4}\n // base; //{a:2, b:6}\n //\n // var base = {a:2, b:6};\n // var extra = {b:3, c:4};\n // var extraExtra = {a:4, d:9};\n // merge(base, extra, extraExtra); //{a:4, b:3, c:4. d: 9}\n // base; //{a:2, b:6}\n //\n // var base = {a:2, b:{bb:4, cc:5}};\n // var extra = {a:4, b:{cc:7, dd:1}};\n // merge(base, extra, true); //{a:4, b:{bb:4, cc:7, dd:1}}\n // base; //{a:2, b:{bb:4, cc:5}};\n\n merge: function(/*obj1, obj2,....deepCopy*/) {\n // unpacking arguments by hand benchmarked faster\n var l = arguments.length,\n args = new Array(l + 1);\n\n if (l === 0) {\n return {};\n }\n\n for (var i = 0; i < l; i++) {\n args[i + 1] = arguments[i];\n }\n\n //start with empty object so a copy is created\n args[0] = {};\n\n if (args[args.length - 1] === true) {\n //jquery extend requires deep copy as first arg\n args.pop();\n args.unshift(true);\n }\n\n return $.extend.apply(undefined, args);\n },\n\n // updates base in place by copying properties of extra to it\n // optionally clobber protected\n // usage:\n // var base = {a:2, b:6};\n // var extra = {c:4};\n // push(base, extra); //{a:2, b:6, c:4}\n // base; //{a:2, b:6, c:4}\n //\n // var base = {a:2, b:6};\n // var extra = {b: 4 c:4};\n // push(base, extra, true); //Error (\"utils.push attempted to overwrite 'b' while running in protected mode\")\n // base; //{a:2, b:6}\n //\n // objects with the same key will merge recursively when protect is false\n // eg:\n // var base = {a:16, b:{bb:4, cc:10}};\n // var extra = {b:{cc:25, dd:19}, c:5};\n // push(base, extra); //{a:16, {bb:4, cc:25, dd:19}, c:5}\n //\n push: function(base, extra, protect) {\n if (base) {\n Object.keys(extra || {}).forEach(function(key) {\n if (base[key] && protect) {\n throw new Error('utils.push attempted to overwrite \"' + key + '\" while running in protected mode');\n }\n\n if (typeof base[key] == 'object' && typeof extra[key] == 'object') {\n // recurse\n this.push(base[key], extra[key]);\n } else {\n // no protect, so extra wins\n base[key] = extra[key];\n }\n }, this);\n }\n\n return base;\n },\n\n // If obj.key points to an enumerable property, return its value\n // If obj.key points to a non-enumerable property, return undefined\n getEnumerableProperty: function(obj, key) {\n return obj.propertyIsEnumerable(key) ? obj[key] : undefined;\n },\n\n // build a function from other function(s)\n // utils.compose(a,b,c) -> a(b(c()));\n // implementation lifted from underscore.js (c) 2009-2012 Jeremy Ashkenas\n compose: function() {\n var funcs = arguments;\n\n return function() {\n var args = arguments;\n\n for (var i = funcs.length - 1; i >= 0; i--) {\n args = [funcs[i].apply(this, args)];\n }\n\n return args[0];\n };\n },\n\n // Can only unique arrays of homogeneous primitives, e.g. an array of only strings, an array of only booleans, or an array of only numerics\n uniqueArray: function(array) {\n var u = {}, a = [];\n\n for (var i = 0, l = array.length; i < l; ++i) {\n if (u.hasOwnProperty(array[i])) {\n continue;\n }\n\n a.push(array[i]);\n u[array[i]] = 1;\n }\n\n return a;\n },\n\n debounce: function(func, wait, immediate) {\n if (typeof wait != 'number') {\n wait = DEFAULT_INTERVAL;\n }\n\n var timeout, result;\n\n return function() {\n var context = this, args = arguments;\n var later = function() {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n\n timeout && clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (callNow) {\n result = func.apply(context, args);\n }\n\n return result;\n };\n },\n\n throttle: function(func, wait) {\n if (typeof wait != 'number') {\n wait = DEFAULT_INTERVAL;\n }\n\n var context, args, timeout, throttling, more, result;\n var whenDone = this.debounce(function() {\n more = throttling = false;\n }, wait);\n\n return function() {\n context = this; args = arguments;\n var later = function() {\n timeout = null;\n if (more) {\n result = func.apply(context, args);\n }\n whenDone();\n };\n\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n\n if (throttling) {\n more = true;\n } else {\n throttling = true;\n result = func.apply(context, args);\n }\n\n whenDone();\n return result;\n };\n },\n\n countThen: function(num, base) {\n return function() {\n if (!--num) { return base.apply(this, arguments); }\n };\n },\n\n delegate: function(rules) {\n return function(e, data) {\n var target = $(e.target), parent;\n\n Object.keys(rules).forEach(function(selector) {\n if (!e.isPropagationStopped() && (parent = target.closest(selector)).length) {\n data = data || {};\n e.currentTarget = data.el = parent[0];\n return rules[selector].apply(this, [e, data]);\n }\n }, this);\n };\n },\n\n // ensures that a function will only be called once.\n // usage:\n // will only create the application once\n // var initialize = utils.once(createApplication)\n // initialize();\n // initialize();\n //\n // will only delete a record once\n // var myHanlder = function () {\n // $.ajax({type: 'DELETE', url: 'someurl.com', data: {id: 1}});\n // };\n // this.on('click', utils.once(myHandler));\n //\n once: function(func) {\n var ran, result;\n\n return function() {\n if (ran) {\n return result;\n }\n\n ran = true;\n result = func.apply(this, arguments);\n\n return result;\n };\n },\n\n propertyWritability: function(obj, prop, writable) {\n if (canWriteProtect() && obj.hasOwnProperty(prop)) {\n Object.defineProperty(obj, prop, { writable: writable });\n }\n },\n\n // Property locking/unlocking\n mutateProperty: function(obj, prop, op) {\n var writable;\n\n if (!canWriteProtect() || !obj.hasOwnProperty(prop)) {\n op.call(obj);\n return;\n }\n\n writable = Object.getOwnPropertyDescriptor(obj, prop).writable;\n\n Object.defineProperty(obj, prop, { writable: true });\n op.call(obj);\n Object.defineProperty(obj, prop, { writable: writable });\n\n }\n\n };\n\n return utils;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n __webpack_require__(7),\n __webpack_require__(6),\n __webpack_require__(4)\n ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils, registry, debug) {\n 'use strict';\n\n // common mixin allocates basic functionality - used by all component prototypes\n // callback context is bound to component\n var componentId = 0;\n\n function teardownInstance(instanceInfo) {\n instanceInfo.events.slice().forEach(function(event) {\n var args = [event.type];\n\n event.element && args.unshift(event.element);\n (typeof event.callback == 'function') && args.push(event.callback);\n\n this.off.apply(this, args);\n }, instanceInfo.instance);\n }\n\n function checkSerializable(type, data) {\n try {\n window.postMessage(data, '*');\n } catch (e) {\n debug.warn.call(this, [\n 'Event \"', type, '\" was triggered with non-serializable data. ',\n 'Flight recommends you avoid passing non-serializable data in events.'\n ].join(''));\n }\n }\n\n function warnAboutReferenceType(key) {\n debug.warn.call(this, [\n 'Attribute \"', key, '\" defaults to an array or object. ',\n 'Enclose this in a function to avoid sharing between component instances.'\n ].join(''));\n }\n\n function initAttributes(attrs) {\n var definedKeys = [], incomingKeys;\n\n this.attr = new this.attrDef;\n\n if (debug.enabled && window.console) {\n for (var key in this.attrDef.prototype) {\n definedKeys.push(key);\n }\n incomingKeys = Object.keys(attrs);\n\n for (var i = incomingKeys.length - 1; i >= 0; i--) {\n if (definedKeys.indexOf(incomingKeys[i]) == -1) {\n debug.warn.call(this, 'Passed unused attribute \"' + incomingKeys[i] + '\".');\n break;\n }\n }\n }\n\n for (var key in this.attrDef.prototype) {\n if (typeof attrs[key] == 'undefined') {\n if (this.attr[key] === null) {\n throw new Error('Required attribute \"' + key +\n '\" not specified in attachTo for component \"' + this.toString() + '\".');\n }\n // Warn about reference types in attributes\n if (debug.enabled && typeof this.attr[key] === 'object') {\n warnAboutReferenceType.call(this, key);\n }\n } else {\n this.attr[key] = attrs[key];\n }\n\n if (typeof this.attr[key] == 'function') {\n this.attr[key] = this.attr[key].call(this);\n }\n }\n\n }\n\n function initDeprecatedAttributes(attrs) {\n // merge defaults with supplied options\n // put options in attr.__proto__ to avoid merge overhead\n var attr = Object.create(attrs);\n\n for (var key in this.defaults) {\n if (!attrs.hasOwnProperty(key)) {\n attr[key] = this.defaults[key];\n // Warn about reference types in defaultAttrs\n if (debug.enabled && typeof this.defaults[key] === 'object') {\n warnAboutReferenceType.call(this, key);\n }\n }\n }\n\n this.attr = attr;\n\n Object.keys(this.defaults || {}).forEach(function(key) {\n if (this.defaults[key] === null && this.attr[key] === null) {\n throw new Error('Required attribute \"' + key +\n '\" not specified in attachTo for component \"' + this.toString() + '\".');\n }\n }, this);\n }\n\n function proxyEventTo(targetEvent) {\n return function(e, data) {\n $(e.target).trigger(targetEvent, data);\n };\n }\n\n function withBase() {\n\n // delegate trigger, bind and unbind to an element\n // if $element not supplied, use component's node\n // other arguments are passed on\n // event can be either a string specifying the type\n // of the event, or a hash specifying both the type\n // and a default function to be called.\n this.trigger = function() {\n var $element, type, data, event, defaultFn;\n var lastIndex = arguments.length - 1, lastArg = arguments[lastIndex];\n\n if (typeof lastArg != 'string' && !(lastArg && lastArg.defaultBehavior)) {\n lastIndex--;\n data = lastArg;\n }\n\n if (lastIndex == 1) {\n $element = $(arguments[0]);\n event = arguments[1];\n } else {\n $element = this.$node;\n event = arguments[0];\n }\n\n if (event.defaultBehavior) {\n defaultFn = event.defaultBehavior;\n event = $.Event(event.type);\n }\n\n type = event.type || event;\n\n if (debug.enabled && window.postMessage) {\n checkSerializable.call(this, type, data);\n }\n\n if (typeof this.attr.eventData == 'object') {\n data = $.extend(true, {}, this.attr.eventData, data);\n }\n\n $element.trigger((event || type), data);\n\n if (defaultFn && !event.isDefaultPrevented()) {\n (this[defaultFn] || defaultFn).call(this, event, data);\n }\n\n return $element;\n };\n\n\n this.on = function() {\n var $element, type, callback, originalCb;\n var lastIndex = arguments.length - 1, origin = arguments[lastIndex];\n\n if (typeof origin == 'object') {\n //delegate callback\n originalCb = utils.delegate(\n this.resolveDelegateRules(origin)\n );\n } else if (typeof origin == 'string') {\n originalCb = proxyEventTo(origin);\n } else {\n originalCb = origin;\n }\n\n if (lastIndex == 2) {\n $element = $(arguments[0]);\n type = arguments[1];\n } else {\n $element = this.$node;\n type = arguments[0];\n }\n\n if (typeof originalCb != 'function' && typeof originalCb != 'object') {\n throw new Error('Unable to bind to \"' + type +\n '\" because the given callback is not a function or an object');\n }\n\n callback = originalCb.bind(this);\n callback.target = originalCb;\n callback.context = this;\n\n $element.on(type, callback);\n\n // store every bound version of the callback\n originalCb.bound || (originalCb.bound = []);\n originalCb.bound.push(callback);\n\n return callback;\n };\n\n this.off = function() {\n var $element, type, callback;\n var lastIndex = arguments.length - 1;\n\n if (typeof arguments[lastIndex] == 'function') {\n callback = arguments[lastIndex];\n lastIndex -= 1;\n }\n\n if (lastIndex == 1) {\n $element = $(arguments[0]);\n type = arguments[1];\n } else {\n $element = this.$node;\n type = arguments[0];\n }\n\n if (callback) {\n //this callback may be the original function or a bound version\n var boundFunctions = callback.target ? callback.target.bound : callback.bound || [];\n //set callback to version bound against this instance\n boundFunctions && boundFunctions.some(function(fn, i, arr) {\n if (fn.context && (this.identity == fn.context.identity)) {\n arr.splice(i, 1);\n callback = fn;\n return true;\n }\n }, this);\n $element.off(type, callback);\n } else {\n // Loop through the events of `this` instance\n // and unbind using the callback\n registry.findInstanceInfo(this).events.forEach(function (event) {\n if (type == event.type) {\n $element.off(type, event.callback);\n }\n });\n }\n\n return $element;\n };\n\n this.resolveDelegateRules = function(ruleInfo) {\n var rules = {};\n\n Object.keys(ruleInfo).forEach(function(r) {\n if (!(r in this.attr)) {\n throw new Error('Component \"' + this.toString() + '\" wants to listen on \"' + r + '\" but no such attribute was defined.');\n }\n rules[this.attr[r]] = (typeof ruleInfo[r] == 'string') ? proxyEventTo(ruleInfo[r]) : ruleInfo[r];\n }, this);\n\n return rules;\n };\n\n this.select = function(attributeKey) {\n return this.$node.find(this.attr[attributeKey]);\n };\n\n // New-style attributes\n\n this.attributes = function(attrs) {\n\n var Attributes = function() {};\n\n if (this.attrDef) {\n Attributes.prototype = new this.attrDef;\n }\n\n for (var name in attrs) {\n Attributes.prototype[name] = attrs[name];\n }\n\n this.attrDef = Attributes;\n };\n\n // Deprecated attributes\n\n this.defaultAttrs = function(defaults) {\n utils.push(this.defaults, defaults, true) || (this.defaults = defaults);\n };\n\n this.initialize = function(node, attrs) {\n attrs = attrs || {};\n this.identity || (this.identity = componentId++);\n\n if (!node) {\n throw new Error('Component needs a node');\n }\n\n if (node.jquery) {\n this.node = node[0];\n this.$node = node;\n } else {\n this.node = node;\n this.$node = $(node);\n }\n\n if (this.attrDef) {\n initAttributes.call(this, attrs);\n } else {\n initDeprecatedAttributes.call(this, attrs);\n }\n\n return this;\n };\n\n this.teardown = function() {\n teardownInstance(registry.findInstanceInfo(this));\n };\n }\n\n return withBase;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }\n/******/ ])\n});\n","module.exports = require(\"core-js-pure/stable/instance/trim\");","/*!\n * jQuery JavaScript Library v1.11.2\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-17T15:27Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making factory as module.exports\n\t\t// This accentuates the need for the creation of a real window\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.2\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\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\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\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\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\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\t\tret.context = this.context;\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\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\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\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(null);\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: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, 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\" && !jQuery.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\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( 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) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\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\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\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\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 obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\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[ 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\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\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\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\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 value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\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 concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\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\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\tvar length = obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\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.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\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\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// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://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|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\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\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\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 + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\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)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\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 + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\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\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\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// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\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\tpush_native.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\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 match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\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} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\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} finally {\n\t\t\t\t\tif ( !old ) {\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\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\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 div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = 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 = attrs.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\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\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 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\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\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, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\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( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.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( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.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 programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\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} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\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\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\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\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 ( 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 http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\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// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\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// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.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 ( !div.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.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\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 ( !div.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 sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\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 = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.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 ( div.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 ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.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( div ) {\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( div, \"div\" );\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( div, \"[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 does not implement inclusive descendent\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\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\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(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\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\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\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\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\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\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\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\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}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\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\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\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.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\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\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\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\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\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] || match[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\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\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] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\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\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\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() { return true; } :\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 + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\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\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};\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, outerCache, node, diff, 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\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 ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\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\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\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && 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\touterCache[ 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// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\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\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\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\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\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\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\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\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\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 || elem.innerText || 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\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 && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\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) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\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\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\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 || attr.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 ? argument + length : argument;\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\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\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\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\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\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} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, 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 dir 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\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\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\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = 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};\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( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\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\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\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\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\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\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\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).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\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\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\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) 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\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, 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\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// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\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\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\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( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\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 no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root 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\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].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\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 ) || context\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\trsibling.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( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.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( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.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( div ) {\n\treturn div.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\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\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;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\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\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn 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// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\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// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\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// 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\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.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\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\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 || rootjQuery ).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.context = this[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 ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\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\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.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; 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\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\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 jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\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\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\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 jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.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 jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = 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\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\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\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], 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\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\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\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\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\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\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 && type !== \"string\" ) {\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\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\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\t\t\t\treturn this;\n\t\t\t},\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 ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\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 ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\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\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\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\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\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\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 && jQuery.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.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\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\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\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// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\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[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = 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(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\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// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\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\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + \" \").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\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\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\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\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\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// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.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\tjQuery._data( elem, \"parsedAttrs\", 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\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( 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 = jQuery._data( 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 || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( 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 intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, 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\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 = jQuery._data( 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 cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\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 = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( 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 ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\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 < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( \"input\" ),\n\t\tdiv = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = \"
a\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = \"\";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !(support[ i + \"Bubbles\" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i + \"Bubbles\" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\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\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\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// 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 = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\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 !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\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/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + 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\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( 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( rnotwhite ) || [ \"\" ];\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] && new 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 || selector === \"**\" && 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 || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\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 the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\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 = 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(\".\") >= 0 ) {\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.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.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\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 = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( 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 && jQuery.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 || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.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\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\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\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ 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\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++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.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 || handleObj.handler )\n\t\t\t\t\t\t\t.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 sel, handleObj, matches, i,\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\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\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 ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\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\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.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\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\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\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\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\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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 || jQuery.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// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\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 mousenter/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\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\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\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( 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\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( 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\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( 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\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 ? handleObj.origType + \".\" + handleObj.namespace : handleObj.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\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\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\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\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"\" ],\n\t\tlegend: [ 1, \"
\", \"
\" ],\n\t\tarea: [ 1, \"\", \"\" ],\n\t\tparam: [ 1, \"\", \"\" ],\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
\", \"
\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\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; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, 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\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ \"\", \"\" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\t\twrap[1] === \"
\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\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\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\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// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\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().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( 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 this.domManip( 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 this.domManip( 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 this.domManip( 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\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\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 ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\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( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ \"\", \"\" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\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 arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\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\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\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\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\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// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\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\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\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// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"