{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./app/frontend/packs/pages/chats/show.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./app/frontend/javascripts/like_list.js","webpack:///./app/frontend/javascripts/custom_like_list.js","webpack:///./app/frontend/javascripts/report_reason_modal.js","webpack:///./app/frontend/javascripts/components/reply_collapse.js","webpack:///./node_modules/lity/dist/lity.js","webpack:///./node_modules/zoomist/zoomist.js","webpack:///./app/frontend/javascripts/components/ImageZoomer.js","webpack:///./app/frontend/javascripts/timeline.js","webpack:///./app/frontend/javascripts/comment_form.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/keen-slider/keen-slider.es.js","webpack:///./app/frontend/javascripts/components/Confirm.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./app/frontend/javascripts/attachment.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./app/frontend/javascripts/view_more.js","webpack:///./app/frontend/javascripts/components/infinite_scroll.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./app/frontend/javascripts/components/reply_omitted.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///(webpack)/buildin/module.js","webpack:///./app/frontend/javascripts/components/Like.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_typeof","_regeneratorRuntime","e","a","iterator","asyncIterator","u","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","h","f","y","GeneratorFunction","GeneratorFunctionPrototype","this","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","addToggleMuteEvent","node","querySelectorAll","toggleMuteBtn","addEventListener","post","closest","postContent","querySelector","dataset","tmpUnmuted","classList","remove","innerText","ReplyOmitted","add","addMuteClickEvent","muteUserBtn","$","modal","close","userId","id","document","muted_user_post","addUnmuteClickEvent","unmuteUserBtn","unmute_user_post","addActionEvent","button","toggle","window","Coorum","Like","ImageZoomer","CommentForm","Attachment","ReplyCollapse","commentRootElement","comment","Timeline","timelineData","chat_viewed_url","ViewMore","LikeList","CustomLikeList","Favorite","toggleMethod","setGeneralEvent","ReportReasonModal","elem","spacing","InfiniteScroll","replyWrappers","replyMutation","MutationObserver","mutations","mutation","Array","from","addedNodes","filter","nodeType","Node","ELEMENT_NODE","replyWrapper","observe","childList","body","newComment","Confirm","setEvents","attachment","selector","rootElement","element","renderLikeListOther","currentTarget","str","Boolean","JSON","parse","toLowerCase","ele","likeableType","likeableId","targetElementId","requestUrl","location","origin","params","split","query","URLSearchParams","likeable_type","likeable_id","fetch","headers","response","json","data","find","users","reaction","community_reaction","_nickname","_url","_avatar_url","_discard","toBool","cLikeListItem","createElement","setAttribute","cLikeListInfo","cLikeListAvatar","avatarUrl","cLikeListUser","cLikeListUserName","nickname","textContent","appendChild","userUrl1","avatarEquipedBadge","badge","position","avatarBadgeImg","image_url","userUrl2","badgeImg","nicknameEquipedBadge","nicknameBadgeImg","append","fetchLikesData","renderLikesList","console","error","empty","sortedReactions","sort","b","normalReaction","renderUsers","renderNormalLikesTab","renderReactionTabs","attachTabClickHandler","normalLikesTab","text","index","appendReactionTab","communityReaction","usersCount","url_name","title","tab","on","event","removeClass","addClass","selectedTab","hide","user","renderUserItem","selectedReaction","reaction_image_url","existingItem","show","userItem","createUserItem","url","avatar_url","discard","userInfo","reactionElement","createReactionElement","avatarElement","createAvatarElement","nicknameElement","createNicknameElement","reactionImageUrl","normalLikeImagePath","innerHTML","src","avatarImage","alt","userLink","href","avatarBadge","equiped_badges","badgeImage","nicknameText","createNicknameBadgeImage","image_badge_url","nicknameBadge","modalId","getElementById","submitButton","cancelButton","reportReasonInputs","init","updateSubmitButton","addEventListeners","isAnyRadioSelected","some","radio","checked","disabled","preventDefault","handleSubmit","selectedReason","detail","report","reportable_type","reportableType","reportable_id","reportableId","report_reason_id","content","Accept","stringify","ok","script","targetSelector","rootSelector","root","target","jsCollapseButtonSelector","collapsedArea","jsCollapseSelector","isSpecified","jsCollapseIsSpecified","expandArea","factory","_win","_deferred","Deferred","_html","_instances","_attrAriaHidden","_dataAriaHidden","_focusableElementsSelector","_defaultOptions","esc","handler","handlers","image","imageHandler","inline","inlineHandler","youtube","youtubeHandler","vimeo","vimeoHandler","googlemaps","googlemapsHandler","facebookvideo","facebookvideoHandler","iframe","iframeHandler","template","_imageRegexp","_youtubeRegex","_vimeoRegex","_googlemapsRegex","_facebookvideoRegex","_transitionEndEvent","el","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","undefined","style","transitionEnd","deferred","one","setTimeout","promise","settings","currSettings","arguments","extend","parseQueryParams","pairs","decodeURI","obj","appendQueryParams","indexOf","param","transferHash","originalUrl","newUrl","pos","substr","msg","instance","desc","opener","img","failed","reject","naturalWidth","placeholder","hasHideClass","hasClass","before","after","matches","exec","autoplay","output","winHeight","documentElement","clientHeight","Math","round","height","keydown","current","currentInstance","keyCode","options","handleTabKey","focusableElements","focusedIndex","activeElement","shiftKey","focus","resize","each","registerInstance","instanceToRegister","unshift","not","attr","removeInstance","instanceToRemove","off","grep","oldAttr","removeAttr","removeData","preferredHandler","currentHandlers","currentHandler","test","Lity","result","self","isReady","isClosed","ready","css","loader","always","trigger","proxy","contains","appendTo","is","when","lity","version","_defineProperties","props","descriptor","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","apply","_objectSpread","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","_slicedToArray","arr","isArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","err","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","minLen","toString","len","arr2","V","wt","W","Yt","U","Xt","B","zt","k","Rt","j","Dt","G","Lt","P","yt","F","At","q","It","K","$t","J","Ct","Nt","O","Ht","E","has","WeakSet","set","S","Zt","et","H","bt","_unused","gt","Number","st","HTMLElement","w","touches","clientX","clientY","C","map","reduce","Y","_n$getBoundingClientR","getBoundingClientRect","width","top","left","bottom","_t","hypot","L","_i2","_Object$entries","entries","_ref2","setProperty","A","_i3","_Object$entries2","_ref5","_i4","_Object$entries3","_ref8","X","min","max","R","pt","nt","warn","_i$classList","_","Vt","concat","Et","it","I","Wt","Ut","Bt","Z","kt","lt","ot","rt","at","jt","Gt","tabindex","role","ct","Pt","Ft","qt","z","Jt","M","x","te","ee","St","vt","Tt","Ot","draggable","wheelable","pinchable","bounds","zoomRatio","maxScale","minScale","initScale","ne","direction","ie","oe","inEl","outEl","resetEl","disabledClass","re","ae","beforeDestroy","destroy","beforeUpdate","update","zoom","wheel","dragStart","drag","dragEnd","pinchStart","pinch","pinchEnd","slideStart","slide","slideEnd","le","slider","zoomer","ce","he","de","ue","__events__","emit","_this","_len","_key","transform","scale","useFixedRatio","zoomTo","_this$transform","translateX","translateY","_t2","getContainerCenterClient","_Y","_this$getImageDiff","getImageDiff","T","D","move","_this$transform2","_this$getImageDiff2","_o","_a","moveTo","_this$getImageDiff3","_l","right","center","_r","_l2","_l3","slideTo","_this$options","controller","mounted","abort","destroyModules","removeAttribute","assign","getImageData","imageData","getContainerData","containerData","getSliderValue","__modules__","_this$getContainerDat","_this$getImageData","_Y2","getScaleRatio","_this$options2","_this$options3","N","me","Constructor","_classCallCheck","protoProps","staticProps","_this$options4","wrapper","_this$__modules__","destroySlider","destroyZoomer","sliderEl","sliderTrack","_t$options","zoomerEl","zoomerInEl","zoomerOutEl","zoomerResetEl","className","offsetWidth","offsetHeight","_Y3","originWidth","originHeight","touchData","startX","startY","prevX","prevY","imageTop","imageLeft","widthDiff","heightDiff","dragData","_i5","_Object$entries4","_ref11","_m","_m2","AbortController","_this$options5","_this$__modules__2","__scale__","_f","__translateX__","__translateY__","_this2","signal","states","wheeling","dragging","pinching","_this3","deltaY","_this4","removeEventListener","_this5","_this$options6","_this5$states","_Y5","_this5$getImageDiff2","ht","Q","dt","tt","ut","mt","ft","Mt","xt","_this5$states2","_Y4","_this5$getImageDiff","_this6","ResizeObserver","_this6$getContainerDa","_g","_Y6","_this$__modules__3","_e$options","__value__","sliding","sliderButton","_this7","_this$options7","MouseEvent","_e$options2","includes","_setEvent","selectors","image_path_attribute","cursor","getAttribute","Zoomist","ajax","dataType","fail","initiators","getFormElements","form","getSubmitButton","fileInput","getFileInput","textarea","getTextarea","attachmentItems","setAttachmentItems","attachmentDeleteButtons","setAttachmentDeleteButtons","readOnly","disableClick","item","attachmentContainers","setAttachmentContainers","dispatchEvent","Event","container","ariaHidden","isObject","now","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","_Symbol","_objectSpread2","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","userAgent","pattern","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","fn","substring","msMatchesSelector","webkitMatchesSelector","getParentOrHost","host","parentNode","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","replace","prop","val","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","list","getElementsByTagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","innerHeight","innerWidth","containerRect","parseInt","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","children","display","Sortable","ghost","dragged","lastChild","last","lastElementChild","previousElementSibling","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","gotSelf","clientWidth","scrollWidth","scrollHeight","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","throttle","callback","ms","scrollBy","Polymer","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","child","rect","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","splice","indexOfObject","animateAll","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","animatingX","animatingY","forRepaintDummy","repaint","easing","animated","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","pluginName","pluginEvent","eventName","sortable","evt","eventCanceled","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","pullMode","lastPutMode","allEventProperties","_excluded","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","put","revertClone","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","nearest","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","store","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","setData","dataTransfer","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","sum","charCodeAt","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","shadowRoot","path","composedPath","inputs","idx","_saveInputCheckedState","isContentEditable","criteria","trim","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","getSelection","removeAllRanges","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","spacer","_ghostIsLast","changed","_ghostIsFirst","firstChild","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","dropEffect","_globalDragOver","toArray","order","useAnimation","items","utils","dst","nextTick","cancelNextTick","detectDirection","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","_ref3","_ref4","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","freeGlobal","freeSelf","NodeList","raw","defaultPrevented","addListener","input","nativeEvent","targetTouches","identifier","idChanged","screenX","pageX","screenY","pageY","purge","removeListener","rel","sign","loop","distance","timestamp","rtl","portion","size","maxIdx","minIdx","progress","slides","details","absToRel","distToIdx","idxToDist","trackConfig","range","track","velocity","lastTimestamp","dist","dur","earlyExit","rubberband","animator","start","moveToIdx","dragSpeed","requestAnimationFrame","renderMode","getPropertyValue","__media","breakpoints","matchMedia","defaultAnimation","targetIdx","cancelAnimationFrame","initial","$scope","$confirmTargets","confirm","message","coorumConfirm","coorumConfirmTitle","accept","coorumConfirmAccept","coorumConfirmReject","remote","acceptCallback","rejectCallback","$confirmDialog","$rejectBtn","$acceptBtn","slideOptions","isComment","isSort","maxFileNum","excludeType","updateSortFieldValues","attachmentName","$fileSortField","imageTypes","$attachment","$finderButton","attachmentFinderButton","$cacheField","attachmentCache","$fileField","attachmentFieldAdd","$deleteField","attachmentFieldDelete","$imageList","attachmentImageList","$fileList","attachmentFileList","$fileExisting","attachmentFileExisting","$svg","createSVGRender","attachmentImageCloseIconUrl","file","attachmentFileCloseIconUrl","doc","attachmentFileIconUrl","handleOpenFinder","handleChange","handleDeleteExisting","attachmentFileSortField","setSortable","setKeenSlider","images","files","sorted","changedFiles","fileSortByType","existingFiles","getExistingFiles","alert","setFiles","every","fileName","DataTransfer","childElementCount","selectedFiles","parentElement","cache","attachmentDeleteId","attachmentDeleteCacheId","insertAdjacentElement","createDeleteField","handleDelete","attachmentDeleteName","domParser","DOMParser","svg","parseFromString","reader","filename","extension","renderSet","li","class","span","attachmentType","ext","figure","dataKey","perView","KeenSlider","attachmentImageItem","slidesPerView","observer","disconnect","fileSortField","onEnd","uniqued","merged","findIndex","FileReader","readAsDataURL","createItemRender","AttachmentMutationObserve","targets","subtree","baseGetTag","isObjectLike","symbolTag","global","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","buttonSelector","loadingSelector","click","originSelector","nextSelector","initScrollObserver","initMutationObserver","scrollObserver","IntersectionObserver","entry","isIntersecting","nextLink","createLoadingImage","rootMargin","getObservedElement","mutationObserver","loadingElement","origins","getOrigin","imageElement","loadingImage","divElement","objectProto","nativeObjectToString","isOwn","tag","unmasked","baseTrim","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","trimmedEndIndex","reTrimStart","string","reWhitespace","initializeTarget","omittedSelector","jsOmittedSelector","omittedArea","unlockButton","jsOmittedUnlockSelector","handleUnlockButtonVisibility","addUnlockButtonListener","noGlobal","getProto","_slice","flat","array","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","head","toType","context","isArrayLike","jquery","num","pushStack","elems","merge","prevObject","first","eq","even","_elem","odd","end","copy","copyIsArray","deep","isPlainObject","random","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","dir","childNodes","els","seed","nid","groups","newSelector","newContext","getElementsByClassName","qsa","testContext","scope","toSelector","qsaError","cacheLength","shift","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","matchesSelector","mozMatchesSelector","oMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","nodeValue","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","matched","matcher","unmatched","lang","elemLang","hash","hasFocus","tabIndex","selected","selectedIndex","_matchIndexes","checkbox","password","submit","tokens","combinator","base","skip","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","_name","defaultValue","unique","isXMLDoc","escapeSelector","_dir","until","truncate","_siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","contents","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","Callbacks","flag","createOptions","firing","memory","_fired","_locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","locked","fireWith","fired","tuples","_state","_promise","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","readyException","readyList","readyWait","readyState","doScroll","access","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","getData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","ignored","attached","fragment","nodes","htmlPrefilter","createTextNode","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","_on","types","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","handleObjIn","eventHandle","events","handleObj","namespaces","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","_handlers","matchedHandlers","matchedSelectors","addProp","hook","load","noBubble","beforeunload","returnValue","isDefaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","ctrlKey","eventPhase","metaKey","view","charCode","buttons","offsetX","offsetY","pointerId","toElement","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","_remove","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","finalPropName","_final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","cssHooks","opacity","origName","isCustomProp","isFinite","scrollboxSizeBuggy","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","prefilter","opt","speeds","fadeTo","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","timeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","classes","curValue","clazz","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","protocol","processData","contentType","accepts","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","_statusCode","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","statusText","finalText","crossDomain","hasContent","ifModified","beforeSend","success","send","nativeStatusText","responses","isSuccess","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","_callback","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","_callback2","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","undelegate","hover","fnOver","fnOut","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","webpackPolyfill","deprecate","paths","classname","sns_animation","$buttons","hide_event","long_touch_event","clickEvent","hoverEvent","touchEvent","reactionPopup","popupHide","popupShowWithTimer","popupShow","eyecatch","animationend","_debounce","formAction","reactionParam","replacedButton","isLessMD","targetElement","popupElem"],"mappings":"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","file":"js/pages/chats/show-54ceca7198e78816f5d3.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1035);\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { LikeList } from 'javascripts/like_list';\nimport { CustomLikeList } from 'javascripts/custom_like_list';\nimport { Timeline } from 'javascripts/timeline';\nimport { ViewMore } from 'javascripts/view_more';\nimport Attachment from '../../../javascripts/attachment';\nimport CommentForm from '../../../javascripts/comment_form';\nimport ImageZoomer from '../../../javascripts/components/ImageZoomer';\nimport Like from '../../../javascripts/components/Like';\nimport ReportReasonModal from '../../../javascripts/report_reason_modal';\nimport InfiniteScroll from '../../../javascripts/components/infinite_scroll';\nimport Confirm from '../../../javascripts/components/Confirm';\nimport ReplyOmitted from '../../../javascripts/components/reply_omitted';\nimport ReplyCollapse from '../../../javascripts/components/reply_collapse';\n\nif (!window?.Coorum) {\n window.Coorum = {};\n}\nwindow.Coorum.Like = Like;\nwindow.Coorum.ImageZoomer = ImageZoomer;\nwindow.Coorum.CommentForm = CommentForm;\nwindow.Coorum.Attachment = Attachment;\n\n$(() => {\n new ReplyOmitted('.js-reply-omitted');\n new ReplyCollapse('.js-reply-collapse');\n const commentRootElement = document.querySelector('.comments-content');\n const comments = document.querySelectorAll('.p-answer');\n\n comments.forEach((comment) => {\n addToggleMuteEvent(comment);\n addMuteClickEvent(comment);\n addUnmuteClickEvent(comment);\n });\n\n // åˆå›žèªã¿è¾¼ã¿ã‚¤ãƒ™ãƒ³ãƒˆ\n addActionEvent(document);\n new Timeline(timelineData.chat_viewed_url);\n new ViewMore('#view_more', '.loading-image');\n new LikeList('.c-like-list--other');\n new CustomLikeList('.c-custom-like-list--other');\n new Coorum.Like('.js-like');\n new Coorum.Favorite('.js-favorite', {\n button: { toggleMethod: ['post', 'delete'] },\n });\n new Coorum.ImageZoomer().setGeneralEvent();\n new Coorum.CommentForm('.js-comment-form');\n document.querySelectorAll('[id^=\"report-reason-modal-\"]').forEach((modal) => {\n new ReportReasonModal(modal.id);\n });\n document.querySelectorAll('.js-attachment').forEach(\n (elem) => new Coorum.Attachment({ spacing: 12 }, elem, true)\n );\n new InfiniteScroll('.comments-container', '.p-answer', '.js-paginate a');\n\n // 検知イベント\n const replyWrappers = document.querySelectorAll('.sent-replies');\n const replyMutation = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n Array.from(mutation.addedNodes)\n .filter((node) => node.nodeType === Node.ELEMENT_NODE)\n .forEach((node) => {\n new ReplyOmitted('.js-reply-omitted', node);\n });\n });\n });\n replyWrappers.forEach((replyWrapper) => {\n replyMutation.observe(replyWrapper, { childList: true });\n });\n\n const docmentMutation = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n Array.from(mutation.addedNodes)\n .filter((node) => node.nodeType === Node.ELEMENT_NODE)\n .forEach((node) => {\n addMuteClickEvent(node);\n addUnmuteClickEvent(node);\n });\n });\n });\n docmentMutation.observe(document.body, { childList: true });\n\n if (commentRootElement) {\n const commentRootMutation = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n Array.from(mutation.addedNodes)\n .filter((node) => node.nodeType === Node.ELEMENT_NODE)\n .forEach((node) => {\n new LikeList('.c-like-list--other', node);\n new CustomLikeList('.c-custom-like-list--other', node);\n new Coorum.Like('.js-like', false, node);\n new Coorum.ImageZoomer().setGeneralEvent(node);\n if (node.dataset.newComment === 'false') {\n Confirm.setEvents(node);\n }\n const attachment = node.querySelector('.js-attachment');\n if (attachment) {\n new Coorum.Attachment({ spacing: 12 }, attachment, true);\n }\n addToggleMuteEvent(node);\n addActionEvent(node);\n\n node.querySelectorAll('[id^=\"report-reason-modal-\"]').forEach((modal) => {\n new ReportReasonModal(modal.id);\n });\n new ReplyOmitted('.js-reply-omitted', node);\n new ReplyCollapse('.js-reply-collapse', node);\n\n node.querySelectorAll('.sent-replies').forEach((replyWrapper) => {\n replyMutation.observe(replyWrapper, { childList: true });\n });\n });\n });\n });\n commentRootMutation.observe(commentRootElement, { childList: true });\n }\n});\n\n// ミュートã•ã‚ŒãŸæŠ•ç¨¿ã®\"投稿を表示\"ボタンを押ã—ãŸæ™‚ã«è¡¨ç¤ºã‚’切り替ãˆã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’登録ã™ã‚‹\nfunction addToggleMuteEvent(node) {\n node.querySelectorAll('.js-toggle-muted-post').forEach((toggleMuteBtn) => {\n toggleMuteBtn.addEventListener('click', () => {\n const post = toggleMuteBtn.closest('.js-post');\n const postContent = post.querySelector('.js-post-content');\n if (post.dataset.tmpUnmuted === 'false') {\n post.dataset.tmpUnmuted = 'true';\n postContent.classList.remove('hidden');\n toggleMuteBtn.innerText = '投稿をéžè¡¨ç¤º';\n\n new ReplyOmitted('.js-reply-omitted', node);\n } else {\n post.dataset.tmpUnmuted = 'false';\n postContent.classList.add('hidden');\n toggleMuteBtn.innerText = '投稿を表示';\n }\n });\n });\n}\n\n// ãƒãƒ£ãƒƒãƒˆã‚’ミュートã—ãŸå ´åˆã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’登録ã™ã‚‹\nfunction addMuteClickEvent(node) {\n // ユーザーをミュートã—ãŸå ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŠ•ç¨¿ã—ãŸä»–ã®æŠ•ç¨¿ã‚‚ミュートã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’登録ã™ã‚‹\n node\n .querySelectorAll('.js-mute-btn[data-type=\"User\"]')\n .forEach((muteUserBtn) => {\n muteUserBtn.addEventListener('click', () => {\n $.modal.close();\n const userId = muteUserBtn.dataset.id;\n document\n .querySelectorAll(`.js-post[data-user-id=\"${userId}\"]`)\n .forEach((muted_user_post) => {\n muted_user_post\n .querySelector(`.js-post-mute-label[data-user-id=\"${userId}\"]`)\n .classList.remove('hidden');\n muted_user_post\n .querySelector(`.js-post-content[data-user-id=\"${userId}\"]`)\n .classList.add('hidden');\n });\n });\n });\n\n node\n .querySelectorAll('.js-mute-btn[data-type=\"Chat\"]')\n .forEach((muteUserBtn) => {\n muteUserBtn.addEventListener('click', () => {\n $.modal.close();\n });\n });\n}\n\n// ãƒãƒ£ãƒƒãƒˆã®ãƒŸãƒ¥ãƒ¼ãƒˆã‚’解除ã—ãŸå ´åˆã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’登録ã™ã‚‹\nfunction addUnmuteClickEvent(node) {\n // ユーザーをミュートを解除ã—ãŸå ´åˆã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŠ•ç¨¿ã—ãŸä»–ã®æŠ•ç¨¿ã‚‚ミュート解除ã™ã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’登録ã™ã‚‹\n node\n .querySelectorAll('.js-unmute-btn[data-type=\"User\"]')\n .forEach((unmuteUserBtn) => {\n unmuteUserBtn.addEventListener('click', () => {\n $.modal.close();\n const userId = unmuteUserBtn.dataset.id;\n document\n .querySelectorAll(`.js-post[data-user-id=\"${userId}\"]`)\n .forEach((unmute_user_post) => {\n unmute_user_post\n .querySelector(`.js-post-mute-label[data-user-id=\"${userId}\"]`)\n .classList.add('hidden');\n unmute_user_post\n .querySelector(`.js-post-content[data-user-id=\"${userId}\"]`)\n .classList.remove('hidden');\n\n new ReplyOmitted('.js-reply-omitted', unmute_user_post);\n });\n });\n });\n\n node\n .querySelectorAll('.js-unmute-btn[data-type=\"Chat\"]')\n .forEach((unmuteUserBtn) => {\n unmuteUserBtn.addEventListener('click', () => {\n $.modal.close();\n });\n });\n}\n\n// 三点リーダーã®ãƒœã‚¿ãƒ³ã‚’クリックã—ãŸæ™‚ã«è¡¨ç¤ºã‚’切り替ãˆã‚‹ã‚¤ãƒ™ãƒ³ãƒˆã‚’登録ã™ã‚‹\nfunction addActionEvent(rootElement = document) {\n rootElement.querySelectorAll('.js-action_btn').forEach((button) => {\n button.addEventListener('click', () => {\n button.querySelector('.js-action_body').classList.toggle('block');\n });\n });\n}\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","class LikeList {\n constructor(selector, rootElement = document) {\n rootElement.querySelectorAll(selector).forEach((element) => {\n element.addEventListener('click', (e) => {\n this.renderLikeListOther(e.currentTarget);\n });\n });\n }\n toBool(str) {\n if (typeof str != 'string') {\n return Boolean(str);\n }\n try {\n var obj = JSON.parse(str.toLowerCase());\n return obj == true;\n } catch (e) {\n return str != '';\n }\n }\n renderLikeListOther(ele) {\n let likeableType;\n let likeableId;\n let targetElementId;\n let requestUrl = location.origin + '/likes.json';\n\n if (ele.id) {\n var params = ele.id.split('-');\n likeableType = params[0];\n likeableId = params[1];\n targetElementId = '#' + likeableType + '_' + likeableId;\n\n let bodyParam = {\n likeable_type: likeableType,\n likeable_id: likeableId,\n };\n\n let query = new URLSearchParams(bodyParam);\n fetch(`${requestUrl}?${query}`, {\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n },\n })\n .then((response) => response.json())\n .then((data) => {\n $(targetElementId).find('.c-like-list--item').remove();\n var users = data.find(\n (reaction) => !reaction.community_reaction\n ).users;\n if (users) {\n for (var i = 0; i < users.length; i++) {\n var _nickname = users[i]['nickname'];\n var _url = users[i]['url'];\n var _avatar_url = users[i]['avatar_url'];\n var _discard = this.toBool(users[i]['discard']);\n\n var cLikeListItem = document.createElement('div');\n cLikeListItem.setAttribute('class', 'c-like-list--item');\n\n var cLikeListInfo = document.createElement('div');\n cLikeListInfo.setAttribute('class', 'c-like-list--info');\n\n var cLikeListAvatar = document.createElement('div');\n cLikeListAvatar.setAttribute('class', 'c-like-list--avatar');\n\n var avatarUrl = document.createElement('img');\n avatarUrl.setAttribute('src', _avatar_url);\n avatarUrl.setAttribute('alt', 'ユーザー画åƒ');\n\n var cLikeListUser = document.createElement('div');\n cLikeListUser.setAttribute('class', 'c-like-list--user');\n\n var cLikeListUserName = document.createElement('span');\n cLikeListUserName.setAttribute(\n 'class',\n 'c-like-list--user__name'\n );\n var nickname = document.createElement('span');\n nickname.textContent = _nickname;\n\n if (_discard) {\n cLikeListAvatar.appendChild(avatarUrl);\n cLikeListUserName.appendChild(nickname);\n } else {\n var userUrl1 = document.createElement('a');\n userUrl1.setAttribute('href', _url);\n userUrl1.setAttribute('class', 'p-post-user__avatar');\n userUrl1.appendChild(avatarUrl);\n const avatarEquipedBadge = users[i]['equiped_badges'].find(\n (badge) => badge.position == 'avatar'\n );\n if (avatarEquipedBadge) {\n var avatarBadgeImg = document.createElement('img');\n avatarBadgeImg.setAttribute(\n 'src',\n avatarEquipedBadge.image_url\n );\n avatarBadgeImg.setAttribute(\n 'class',\n 'p-post-user-avatar__badge-image'\n );\n avatarBadgeImg.setAttribute('alt', 'ãƒãƒƒã‚¸ç”»åƒ');\n userUrl1.classList.add('--with-badge');\n userUrl1.appendChild(avatarBadgeImg);\n }\n cLikeListAvatar.appendChild(userUrl1);\n var userUrl2 = document.createElement('a');\n userUrl2.setAttribute('href', _url);\n userUrl2.setAttribute('class', 'c-like-list__nickname');\n userUrl2.appendChild(nickname);\n if (users[i]['image_badge_url']) {\n var badgeImg = document.createElement('img');\n badgeImg.setAttribute('src', users[i]['image_badge_url']);\n badgeImg.setAttribute(\n 'class',\n 'c-like-list-nickname__badge-image'\n );\n userUrl2.appendChild(badgeImg);\n } else {\n const nicknameEquipedBadge = users[i]['equiped_badges'].find(\n (badge) => badge.position == 'nickname'\n );\n if (nicknameEquipedBadge) {\n var nicknameBadgeImg = document.createElement('img');\n nicknameBadgeImg.setAttribute(\n 'src',\n nicknameEquipedBadge.image_url\n );\n nicknameBadgeImg.setAttribute(\n 'class',\n 'c-like-list-nickname__badge-image'\n );\n nicknameBadgeImg.setAttribute('alt', 'ãƒãƒƒã‚¸ç”»åƒ');\n userUrl2.appendChild(nicknameBadgeImg);\n }\n }\n cLikeListUserName.appendChild(userUrl2);\n }\n\n cLikeListUser.appendChild(cLikeListUserName);\n\n cLikeListInfo.appendChild(cLikeListAvatar);\n cLikeListInfo.appendChild(cLikeListUser);\n\n cLikeListItem.appendChild(cLikeListInfo);\n $(targetElementId)\n .find('.c-like-list--modal__body')\n .append(cLikeListItem);\n }\n }\n });\n }\n }\n}\n\nexport { LikeList };\n","class CustomLikeList {\n constructor(selector, rootElement = document) {\n rootElement.querySelectorAll(selector).forEach((element) => {\n element.addEventListener('click', (e) => {\n this.fetchLikesData(e.currentTarget);\n });\n });\n }\n\n async fetchLikesData(element) {\n const [likeableType, likeableId] = element.id.split('-');\n const targetElementId = `#${likeableType}_${likeableId}`;\n const requestUrl = `${location.origin}/likes.json`;\n const bodyParam = {\n likeable_type: likeableType,\n likeable_id: likeableId,\n };\n const query = new URLSearchParams(bodyParam);\n\n try {\n const response = await fetch(`${requestUrl}?${query}`, {\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n },\n });\n const data = await response.json();\n this.renderLikesList(data, targetElementId);\n } catch (error) {\n console.error('Error:', error);\n }\n }\n\n renderLikesList(data, targetElementId) {\n $(targetElementId).find('.c-like-list--item').remove();\n $('.reaction-tabs').empty();\n\n const sortedReactions = data.sort(\n (a, b) => b.users.length - a.users.length\n );\n const normalReaction = sortedReactions.find(\n (reaction) => !reaction.community_reaction\n );\n\n this.renderUsers(data, 'all', targetElementId);\n this.renderNormalLikesTab(normalReaction, targetElementId);\n this.renderReactionTabs(sortedReactions);\n this.attachTabClickHandler(data, targetElementId);\n }\n\n renderNormalLikesTab(normalReaction, targetElementId) {\n const normalLikesTab = $(`${targetElementId}_normal_like_tab`);\n\n if (normalReaction) {\n normalLikesTab.find('span').text(`${normalReaction.users.length}`);\n } else {\n normalLikesTab.remove();\n }\n }\n\n renderReactionTabs(sortedReactions) {\n sortedReactions.forEach((reaction, index) => {\n if (reaction.community_reaction) {\n this.appendReactionTab(\n reaction.community_reaction,\n reaction.users.length\n );\n }\n });\n }\n\n appendReactionTab(communityReaction, usersCount) {\n const { url_name, title, image_url } = communityReaction;\n const tab = `\n <div class=\"js-like-tab like-tab relative flex flex-col font-bold text-sm mt-4 cursor-pointer whitespace-nowrap\" data-tab=\"${url_name}\" id=\"${url_name}\">\n <div class=\"flex items-center px-4 border-0 border-r border-solid border-gray-200\">\n <img src=\"${image_url}\" alt=\"${title}\" class=\"w-4 h-4 mr-1\">\n <span>${usersCount}</span>\n </div>\n <div class=\"h-4\"></div>\n </div>\n `;\n $('.reaction-tabs').append(tab);\n }\n\n attachTabClickHandler(data, targetElementId) {\n $('.js-like-tab').on('click', (event) => {\n $('.like-tab').removeClass('active');\n $(event.currentTarget).addClass('active');\n const selectedTab = $(event.currentTarget).data('tab');\n this.renderUsers(data, selectedTab, targetElementId);\n });\n }\n\n renderUsers(data, selectedTab, targetElementId) {\n $(targetElementId).find('.c-like-list--item').hide();\n\n switch (selectedTab) {\n case 'all':\n data.forEach((reaction) => {\n reaction.users.forEach((user) => {\n if (reaction.community_reaction) {\n this.renderUserItem(\n user,\n targetElementId,\n reaction.community_reaction.image_url\n );\n } else {\n this.renderUserItem(user, targetElementId);\n }\n });\n });\n break;\n\n case 'normal_likes':\n const normalReaction = data.find(\n (reaction) => !reaction.community_reaction\n );\n if (normalReaction) {\n normalReaction.users.forEach((user) => {\n this.renderUserItem(user, targetElementId);\n });\n }\n break;\n\n default:\n const selectedReaction = data.find(\n (reaction) =>\n reaction.community_reaction &&\n reaction.community_reaction.url_name === selectedTab\n );\n if (selectedReaction) {\n selectedReaction.users.forEach((user) => {\n this.renderUserItem(\n user,\n targetElementId,\n selectedReaction.community_reaction.image_url\n );\n });\n }\n break;\n }\n }\n\n renderUserItem(user, targetElementId, reaction_image_url) {\n const userId = user.url_name;\n const existingItem = $(targetElementId).find(\n `.c-like-list--item[data-user-id=\"${userId}\"]`\n );\n\n if (existingItem.length) {\n existingItem.show();\n } else {\n const userItem = this.createUserItem(\n user,\n reaction_image_url,\n targetElementId\n );\n $(targetElementId).find('.c-like-list--modal__body').append(userItem);\n }\n }\n\n createUserItem(user, reaction_image_url, targetElementId) {\n const { nickname, url, avatar_url, discard } = user;\n\n const userItem = document.createElement('div');\n userItem.classList.add('c-like-list--item');\n userItem.setAttribute('data-user-id', user.url_name);\n\n const userInfo = document.createElement('div');\n userInfo.classList.add('c-like-list--info');\n\n const reactionElement = this.createReactionElement(\n reaction_image_url,\n targetElementId\n );\n const avatarElement = this.createAvatarElement(avatar_url, user);\n const nicknameElement = this.createNicknameElement(\n nickname,\n url,\n user,\n discard\n );\n\n userInfo.appendChild(reactionElement);\n userInfo.appendChild(avatarElement);\n userInfo.appendChild(nicknameElement);\n userItem.appendChild(userInfo);\n\n return userItem;\n }\n\n createReactionElement(reactionImageUrl = '', targetElementId) {\n const normalLikeImagePath = document.querySelector(\n `${targetElementId}_normal_like_icon`\n ).innerHTML;\n\n const reactionElement = reactionImageUrl\n ? document.createElement('img')\n : document.createElement('div');\n if (reactionImageUrl) {\n reactionElement.src = reactionImageUrl;\n reactionElement.classList.add('w-6', 'h-6', 'mr-2', 'rounded-full');\n } else {\n reactionElement.innerHTML = normalLikeImagePath;\n reactionElement.classList.add(\n 'w-6',\n 'h-6',\n 'mr-2',\n 'rounded-full',\n 'bg-[#E7E8E7]',\n 'p-1',\n 'flex',\n 'items-center'\n );\n }\n\n return reactionElement;\n }\n\n createAvatarElement(avatarUrl, user) {\n const avatarElement = document.createElement('div');\n avatarElement.classList.add('c-like-list--avatar');\n\n const avatarImage = document.createElement('img');\n avatarImage.src = avatarUrl;\n avatarImage.alt = 'ユーザー画åƒ';\n\n if (user.discard) {\n avatarElement.appendChild(avatarImage);\n } else {\n const userLink = document.createElement('a');\n userLink.href = user.url;\n userLink.classList.add('p-post-user__avatar');\n userLink.appendChild(avatarImage);\n\n const avatarBadge = user.equiped_badges.find(\n (badge) => badge.position === 'avatar'\n );\n if (avatarBadge) {\n const badgeImage = document.createElement('img');\n badgeImage.src = avatarBadge.image_url;\n badgeImage.classList.add('p-post-user-avatar__badge-image');\n badgeImage.alt = 'ãƒãƒƒã‚¸ç”»åƒ';\n userLink.classList.add('--with-badge');\n userLink.appendChild(badgeImage);\n }\n\n avatarElement.appendChild(userLink);\n }\n\n return avatarElement;\n }\n\n createNicknameElement(nickname, url, user, discard) {\n const nicknameElement = document.createElement('div');\n nicknameElement.classList.add('c-like-list--user');\n\n const nicknameText = document.createElement('span');\n nicknameText.classList.add('c-like-list--user__name');\n nicknameText.textContent = nickname;\n\n if (discard) {\n nicknameElement.appendChild(nicknameText);\n } else {\n const userLink = document.createElement('a');\n userLink.href = url;\n userLink.classList.add('c-like-list__nickname');\n userLink.appendChild(nicknameText);\n\n const badgeImage = this.createNicknameBadgeImage(user);\n if (badgeImage) {\n userLink.appendChild(badgeImage);\n }\n\n nicknameElement.appendChild(userLink);\n }\n\n return nicknameElement;\n }\n\n createNicknameBadgeImage(user) {\n let badgeImage = null;\n\n if (user.image_badge_url) {\n badgeImage = document.createElement('img');\n badgeImage.src = user.image_badge_url;\n badgeImage.classList.add('c-like-list-nickname__badge-image');\n } else {\n const nicknameBadge = user.equiped_badges.find(\n (badge) => badge.position === 'nickname'\n );\n if (nicknameBadge) {\n badgeImage = document.createElement('img');\n badgeImage.src = nicknameBadge.image_url;\n badgeImage.classList.add('c-like-list-nickname__badge-image');\n badgeImage.alt = 'ãƒãƒƒã‚¸ç”»åƒ';\n }\n }\n\n return badgeImage;\n }\n}\n\nexport { CustomLikeList };\n","export default class ReportReasonModal {\n constructor(modalId) {\n this.modal = document.getElementById(modalId);\n\n if (!this.modal) return;\n\n this.submitButton = this.modal.querySelector('.js-report-modal-submit');\n this.cancelButton = this.modal.querySelector('.js-report-modal-cancel');\n this.reportReasonInputs = this.modal.querySelectorAll(\n 'input[name=\"report_reason\"]'\n );\n\n this.init();\n }\n\n init() {\n this.updateSubmitButton();\n this.addEventListeners();\n }\n\n updateSubmitButton() {\n const isAnyRadioSelected = Array.from(this.reportReasonInputs).some(\n (radio) => radio.checked\n );\n\n this.submitButton.disabled =\n this.reportReasonInputs.length > 0 ? !isAnyRadioSelected : false;\n }\n\n addEventListeners() {\n this.reportReasonInputs.forEach((radio) => {\n radio.addEventListener('change', () => this.updateSubmitButton());\n });\n\n this.cancelButton.addEventListener('click', (event) => {\n event.preventDefault();\n $.modal.close();\n });\n\n this.submitButton.addEventListener('click', () => this.handleSubmit());\n }\n\n handleSubmit() {\n if (this.submitButton.disabled) return;\n\n const selectedReason = this.modal.querySelector(\n 'input[name=\"report_reason\"]:checked'\n );\n const detail = this.modal.querySelector('textarea')?.value || '';\n const data = {\n report: {\n reportable_type: this.modal.dataset.reportableType,\n reportable_id: this.modal.dataset.reportableId,\n report_reason_id: selectedReason?.value || '',\n detail: detail,\n },\n };\n\n fetch('/reports', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]')\n .content,\n Accept: 'text/javascript',\n },\n body: JSON.stringify(data),\n })\n .then((response) => {\n if (response.ok) {\n return response.text();\n }\n throw new Error('Network response was not ok.');\n })\n .then((script) => {\n Function(`\"use strict\";return (${script})`)();\n $.modal.close();\n })\n .catch((error) => {\n console.error('Error:', error);\n $.modal.close();\n });\n }\n}\n","import ReplyOmitted from './reply_omitted';\n\nclass ReplyCollapse {\n constructor(targetSelector, rootSelector = document) {\n this.root = rootSelector;\n this.init(targetSelector);\n }\n\n init(targetSelector) {\n const targets = this.root.querySelectorAll(targetSelector);\n\n targets.forEach((target) => {\n const button = target.querySelector(target.dataset.jsCollapseButtonSelector);\n const collapsedArea = target.querySelector(target.dataset.jsCollapseSelector);\n const isSpecified = target.dataset.jsCollapseIsSpecified === 'true';\n\n if (!target || !button || !collapsedArea) return;\n\n if (isSpecified) {\n this.expandArea(collapsedArea, button, target);\n } else {\n button.addEventListener('click', () => {\n this.expandArea(collapsedArea, button, target);\n });\n }\n });\n }\n\n expandArea(collapsedArea, button, target) {\n // FIXME: 該当classã®displayプãƒãƒ‘ティを削除ã— ã€hidden ã«ç½®ãæ›ãˆå‡ºæ¥ãŸå ´åˆã« `remove('hidden');` ãŒä¸è¦ã«ãªã‚‹\n collapsedArea.classList.remove('hidden');\n collapsedArea.classList.add('block');\n button.remove();\n new ReplyOmitted('.js-reply-omitted', target);\n }\n}\n\nexport default ReplyCollapse;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*! Lity - v2.4.1 - 2020-04-26\n* http://sorgalla.com/lity/\n* Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */\n(function (window, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], function ($) {\n return factory(window, $);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && _typeof(module.exports) === 'object') {\n module.exports = factory(window, require('jquery'));\n } else {\n window.lity = factory(window, window.jQuery || window.Zepto);\n }\n})(typeof window !== \"undefined\" ? window : this, function (window, $) {\n 'use strict';\n\n var document = window.document;\n\n var _win = $(window);\n\n var _deferred = $.Deferred;\n\n var _html = $('html');\n\n var _instances = [];\n var _attrAriaHidden = 'aria-hidden';\n\n var _dataAriaHidden = 'lity-' + _attrAriaHidden;\n\n var _focusableElementsSelector = 'a[href],area[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),iframe,object,embed,[contenteditable],[tabindex]:not([tabindex^=\"-\"])';\n var _defaultOptions = {\n esc: true,\n handler: null,\n handlers: {\n image: imageHandler,\n inline: inlineHandler,\n youtube: youtubeHandler,\n vimeo: vimeoHandler,\n googlemaps: googlemapsHandler,\n facebookvideo: facebookvideoHandler,\n iframe: iframeHandler\n },\n template: '<div class=\"lity\" role=\"dialog\" aria-label=\"Dialog Window (Press escape to close)\" tabindex=\"-1\"><div class=\"lity-wrap\" data-lity-close role=\"document\"><div class=\"lity-loader\" aria-hidden=\"true\">Loading...</div><div class=\"lity-container\"><div class=\"lity-content\"></div><button class=\"lity-close\" type=\"button\" aria-label=\"Close (Press escape to close)\" data-lity-close>×</button></div></div></div>'\n };\n var _imageRegexp = /(^data:image\\/)|(\\.(png|jpe?g|gif|svg|webp|bmp|ico|tiff?)(\\?\\S*)?$)/i;\n var _youtubeRegex = /(youtube(-nocookie)?\\.com|youtu\\.be)\\/(watch\\?v=|v\\/|u\\/|embed\\/?)?([\\w-]{11})(.*)?/i;\n var _vimeoRegex = /(vimeo(pro)?.com)\\/(?:[^\\d]+)?(\\d+)\\??(.*)?$/;\n var _googlemapsRegex = /((maps|www)\\.)?google\\.([^\\/\\?]+)\\/?((maps\\/?)?\\?)(.*)/i;\n var _facebookvideoRegex = /(facebook\\.com)\\/([a-z0-9_-]*)\\/videos\\/([0-9]*)(.*)?$/i;\n\n var _transitionEndEvent = function () {\n var el = document.createElement('div');\n var transEndEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend'\n };\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return transEndEventNames[name];\n }\n }\n\n return false;\n }();\n\n function transitionEnd(element) {\n var deferred = _deferred();\n\n if (!_transitionEndEvent || !element.length) {\n deferred.resolve();\n } else {\n element.one(_transitionEndEvent, deferred.resolve);\n setTimeout(deferred.resolve, 500);\n }\n\n return deferred.promise();\n }\n\n function settings(currSettings, key, value) {\n if (arguments.length === 1) {\n return $.extend({}, currSettings);\n }\n\n if (typeof key === 'string') {\n if (typeof value === 'undefined') {\n return typeof currSettings[key] === 'undefined' ? null : currSettings[key];\n }\n\n currSettings[key] = value;\n } else {\n $.extend(currSettings, key);\n }\n\n return this;\n }\n\n function parseQueryParams(params) {\n var pairs = decodeURI(params.split('#')[0]).split('&');\n var obj = {},\n p;\n\n for (var i = 0, n = pairs.length; i < n; i++) {\n if (!pairs[i]) {\n continue;\n }\n\n p = pairs[i].split('=');\n obj[p[0]] = p[1];\n }\n\n return obj;\n }\n\n function appendQueryParams(url, params) {\n return url + (url.indexOf('?') > -1 ? '&' : '?') + $.param(params);\n }\n\n function transferHash(originalUrl, newUrl) {\n var pos = originalUrl.indexOf('#');\n\n if (-1 === pos) {\n return newUrl;\n }\n\n if (pos > 0) {\n originalUrl = originalUrl.substr(pos);\n }\n\n return newUrl + originalUrl;\n }\n\n function error(msg) {\n return $('<span class=\"lity-error\"></span>').append(msg);\n }\n\n function imageHandler(target, instance) {\n var desc = instance.opener() && instance.opener().data('lity-desc') || 'Image with no description';\n var img = $('<img src=\"' + target + '\" alt=\"' + desc + '\"/>');\n\n var deferred = _deferred();\n\n var failed = function failed() {\n deferred.reject(error('Failed loading image'));\n };\n\n img.on('load', function () {\n if (this.naturalWidth === 0) {\n return failed();\n }\n\n deferred.resolve(img);\n }).on('error', failed);\n return deferred.promise();\n }\n\n imageHandler.test = function (target) {\n return _imageRegexp.test(target);\n };\n\n function inlineHandler(target, instance) {\n var el, placeholder, hasHideClass;\n\n try {\n el = $(target);\n } catch (e) {\n return false;\n }\n\n if (!el.length) {\n return false;\n }\n\n placeholder = $('<i style=\"display:none !important\"></i>');\n hasHideClass = el.hasClass('lity-hide');\n instance.element().one('lity:remove', function () {\n placeholder.before(el).remove();\n\n if (hasHideClass && !el.closest('.lity-content').length) {\n el.addClass('lity-hide');\n }\n });\n return el.removeClass('lity-hide').after(placeholder);\n }\n\n function youtubeHandler(target) {\n var matches = _youtubeRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n return iframeHandler(transferHash(target, appendQueryParams('https://www.youtube' + (matches[2] || '') + '.com/embed/' + matches[4], $.extend({\n autoplay: 1\n }, parseQueryParams(matches[5] || '')))));\n }\n\n function vimeoHandler(target) {\n var matches = _vimeoRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n return iframeHandler(transferHash(target, appendQueryParams('https://player.vimeo.com/video/' + matches[3], $.extend({\n autoplay: 1\n }, parseQueryParams(matches[4] || '')))));\n }\n\n function facebookvideoHandler(target) {\n var matches = _facebookvideoRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n if (0 !== target.indexOf('http')) {\n target = 'https:' + target;\n }\n\n return iframeHandler(transferHash(target, appendQueryParams('https://www.facebook.com/plugins/video.php?href=' + target, $.extend({\n autoplay: 1\n }, parseQueryParams(matches[4] || '')))));\n }\n\n function googlemapsHandler(target) {\n var matches = _googlemapsRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n return iframeHandler(transferHash(target, appendQueryParams('https://www.google.' + matches[3] + '/maps?' + matches[6], {\n output: matches[6].indexOf('layer=c') > 0 ? 'svembed' : 'embed'\n })));\n }\n\n function iframeHandler(target) {\n return '<div class=\"lity-iframe-container\"><iframe frameborder=\"0\" allowfullscreen allow=\"autoplay; fullscreen\" src=\"' + target + '\"/></div>';\n }\n\n function winHeight() {\n return document.documentElement.clientHeight ? document.documentElement.clientHeight : Math.round(_win.height());\n }\n\n function keydown(e) {\n var current = currentInstance();\n\n if (!current) {\n return;\n } // ESC key\n\n\n if (e.keyCode === 27 && !!current.options('esc')) {\n current.close();\n } // TAB key\n\n\n if (e.keyCode === 9) {\n handleTabKey(e, current);\n }\n }\n\n function handleTabKey(e, instance) {\n var focusableElements = instance.element().find(_focusableElementsSelector);\n var focusedIndex = focusableElements.index(document.activeElement);\n\n if (e.shiftKey && focusedIndex <= 0) {\n focusableElements.get(focusableElements.length - 1).focus();\n e.preventDefault();\n } else if (!e.shiftKey && focusedIndex === focusableElements.length - 1) {\n focusableElements.get(0).focus();\n e.preventDefault();\n }\n }\n\n function resize() {\n $.each(_instances, function (i, instance) {\n instance.resize();\n });\n }\n\n function registerInstance(instanceToRegister) {\n if (1 === _instances.unshift(instanceToRegister)) {\n _html.addClass('lity-active');\n\n _win.on({\n resize: resize,\n keydown: keydown\n });\n }\n\n $('body > *').not(instanceToRegister.element()).addClass('lity-hidden').each(function () {\n var el = $(this);\n\n if (undefined !== el.data(_dataAriaHidden)) {\n return;\n }\n\n el.data(_dataAriaHidden, el.attr(_attrAriaHidden) || null);\n }).attr(_attrAriaHidden, 'true');\n }\n\n function removeInstance(instanceToRemove) {\n var show;\n instanceToRemove.element().attr(_attrAriaHidden, 'true');\n\n if (1 === _instances.length) {\n _html.removeClass('lity-active');\n\n _win.off({\n resize: resize,\n keydown: keydown\n });\n }\n\n _instances = $.grep(_instances, function (instance) {\n return instanceToRemove !== instance;\n });\n\n if (!!_instances.length) {\n show = _instances[0].element();\n } else {\n show = $('.lity-hidden');\n }\n\n show.removeClass('lity-hidden').each(function () {\n var el = $(this),\n oldAttr = el.data(_dataAriaHidden);\n\n if (!oldAttr) {\n el.removeAttr(_attrAriaHidden);\n } else {\n el.attr(_attrAriaHidden, oldAttr);\n }\n\n el.removeData(_dataAriaHidden);\n });\n }\n\n function currentInstance() {\n if (0 === _instances.length) {\n return null;\n }\n\n return _instances[0];\n }\n\n function factory(target, instance, handlers, preferredHandler) {\n var handler = 'inline',\n content;\n var currentHandlers = $.extend({}, handlers);\n\n if (preferredHandler && currentHandlers[preferredHandler]) {\n content = currentHandlers[preferredHandler](target, instance);\n handler = preferredHandler;\n } else {\n // Run inline and iframe handlers after all other handlers\n $.each(['inline', 'iframe'], function (i, name) {\n delete currentHandlers[name];\n currentHandlers[name] = handlers[name];\n });\n $.each(currentHandlers, function (name, currentHandler) {\n // Handler might be \"removed\" by setting callback to null\n if (!currentHandler) {\n return true;\n }\n\n if (currentHandler.test && !currentHandler.test(target, instance)) {\n return true;\n }\n\n content = currentHandler(target, instance);\n\n if (false !== content) {\n handler = name;\n return false;\n }\n });\n }\n\n return {\n handler: handler,\n content: content || ''\n };\n }\n\n function Lity(target, options, opener, activeElement) {\n var self = this;\n var result;\n var isReady = false;\n var isClosed = false;\n var element;\n var content;\n options = $.extend({}, _defaultOptions, options);\n element = $(options.template); // -- API --\n\n self.element = function () {\n return element;\n };\n\n self.opener = function () {\n return opener;\n };\n\n self.options = $.proxy(settings, self, options);\n self.handlers = $.proxy(settings, self, options.handlers);\n\n self.resize = function () {\n if (!isReady || isClosed) {\n return;\n }\n\n content.css('max-height', winHeight() + 'px').trigger('lity:resize', [self]);\n };\n\n self.close = function () {\n if (!isReady || isClosed) {\n return;\n }\n\n isClosed = true;\n removeInstance(self);\n\n var deferred = _deferred(); // We return focus only if the current focus is inside this instance\n\n\n if (activeElement && (document.activeElement === element[0] || $.contains(element[0], document.activeElement))) {\n try {\n activeElement.focus();\n } catch (e) {// Ignore exceptions, eg. for SVG elements which can't be\n // focused in IE11\n }\n }\n\n content.trigger('lity:close', [self]);\n element.removeClass('lity-opened').addClass('lity-closed');\n transitionEnd(content.add(element)).always(function () {\n content.trigger('lity:remove', [self]);\n element.remove();\n element = undefined;\n deferred.resolve();\n });\n return deferred.promise();\n }; // -- Initialization --\n\n\n result = factory(target, self, options.handlers, options.handler);\n element.attr(_attrAriaHidden, 'false').addClass('lity-loading lity-opened lity-' + result.handler).appendTo('body').focus().on('click', '[data-lity-close]', function (e) {\n if ($(e.target).is('[data-lity-close]')) {\n self.close();\n }\n }).trigger('lity:open', [self]);\n registerInstance(self);\n $.when(result.content).always(ready);\n\n function ready(result) {\n content = $(result).css('max-height', winHeight() + 'px');\n element.find('.lity-loader').each(function () {\n var loader = $(this);\n transitionEnd(loader).always(function () {\n loader.remove();\n });\n });\n element.removeClass('lity-loading').find('.lity-content').empty().append(content);\n isReady = true;\n content.trigger('lity:ready', [self]);\n }\n }\n\n function lity(target, options, opener) {\n if (!target.preventDefault) {\n opener = $(opener);\n } else {\n target.preventDefault();\n opener = $(this);\n target = opener.data('lity-target') || opener.attr('href') || opener.attr('src');\n }\n\n var instance = new Lity(target, $.extend({}, opener.data('lity-options') || opener.data('lity'), options), opener, document.activeElement);\n\n if (!target.preventDefault) {\n return instance;\n }\n }\n\n lity.version = '2.4.1';\n lity.options = $.proxy(settings, lity, _defaultOptions);\n lity.handlers = $.proxy(settings, lity, _defaultOptions.handlers);\n lity.current = currentInstance;\n $(document).on('click.lity', '[data-lity]', lity);\n return lity;\n});","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar Nt = Object.defineProperty;\n\nvar Ht = function Ht(n, t, e) {\n return t in n ? Nt(n, t, {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: e\n }) : n[t] = e;\n};\n\nvar O = function O(n, t, e) {\n return Ht(n, _typeof(t) != \"symbol\" ? t + \"\" : t, e), e;\n},\n Zt = function Zt(n, t, e) {\n if (!t.has(n)) throw TypeError(\"Cannot \" + e);\n};\n\nvar E = function E(n, t, e) {\n if (t.has(n)) throw TypeError(\"Cannot add the same private member more than once\");\n t instanceof WeakSet ? t.add(n) : t.set(n, e);\n};\n\nvar S = function S(n, t, e) {\n return Zt(n, t, \"access private method\"), e;\n};\n\nvar et = function et(n) {\n return document.contains(H(n));\n},\n bt = function bt(n) {\n if (!n) return !1;\n\n try {\n var t = n.constructor,\n e = t.prototype,\n s = Object.prototype.hasOwnProperty;\n return t && e && s.call(e, \"isPrototypeOf\");\n } catch (_unused) {\n return !1;\n }\n},\n gt = function gt(n) {\n return typeof n == \"function\";\n},\n $ = function $(n) {\n return !isNaN(Number(n));\n},\n st = function st(n) {\n return n == null;\n},\n H = function H(n) {\n return n instanceof HTMLElement ? n : document.querySelector(n);\n},\n w = function w(n) {\n var t = \"touches\" in n ? n.touches[0] : n;\n return {\n clientX: t.clientX,\n clientY: t.clientY\n };\n},\n C = function C(n) {\n return {\n clientX: _toConsumableArray(n).map(function (t) {\n return t.clientX;\n }).reduce(function (t, e) {\n return t + e;\n }) / n.length,\n clientY: _toConsumableArray(n).map(function (t) {\n return t.clientY;\n }).reduce(function (t, e) {\n return t + e;\n }) / n.length\n };\n},\n Y = function Y(n) {\n var _n$getBoundingClientR = n.getBoundingClientRect(),\n t = _n$getBoundingClientR.width,\n e = _n$getBoundingClientR.height,\n s = _n$getBoundingClientR.top,\n i = _n$getBoundingClientR.left,\n c = _n$getBoundingClientR.bottom;\n\n return {\n width: t,\n height: e,\n top: s,\n left: i,\n bottom: c\n };\n},\n _t = function _t(n) {\n return n.length >= 2 ? Math.hypot(n[0].clientX - n[1].clientX, n[0].clientY - n[1].clientY) : 0;\n},\n L = function L(n, t) {\n for (var _i2 = 0, _Object$entries = Object.entries(t); _i2 < _Object$entries.length; _i2++) {\n var _ref3 = _Object$entries[_i2];\n\n var _ref2 = _slicedToArray(_ref3, 2);\n\n var e = _ref2[0];\n var s = _ref2[1];\n typeof s == \"string\" && n.style.setProperty(e, s);\n }\n},\n A = function A(n, t) {\n for (var _i3 = 0, _Object$entries2 = Object.entries(t); _i3 < _Object$entries2.length; _i3++) {\n var _ref6 = _Object$entries2[_i3];\n\n var _ref5 = _slicedToArray(_ref6, 2);\n\n var e = _ref5[0];\n var s = _ref5[1];\n n.setAttribute(e, s);\n }\n},\n v = function v(n, t) {\n for (var _i4 = 0, _Object$entries3 = Object.entries(t); _i4 < _Object$entries3.length; _i4++) {\n var _ref9 = _Object$entries3[_i4];\n\n var _ref8 = _slicedToArray(_ref9, 2);\n\n var e = _ref8[0];\n var s = _ref8[1];\n n[e] = s;\n }\n},\n X = function X(n, t, e) {\n return Math.min(Math.max(n, t), e);\n},\n R = function R(n) {\n var t = +(Math.round(+(n + \"e+2\")) + \"e-2\");\n return isNaN(t) ? 0 : t;\n},\n pt = function pt(n) {\n throw new Error(n);\n},\n nt = function nt(n) {\n return console.warn(n);\n},\n y = function y() {\n var _i$classList;\n\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"div\";\n var t = arguments.length > 1 ? arguments[1] : undefined;\n var e = arguments.length > 2 ? arguments[2] : undefined;\n var s = arguments.length > 3 ? arguments[3] : undefined;\n var i = document.createElement(n);\n return t && (_i$classList = i.classList).add.apply(_i$classList, _toConsumableArray(t.split(\" \"))), e && A(i, e), s && (i.innerHTML = s), i;\n},\n _ = \"zoomist\",\n Vt = \"\".concat(_, \"-container\"),\n Et = \"\".concat(_, \"-wrapper\"),\n it = \"\".concat(_, \"-image\"),\n I = \"\".concat(_, \"-slider\"),\n Wt = \"\".concat(_, \"-slider-wrapper\"),\n Ut = \"\".concat(_, \"-slider-bar\"),\n Bt = \"\".concat(_, \"-slider-button\"),\n Z = \"\".concat(_, \"-zoomer\"),\n kt = \"\".concat(_, \"-zoomer-button\"),\n lt = \"\".concat(_, \"-zoomer-icon\"),\n ot = \"\".concat(_, \"-zoomer-in\"),\n rt = \"\".concat(_, \"-zoomer-out\"),\n at = \"\".concat(_, \"-zoomer-reset\"),\n jt = \"\".concat(_, \"-zoomer-disabled\"),\n Gt = {\n tabindex: \"0\",\n role: \"slider\",\n \"aria-label\": \"slider for zoomist\",\n \"aria-valuemin\": \"0\",\n \"aria-valuemax\": \"100\",\n \"aria-valuenow\": \"0\",\n \"aria-disabled\": \"false\"\n},\n ct = {\n tabindex: \"0\",\n role: \"button\",\n \"aria-disabled\": \"false\"\n},\n Pt = _objectSpread(_objectSpread({}, ct), {}, {\n \"aria-label\": \"button for zoom in zoomist\"\n}),\n Ft = _objectSpread(_objectSpread({}, ct), {}, {\n \"aria-label\": \"button for zoom out zoomist\"\n}),\n qt = _objectSpread(_objectSpread({}, ct), {}, {\n \"aria-label\": \"button for reset zoomist scale\"\n}),\n Kt = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) < \"u\" && _typeof(window.document) < \"u\",\n z = !!(Kt && \"ontouchstart\" in window),\n Jt = z ? \"touchstart\" : \"mousedown\",\n M = z ? \"touchmove\" : \"mousemove\",\n x = z ? \"touchend\" : \"mouseup\",\n Qt = \"wheel\",\n te = [\"left\", \"right\", \"center\"],\n ee = [\"top\", \"bottom\", \"center\"],\n St = \"--scale\",\n vt = \"--translate-x\",\n Tt = \"--translate-y\",\n se = \"--value\",\n Ot = {\n // set is draggable or not\n draggable: !0,\n // set is wheelable or not\n wheelable: !0,\n // set is pinchable or not\n pinchable: !0,\n // set image stuck on bounds\n bounds: !0,\n // the ratio of zooming at one time\n zoomRatio: 0.1,\n // the max scale of zoomist-image (must be number larger then initScale)\n maxScale: 10,\n // the min scale of zoomist-image (must be number smaller then initScale)\n minScale: 1,\n // set initial scale of zoomist-image\n initScale: null\n},\n ne = {\n // the css selector string or a element of the slider\n el: null,\n // the direction of the slider 'horizontal' or 'vertical'\n direction: \"horizontal\"\n},\n ie = {\n el: \".\".concat(I)\n},\n oe = {\n el: null,\n // the css selector string or a element for in-zoomer\n inEl: null,\n // the css selector string or a element for out-zoomer\n outEl: null,\n // the css selector string or a element for reset-zoomer\n resetEl: null,\n // in zoomer and out zoomer will be disabled when image comes to maximin or minimum\n disabledClass: jt\n},\n re = {\n el: \".\".concat(Z),\n inEl: \".\".concat(ot),\n outEl: \".\".concat(rt),\n resetEl: \".\".concat(at)\n},\n ae = {\n // invoked when zoomist instance ready\n ready: null,\n // invoked when reset methods be used\n reset: null,\n // invoked when image changes it's size\n resize: null,\n // invoked before destroy methods be used\n beforeDestroy: null,\n // invoked after destroy methods be used\n destroy: null,\n // invoked before update methods be used\n beforeUpdate: null,\n // invoked when update methods be used\n update: null,\n // invoked when image is zooming\n zoom: null,\n // invoked when wheeling\n wheel: null,\n // invoked when mousedown on wrapper\n dragStart: null,\n // invoked when dragging the image\n drag: null,\n // invoked when mouseup on wrapper\n dragEnd: null,\n // invoked when mousedown on wrapper\n pinchStart: null,\n // invoked when pinching the image\n pinch: null,\n // invoked when mouseup on wrapper\n pinchEnd: null,\n // invoked when mousedown on slider\n slideStart: null,\n // invoked when sliding the slider\n slide: null,\n // invoked when mouseup on slider\n slideEnd: null\n},\n le = {\n // slider options\n slider: null,\n // zoomer options\n zoomer: null\n},\n ce = \"\\n<svg viewBox=\\\"0 0 12 12\\\" class=\\\"\".concat(lt, \"\\\">\\n <polygon points=\\\"12,5.5 6.5,5.5 6.5,0 5.5,0 5.5,5.5 0,5.5 0,6.5 5.5,6.5 5.5,12 6.5,12 6.5,6.5 12,6.5 \\\"/>\\n</svg>\\n\"),\n he = \"\\n<svg viewBox=\\\"0 0 12 12\\\" class=\\\"\".concat(lt, \"\\\">\\n <rect y=\\\"5.5\\\" width=\\\"12\\\" height=\\\"1\\\"/>\\n</svg>\\n\"),\n de = \"\\n<svg viewBox=\\\"0 0 12 12\\\" class=\\\"\".concat(lt, \"\\\">\\n <path d=\\\"m7.45,1.27l.35-.22c.26-.17.34-.52.17-.78-.17-.27-.52-.34-.78-.17l-1.54.99-.19.13-.11.46,1.12,1.75c.11.17.29.26.48.26.1,0,.21-.03.31-.09.26-.17.34-.52.17-.78l-.29-.46c1.85.5,3.22,2.17,3.22,4.18,0,2.39-1.95,4.34-4.34,4.34S1.66,8.92,1.66,6.52c0-1.15.44-2.23,1.25-3.05.22-.22.22-.58,0-.8-.22-.22-.58-.22-.8,0-1.02,1.03-1.58,2.4-1.58,3.85,0,3.02,2.46,5.48,5.48,5.48s5.48-2.46,5.48-5.48c0-2.51-1.71-4.62-4.02-5.26Z\\\"/>\\n</svg>\\n\"),\n ue = {\n on: function on(n, t) {\n if (!t || !gt(t)) return this;\n var e = this.__events__;\n return n.split(\" \").forEach(function (s) {\n var i = s;\n e[i] || (e[i] = []), e[i].push(t);\n }), this;\n },\n emit: function emit(n) {\n var _this = this;\n\n for (var _len = arguments.length, t = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n t[_key - 1] = arguments[_key];\n }\n\n var e = this.__events__;\n return e[n] ? (e[n].forEach(function (s) {\n gt(s) && s.apply(_this, t);\n }), this) : this;\n },\n zoom: function zoom(n, t) {\n var e = this.transform.scale,\n s = this.useFixedRatio(R(e * (n + 1)));\n return e === s ? this : (this.zoomTo(s, t), this);\n },\n zoomTo: function zoomTo(n) {\n var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !0;\n var e = this.image,\n _this$transform = this.transform,\n s = _this$transform.scale,\n i = _this$transform.translateX,\n c = _this$transform.translateY,\n r = this.options.bounds;\n if (n = this.useFixedRatio(n), n === s) return this;\n if (this.transform.scale = n, !t) return this.emit(\"zoom\", this, this.transform.scale), this;\n t = typeof t == \"boolean\" ? this.getContainerCenterClient() : t;\n\n var _t2 = t,\n l = _t2.clientX,\n o = _t2.clientY,\n _Y = Y(e),\n a = _Y.top,\n d = _Y.left,\n f = _Y.width,\n m = _Y.height,\n _this$getImageDiff = this.getImageDiff(),\n h = _this$getImageDiff.width,\n u = _this$getImageDiff.height,\n g = n / s - 1,\n p = (f / 2 - l + d) * g + i,\n T = (m / 2 - o + a) * g + c,\n b = r ? X(p, h, -h) : p,\n D = r ? X(T, u, -u) : T;\n\n return v(this.transform, {\n translateX: b,\n translateY: D\n }), this.emit(\"zoom\", this, this.transform.scale), this;\n },\n move: function move(n) {\n var t = this.options.bounds,\n _this$transform2 = this.transform,\n e = _this$transform2.translateX,\n s = _this$transform2.translateY,\n i = n.x,\n c = n.y,\n _this$getImageDiff2 = this.getImageDiff(),\n r = _this$getImageDiff2.width,\n l = _this$getImageDiff2.height;\n\n if ($(i)) {\n var o = e + i,\n a = t ? X(o, r, -r) : o;\n this.transform.translateX = a;\n }\n\n if ($(c)) {\n var _o = s + c,\n _a = t ? X(_o, l, -l) : _o;\n\n this.transform.translateY = _a;\n }\n\n return this;\n },\n moveTo: function moveTo(n) {\n var t = this.options.bounds,\n e = n.x,\n s = n.y,\n _this$getImageDiff3 = this.getImageDiff(),\n i = _this$getImageDiff3.width,\n c = _this$getImageDiff3.height;\n\n if ($(e)) {\n var r = Number(e),\n l = t ? X(r, i, -i) : r;\n this.transform.translateX = l;\n }\n\n if (te.some(function (r) {\n return r === e;\n })) {\n var _l = {\n left: -i,\n right: i,\n center: 0\n }[e];\n this.transform.translateX = _l;\n }\n\n if ($(s)) {\n var _r = Number(s),\n _l2 = t ? X(_r, c, -c) : _r;\n\n this.transform.translateY = _l2;\n }\n\n if (ee.some(function (r) {\n return r === s;\n })) {\n var _l3 = {\n top: -c,\n bottom: c,\n center: 0\n }[s];\n this.transform.translateY = _l3;\n }\n\n return this;\n },\n slideTo: function slideTo(n) {\n var _this$options = this.options,\n t = _this$options.minScale,\n e = _this$options.maxScale,\n s = (e - t) * n / 100 + t;\n return this.zoomTo(s), this;\n },\n reset: function reset() {\n var n = this.options.initScale;\n return v(this.transform, {\n scale: n,\n translateX: 0,\n translateY: 0\n }), this.emit(\"reset\", this), this;\n },\n destroy: function destroy() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !1;\n var t = this.element,\n e = this.image,\n s = this.controller;\n return this.mounted && (this.emit(\"beforeDestroy\", this), s.abort(), this.destroyModules(), n && e && (this.reset(), e.removeAttribute(\"style\")), t[_] = null, this.mounted = !1, this.emit(\"destroy\", this)), null;\n },\n update: function update(n) {\n var t = this.element,\n e = this.controller;\n return this.emit(\"beforeUpdate\", this), t[_] = null, this.mounted = !1, e.abort(), this.destroyModules(), n && (this.options = Object.assign({}, Ot, bt(n) && n)), this.init(), this.emit(\"update\", this), this;\n },\n getImageData: function getImageData() {\n return _objectSpread({}, this.data.imageData);\n },\n getContainerData: function getContainerData() {\n return _objectSpread({}, this.data.containerData);\n },\n getSliderValue: function getSliderValue() {\n var n = this.__modules__.slider;\n return n && n.value ? n.value : null;\n },\n // private methods\n getImageDiff: function getImageDiff() {\n var _this$getContainerDat = this.getContainerData(),\n n = _this$getContainerDat.width,\n t = _this$getContainerDat.height,\n _this$getImageData = this.getImageData(),\n e = _this$getImageData.width,\n s = _this$getImageData.height;\n\n return {\n width: (n - e) / 2,\n height: (t - s) / 2\n };\n },\n // private methods\n getContainerCenterClient: function getContainerCenterClient() {\n var n = this.element,\n _Y2 = Y(n),\n t = _Y2.top,\n e = _Y2.left,\n s = _Y2.width,\n i = _Y2.height;\n\n return {\n clientX: e + s / 2,\n clientY: t + i / 2\n };\n },\n // private methods\n getScaleRatio: function getScaleRatio() {\n var n = this.transform.scale,\n _this$options2 = this.options,\n t = _this$options2.minScale,\n e = _this$options2.maxScale;\n return (n - t) / (e - t);\n },\n // private methods\n useFixedRatio: function useFixedRatio(n) {\n var _this$options3 = this.options,\n t = _this$options3.minScale,\n e = _this$options3.maxScale;\n return X(n, t, e);\n }\n},\n N = Object.defineProperty;\n\nvar V, wt, W, Yt, U, Xt, B, zt, k, Rt, j, Dt, G, Lt, P, yt, F, At, q, It, K, $t, J, Ct;\n\nvar me = /*#__PURE__*/function () {\n function me(t, e) {\n _classCallCheck(this, me);\n\n // create initial data\n E(this, V); // mount elements and bind events\n\n E(this, W); // resize, drag, pinch, wheel\n\n E(this, U); // on wheel\n\n E(this, B); // on drag (mouse)\n\n E(this, k); // on touch (pinch and touchmove)\n\n E(this, j); // resize observer on element\n\n E(this, G); // check modules and create\n\n E(this, P); // mount slider\n\n E(this, F); // slider events\n\n E(this, q); // mount zoomer\n\n E(this, K); // zoomer event\n\n E(this, J);\n O(this, \"element\");\n O(this, \"options\");\n O(this, \"wrapper\");\n O(this, \"image\");\n O(this, \"mounted\");\n O(this, \"data\");\n O(this, \"transform\");\n O(this, \"states\");\n O(this, \"controller\");\n O(this, \"__events__\");\n O(this, \"__modules__\");\n t || pt(\"The first argument is required.\"), et(t) || pt(\"Element \".concat(t, \" is not exist.\")), this.element = H(t), this.options = Object.assign({}, Ot, bt(e) && e), this.init();\n } // check zoomist-image is exist\n\n\n _createClass(me, [{\n key: \"init\",\n value: function init() {\n var t = this.element,\n _this$options4 = this.options,\n e = _this$options4.bounds,\n s = _this$options4.minScale,\n i = _this$options4.maxScale,\n c = _this$options4.initScale;\n if (t[_]) return;\n t[_] = this;\n var r = t.querySelector(\".\".concat(Et)),\n l = t.querySelector(\".\".concat(it));\n if (!r) return nt(\"\".concat(_, \" needs a \\\".\").concat(Et, \"\\\" element.\"));\n if (!l) return nt(\"\".concat(_, \" needs a \\\".\").concat(it, \"\\\" element.\"));\n this.options.minScale = e && s < 1 ? 1 : s, this.options.maxScale = Math.max(i, s), this.options.initScale = X(c || s, s, i), this.wrapper = r, this.image = l, S(this, V, wt).call(this);\n } // destory modules\n\n }, {\n key: \"destroyModules\",\n value: function destroyModules() {\n var _this$__modules__ = this.__modules__,\n t = _this$__modules__.slider,\n e = _this$__modules__.zoomer;\n t && this.destroySlider(), e && this.destroyZoomer();\n } // destroy slider\n\n }, {\n key: \"destroySlider\",\n value: function destroySlider() {\n var c, r;\n var t = this.__modules__.slider;\n if (!t || !t.mounted) return;\n var e = t.options.el,\n s = t.controller;\n e === \".\".concat(I) ? (c = t.sliderEl) == null || c.remove() : (r = t.sliderTrack) == null || r.remove(), s == null || s.abort(), t.mounted = !1;\n } // destroy zoomer\n\n }, {\n key: \"destroyZoomer\",\n value: function destroyZoomer() {\n var t = this.__modules__.zoomer;\n if (!t || !t.mounted) return;\n\n var _t$options = t.options,\n e = _t$options.el,\n s = _t$options.inEl,\n i = _t$options.outEl,\n c = _t$options.resetEl,\n r = t.controller,\n l = t.zoomerEl,\n o = t.zoomerInEl,\n a = t.zoomerOutEl,\n d = t.zoomerResetEl,\n f = function f(m, h, u) {\n m === \".\".concat(h) && (u == null || u.remove());\n };\n\n [{\n target: e,\n className: Z,\n el: l\n }, {\n target: s,\n className: ot,\n el: o\n }, {\n target: i,\n className: rt,\n el: a\n }, {\n target: c,\n className: at,\n el: d\n }].forEach(function (m) {\n return f(m.target, m.className, m.el);\n }), r == null || r.abort(), t.mounted = !1;\n }\n }]);\n\n return me;\n}();\n\nV = new WeakSet(), wt = function wt() {\n var t = this.element,\n e = this.image,\n s = this.options,\n i = s.draggable,\n c = s.pinchable,\n r = t.offsetWidth,\n l = t.offsetHeight,\n o = e.offsetWidth,\n a = e.offsetHeight,\n _Y3 = Y(e),\n d = _Y3.width,\n f = _Y3.height;\n\n if (!o || !a) return nt(\"The width or height of \".concat(it, \" should not be 0.\"));\n if (this.transform = {\n scale: 0,\n translateX: 0,\n translateY: 0\n }, this.data = {\n imageData: {\n originWidth: o,\n originHeight: a,\n width: d,\n height: f\n },\n containerData: {\n width: r,\n height: l\n }\n }, z && (i || c) && (this.data.touchData = {\n hypot: 0,\n startX: 0,\n startY: 0,\n prevX: 0,\n prevY: 0,\n imageTop: 0,\n imageLeft: 0,\n widthDiff: 0,\n heightDiff: 0\n }), !z && i && (this.data.dragData = {\n startX: 0,\n startY: 0\n }), this.__events__ = _objectSpread({}, ae), s.on) for (var _i5 = 0, _Object$entries4 = Object.entries(s.on); _i5 < _Object$entries4.length; _i5++) {\n var _ref12 = _Object$entries4[_i5];\n\n var _ref11 = _slicedToArray(_ref12, 2);\n\n var m = _ref11[0];\n var h = _ref11[1];\n this.__events__[m] = [h];\n }\n\n if (this.__modules__ = _objectSpread({}, le), s.slider) {\n var _m = s.slider === !0 ? ie : s.slider;\n\n this.__modules__.slider = {\n options: Object.assign({}, ne, _m)\n };\n }\n\n if (s.zoomer) {\n var _m2 = s.zoomer === !0 ? re : s.zoomer;\n\n this.__modules__.zoomer = {\n options: Object.assign({}, oe, _m2)\n };\n }\n\n this.controller = new AbortController(), S(this, W, Yt).call(this);\n}, W = new WeakSet(), Yt = function Yt() {\n if (this.mounted) return;\n var t = this.element,\n e = this.image,\n _this$options5 = this.options,\n s = _this$options5.minScale,\n i = _this$options5.maxScale,\n c = _this$options5.initScale,\n _this$__modules__2 = this.__modules__,\n r = _this$__modules__2.slider,\n l = _this$__modules__2.zoomer,\n o = this;\n L(e, {\n transform: \"\\n translate(var(\".concat(vt, \", 0px), var(\").concat(Tt, \", 0px))\\n scale(var(\").concat(St, \", 0))\")\n }), N(this.transform, \"scale\", {\n get: function get() {\n return o.transform.__scale__;\n },\n set: function set(a) {\n var d = o.useFixedRatio(a);\n\n if (!(st(d) || o.transform.__scale__ === d)) {\n if (o.transform.__scale__ = d, L(e, _defineProperty({}, St, d.toString())), v(o.data.imageData, {\n width: Y(e).width,\n height: Y(e).height\n }), r) {\n var f = Math.round(o.getScaleRatio() * 100);\n r.value = f;\n }\n\n if (l && l.options.disabledClass) {\n var _f = l.zoomerInEl,\n m = l.zoomerOutEl,\n h = l.zoomerResetEl,\n u = l.options.disabledClass;\n _f && (_f.classList[d === i ? \"add\" : \"remove\"](u), A(_f, {\n \"aria-disabled\": d === i ? \"true\" : \"false\"\n })), m && (m.classList[d === s ? \"add\" : \"remove\"](u), A(m, {\n \"aria-disabled\": d === s ? \"true\" : \"false\"\n })), h && (h.classList[d === c ? \"add\" : \"remove\"](u), A(h, {\n \"aria-disabled\": d === c ? \"true\" : \"false\"\n }));\n }\n }\n }\n }), N(this.transform, \"translateX\", {\n get: function get() {\n return o.transform.__translateX__;\n },\n set: function set(a) {\n var d = R(a);\n st(d) || o.transform.__translateX__ === d || (o.transform.__translateX__ = d, L(e, _defineProperty({}, vt, \"\".concat(d, \"px\"))));\n }\n }), N(this.transform, \"translateY\", {\n get: function get() {\n return o.transform.__translateY__;\n },\n set: function set(a) {\n var d = R(a);\n st(d) || o.transform.__translateY__ === d || (o.transform.__translateY__ = d, L(e, _defineProperty({}, Tt, \"\".concat(d, \"px\"))));\n }\n }), S(this, U, Xt).call(this), S(this, P, yt).call(this), v(this.transform, {\n scale: c,\n translateX: 0,\n translateY: 0\n }), t.classList.add(Vt), this.mounted = !0, this.emit(\"ready\", this);\n}, U = new WeakSet(), Xt = function Xt() {\n var _this2 = this;\n\n var t = this.wrapper,\n e = this.options,\n s = this.controller.signal,\n i = e.draggable,\n c = e.pinchable,\n r = e.wheelable;\n\n if (this.states = {}, r) {\n this.states.wheeling = !1;\n\n var l = function l(o) {\n return S(_this2, B, zt).call(_this2, o);\n };\n\n t.addEventListener(Qt, l, {\n signal: s\n });\n }\n\n if (z && (i || c)) {\n i && (this.states.dragging = !1), c && (this.states.pinching = !1);\n\n var _l4 = function _l4(o) {\n return S(_this2, j, Dt).call(_this2, o);\n };\n\n t.addEventListener(\"touchstart\", _l4, {\n signal: s\n });\n }\n\n if (!z && i) {\n this.states.dragging = !1;\n\n var _l5 = function _l5(o) {\n return S(_this2, k, Rt).call(_this2, o);\n };\n\n t.addEventListener(\"mousedown\", _l5, {\n signal: s\n });\n }\n\n S(this, G, Lt).call(this);\n}, B = new WeakSet(), zt = function zt(t) {\n var _this3 = this;\n\n var e = this.options,\n s = e.zoomRatio;\n if (t.preventDefault(), this.states.wheeling) return;\n this.states.wheeling = !0, setTimeout(function () {\n _this3.states.wheeling = !1;\n }, 30);\n var i = (t.deltaY || t.detail) > 0 ? -1 : 1;\n this.zoom(i * s, w(t)), this.emit(\"wheel\", this, this.transform.scale, t);\n}, k = new WeakSet(), Rt = function Rt(t) {\n var _this4 = this;\n\n var e = this.data,\n s = this.transform,\n i = e.dragData,\n c = e.imageData;\n if (!i || !c) return;\n\n var r = function r(a) {\n a && a.button !== 0 || (v(i, {\n startX: w(a).clientX,\n startY: w(a).clientY\n }), _this4.states.dragging = !0, _this4.emit(\"dragStart\", _this4, {\n x: s.translateX,\n y: s.translateY\n }, a), document.addEventListener(M, l), document.addEventListener(x, o));\n },\n l = function l(a) {\n if (a.touches || !_this4.states.dragging) return;\n var d = w(a).clientX,\n f = w(a).clientY,\n m = d - i.startX + s.translateX,\n h = f - i.startY + s.translateY;\n _this4.moveTo({\n x: m,\n y: h\n }), v(i, {\n startX: w(a).clientX,\n startY: w(a).clientY\n }), _this4.emit(\"drag\", _this4, {\n x: m,\n y: h\n }, a);\n },\n o = function o(a) {\n a.touches || (_this4.states.dragging = !1, _this4.emit(\"dragEnd\", _this4, {\n x: s.translateX,\n y: s.translateY\n }, a), document.removeEventListener(M, l), document.removeEventListener(x, o));\n };\n\n r(t);\n}, j = new WeakSet(), Dt = function Dt(t) {\n var _this5 = this;\n\n var e = this.data,\n s = this.transform,\n _this$options6 = this.options,\n i = _this$options6.maxScale,\n c = _this$options6.minScale,\n r = _this$options6.draggable,\n l = _this$options6.pinchable,\n o = e.touchData,\n a = e.imageData;\n if (!o || !a) return;\n\n var d = function d(h) {\n var u = h.touches;\n if (!u) return;\n\n var _Y4 = Y(_this5.image),\n g = _Y4.top,\n p = _Y4.left,\n _this5$getImageDiff = _this5.getImageDiff(),\n T = _this5$getImageDiff.width,\n b = _this5$getImageDiff.height;\n\n v(o, {\n hypot: _t(u),\n startX: C(u).clientX,\n startY: C(u).clientY,\n prevX: 0,\n prevY: 0,\n imageTop: g,\n imageLeft: p,\n widthDiff: T,\n heightDiff: b\n }), r && (_this5.states.dragging = !0, _this5.emit(\"dragStart\", _this5, {\n x: s.translateX,\n y: s.translateY\n }, h)), l && u.length === 2 && (_this5.states.pinching = !0, _this5.emit(\"pinchStart\", _this5, s.scale, h)), document.addEventListener(\"touchmove\", f), document.addEventListener(\"touchend\", m);\n },\n f = function f(h) {\n var u = h.touches;\n if (!u) return;\n\n var _this5$states = _this5.states,\n g = _this5$states.dragging,\n p = _this5$states.pinching,\n _Y5 = Y(_this5.image),\n T = _Y5.top,\n b = _Y5.left,\n _this5$getImageDiff2 = _this5.getImageDiff(),\n D = _this5$getImageDiff2.width,\n ht = _this5$getImageDiff2.height,\n Q = _t(u),\n dt = Q ? Q / o.hypot : 1,\n tt = _this5.useFixedRatio(dt * s.scale),\n ut = C(u).clientX + o.prevX,\n mt = C(u).clientY + o.prevY;\n\n if (p && u.length === 2 && _this5.zoomTo(tt, !1), g) {\n var ft = tt !== i && tt !== c && l ? dt : 1,\n Mt = R(ut - o.imageLeft - (D - o.widthDiff) - (o.startX - o.imageLeft) * ft + s.translateX),\n xt = R(mt - o.imageTop - (ht - o.heightDiff) - (o.startY - o.imageTop) * ft + s.translateY);\n\n _this5.moveTo({\n x: Mt,\n y: xt\n });\n }\n\n v(o, {\n hypot: Q,\n startX: ut,\n startY: mt,\n imageTop: T,\n imageLeft: b,\n widthDiff: D,\n heightDiff: ht\n }), p && u.length === 2 && _this5.emit(\"pinch\", _this5, s.scale, h), g && _this5.emit(\"drag\", _this5, {\n x: s.translateX,\n y: s.translateY\n }, h);\n },\n m = function m(h) {\n var u = h.touches;\n if (!u) return;\n var _this5$states2 = _this5.states,\n g = _this5$states2.dragging,\n p = _this5$states2.pinching;\n\n if (g && !u.length && (_this5.states.dragging = !1, _this5.emit(\"dragEnd\", _this5, {\n x: s.translateX,\n y: s.translateY\n }, h)), p && u.length < 2 && (_this5.states.pinching = !1, _this5.emit(\"pinchEnd\", _this5, s.scale, h)), g && u.length === 1) {\n var T = w(h).clientX,\n b = w(h).clientY;\n v(o, {\n prevX: o.startX - T,\n prevY: o.startY - b\n });\n }\n\n u.length || (document.removeEventListener(\"touchmove\", f), document.removeEventListener(\"touchend\", m));\n };\n\n d(t);\n}, G = new WeakSet(), Lt = function Lt() {\n var _this6 = this;\n\n var t = this.element,\n e = this.image,\n s = this.transform;\n new ResizeObserver(function () {\n var c = t.offsetWidth,\n r = t.offsetHeight,\n _this6$getContainerDa = _this6.getContainerData(),\n l = _this6$getContainerDa.width,\n o = _this6$getContainerDa.height;\n\n if (c === l && r === o) return;\n var a = s.translateX,\n d = s.translateY;\n\n if (a) {\n var g = c / l * a;\n _this6.transform.translateX = g;\n }\n\n if (d) {\n var _g = r / o * d;\n\n _this6.transform.translateY = _g;\n }\n\n var f = e.offsetWidth,\n m = e.offsetHeight,\n _Y6 = Y(e),\n h = _Y6.width,\n u = _Y6.height;\n\n v(_this6.data.containerData, {\n width: c,\n height: r\n }), v(_this6.data.imageData, {\n originWidth: f,\n originHeight: m,\n width: h,\n height: u\n }), _this6.emit(\"resize\", _this6);\n }).observe(t);\n}, P = new WeakSet(), yt = function yt() {\n var _this$__modules__3 = this.__modules__,\n t = _this$__modules__3.slider,\n e = _this$__modules__3.zoomer;\n t && S(this, F, At).call(this), e && S(this, K, $t).call(this);\n}, F = new WeakSet(), At = function At() {\n var t = this.element,\n e = this.__modules__.slider;\n if (!e || e.mounted) return;\n var _e$options = e.options,\n s = _e$options.el,\n i = _e$options.direction,\n c = s === \".\".concat(I);\n if (!s || !c && !et(s)) return;\n var r = c ? y(\"div\", I) : H(s),\n l = y(\"div\", Wt),\n o = y(\"span\", Ut),\n a = y(\"span\", Bt, _objectSpread(_objectSpread({}, Gt), {}, {\n \"aria-orientation\": i\n }));\n r.classList.add(\"\".concat(I, \"-\").concat(i)), N(e, \"value\", {\n get: function get() {\n return e.__value__;\n },\n set: function set(d) {\n e.__value__ !== d && (e.__value__ = d, L(r, _defineProperty({}, se, d.toString())), A(a, {\n \"aria-valuenow\": d.toString()\n }));\n }\n }), v(e, {\n value: this.getScaleRatio() * 100,\n controller: new AbortController(),\n sliding: !1,\n sliderEl: r,\n sliderTrack: l,\n sliderButton: a\n }), S(this, q, It).call(this), l.append(o, a), r.append(l), c && t.append(r), e.mounted = !0;\n}, q = new WeakSet(), It = function It() {\n var _this7 = this;\n\n var _this$options7 = this.options,\n t = _this$options7.minScale,\n e = _this$options7.maxScale,\n s = this.__modules__.slider;\n if (!s) return;\n var i = s.options.direction,\n c = s.controller,\n r = s.sliderEl,\n l = s.sliderTrack;\n if (!r || !l) return;\n\n var o = i === \"vertical\",\n a = function a(h) {\n var u = Y(l),\n g = u[o ? \"height\" : \"width\"],\n p = u[o ? \"bottom\" : \"left\"],\n T = w(h)[o ? \"clientY\" : \"clientX\"],\n b = R(X((T - p) * (o ? -1 : 1) / g, 0, 1));\n return (e - t) * b + t;\n },\n d = function d(h) {\n if (h instanceof MouseEvent && h.button !== 0) return;\n s.sliding = !0;\n var u = a(h);\n _this7.zoomTo(u), _this7.emit(\"slideStart\", _this7, _this7.getSliderValue(), h), document.addEventListener(M, f), document.addEventListener(x, m);\n },\n f = function f(h) {\n if (!s.sliding) return;\n var u = a(h);\n _this7.zoomTo(u), _this7.emit(\"slide\", _this7, _this7.getSliderValue(), h);\n },\n m = function m(h) {\n _this7.emit(\"slideEnd\", _this7, _this7.getSliderValue(), h), s.sliding = !1, document.removeEventListener(M, f), document.removeEventListener(x, m);\n };\n\n r.addEventListener(Jt, d, {\n signal: c == null ? void 0 : c.signal\n });\n}, K = new WeakSet(), $t = function $t() {\n var t = this.element,\n e = this.__modules__.zoomer;\n if (!e || e.mounted) return;\n\n var _e$options2 = e.options,\n s = _e$options2.el,\n i = _e$options2.inEl,\n c = _e$options2.outEl,\n r = _e$options2.resetEl,\n l = [i, c, r],\n o = function o(h, u, g, p, T) {\n var b = h === \".\".concat(g);\n return !h || !b && !et(h) ? null : (g = l.includes(h) ? \"\".concat(g, \" \").concat(kt) : g, b ? y(u, g, p, T) : H(h));\n },\n a = o(s, \"div\", Z),\n d = o(i, \"button\", ot, Pt, ce),\n f = o(c, \"button\", rt, Ft, he),\n m = o(r, \"button\", at, qt, de);\n\n v(e, {\n controller: new AbortController(),\n zoomerEl: a,\n zoomerInEl: d,\n zoomerOutEl: f,\n zoomerResetEl: m\n }), a && (d && a.append(d), f && a.append(f), m && a.append(m), s === \".\".concat(Z) && t.append(a)), S(this, J, Ct).call(this), e.mounted = !0;\n}, J = new WeakSet(), Ct = function Ct() {\n var t = this.options.zoomRatio,\n e = this.__modules__.zoomer,\n s = this;\n if (!e) return;\n var i = e.controller,\n c = e.zoomerInEl,\n r = e.zoomerOutEl,\n l = e.zoomerResetEl;\n c && c.addEventListener(\"click\", function () {\n s.zoom(t);\n }, {\n signal: i == null ? void 0 : i.signal\n }), r && r.addEventListener(\"click\", function () {\n s.zoom(-t);\n }, {\n signal: i == null ? void 0 : i.signal\n }), l && l.addEventListener(\"click\", function () {\n s.reset();\n }, {\n signal: i == null ? void 0 : i.signal\n });\n};\nObject.assign(me.prototype, ue);\nexport { me as default };","import Lity from \"lity\";\nimport Zoomist from \"zoomist\";\n\nexport default class ImageZoomer {\n setGeneralEvent(rootElement = document) {\n this._setEvent(\"[data-lightbox]\", \"href\", rootElement);\n }\n\n setCKEditorEvent(rootElement = document) {\n if (!rootElement) return;\n\n // リンクãŒè¨å®šã•ã‚Œã¦ã„ãªã„ç”»åƒã®ã¿ãŒå¯¾è±¡\n this._setEvent(\":not(a) > img\", \"src\", rootElement);\n this._setEvent(\"a[href=''] > img\", \"src\", rootElement);\n }\n\n _setEvent(selectors, image_path_attribute, rootElement) {\n const template = `\n <div class=\"lity\" role=\"dialog\" aria-label=\"Dialog Window (Press escape to close)\" tabindex=\"-1\">\n <div class=\"lity-wrap\" data-lity-close role=\"document\">\n <div class=\"lity-loader\" aria-hidden=\"true\">Loading...</div>\n <div class=\"lity-container\">\n <div class=\"zoomist-container\">\n <!-- zoomist-wrapper is required -->\n <div class=\"zoomist-wrapper\">\n <!-- zoomist-image is required -->\n <div class=\"zoomist-image lity-content\">\n <!-- you can add anything you want to zoom here. -->\n </div>\n </div>\n </div>\n <button class=\"lity-close\" type=\"button\" aria-label=\"Close (Press escape to close)\" data-lity-close>×</button>\n </div>\n </div>\n </div>\n `;\n\n rootElement.querySelectorAll(selectors).forEach((element) => {\n // CKEditorã§åŸ‹ã‚込んã ç”»åƒ(imgã‚¿ã‚°)ãŒã‚¯ãƒªãƒƒã‚«ãƒ–ルã§ã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚‹ã‚ˆã†ã‚«ãƒ¼ã‚½ãƒ«å¤‰æ›´\n element.style.cursor = \"pointer\";\n\n element.addEventListener('click', (e) => {\n e.preventDefault();\n\n const instance = Lity(\n element.getAttribute(image_path_attribute),\n { template },\n 'click'\n );\n instance.element().on('lity:ready', (event) => {\n new Zoomist(event.currentTarget.querySelector('.zoomist-container'), {\n maxScale: 5,\n slider: true,\n zoomer: true,\n });\n });\n });\n });\n }\n}\n","class Timeline {\n constructor(url) {\n if (url) {\n $.ajax({\n type: 'GET',\n url: url,\n dataType: 'json'\n }).fail((e) => {\n console.error(e);\n });\n }\n }\n}\n\nexport { Timeline };\n","export default class CommentForm {\n constructor(selector) {\n this.initiators = document.querySelectorAll(selector);\n if (!this.initiators) {\n return;\n }\n\n this.getFormElements()?.forEach((form) => {\n const submitButton = this.getSubmitButton(form);\n const fileInput = this.getFileInput(form);\n const textarea = this.getTextarea(form);\n\n if ([submitButton, fileInput, textarea].some((element) => element === null)) {\n return;\n }\n\n form.addEventListener('submit', () => {\n const attachmentItems = this.setAttachmentItems(form);\n const attachmentDeleteButtons = this.setAttachmentDeleteButtons(attachmentItems);\n\n textarea.readOnly = true;\n\n [\n submitButton,\n fileInput,\n ...attachmentDeleteButtons.map((button) => button)\n ].forEach((element) => element.addEventListener('click', this.disableClick));\n });\n });\n }\n\n getFormElements() {\n return [...this.initiators].map((element) => element.querySelector('form'));\n }\n\n getSubmitButton(form) {\n return form?.querySelector('[type=submit]');\n }\n\n getFileInput(form) {\n return form?.querySelector('[type=file]');\n }\n\n getTextarea(form) {\n return form?.querySelector('textarea');\n }\n\n setAttachmentContainers(form) {\n return [...form.querySelectorAll('[data-attachment-item-list]')];\n }\n\n setAttachmentItems(form) {\n return [...form.querySelectorAll('[data-attachment-name]')];\n }\n\n setAttachmentDeleteButtons(attachmentItems) {\n return attachmentItems?.length\n ? attachmentItems.map((item) => item.querySelector('[type=button]'))\n : [];\n }\n\n disableClick(e) {\n e.preventDefault();\n }\n\n releaseDisable() {\n this.getFormElements()?.forEach((form) => {\n const textarea = this.getTextarea(form);\n textarea.readOnly = false;\n\n [\n this.getSubmitButton(form),\n this.getFileInput(form),\n ].forEach((element) => element.removeEventListener('click', this.disableClick));\n });\n }\n\n resetForm() {\n this.getFormElements()?.forEach((form) => {\n const textarea = this.getTextarea(form);\n const fileInput = this.getFileInput(form);\n const attachmentItems = this.setAttachmentItems(form);\n const attachmentContainers = this.setAttachmentContainers(form);\n\n textarea.value = '';\n fileInput.value = '';\n textarea.dispatchEvent(new Event('change'));\n fileInput.dispatchEvent(new Event('change'));\n\n attachmentItems.forEach((item) => {\n item.remove();\n });\n\n attachmentContainers.forEach((container) => {\n container.ariaHidden = true;\n });\n });\n\n return this;\n }\n}\n\nexport {\n CommentForm\n};\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n/** Error message constants. */\n\n\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;","var root = require('./_root');\n/** Built-in value references. */\n\n\nvar _Symbol = root.Symbol;\nmodule.exports = _Symbol;","/**!\n * Sortable 1.15.0\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent; // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = require('./_freeGlobal');\n/** Detect free variable `self`. */\n\n\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\nmodule.exports = root;","var _n = function n() {\n return _n = Object.assign || function (n) {\n for (var t, i = 1, e = arguments.length; i < e; i++) {\n for (var r in t = arguments[i]) {\n Object.prototype.hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n }\n\n return n;\n }, _n.apply(this, arguments);\n};\n\nfunction t(n, t, i) {\n if (i || 2 === arguments.length) for (var e, r = 0, a = t.length; r < a; r++) {\n !e && r in t || (e || (e = Array.prototype.slice.call(t, 0, r)), e[r] = t[r]);\n }\n return n.concat(e || Array.prototype.slice.call(t));\n}\n\nfunction i(n) {\n return Array.prototype.slice.call(n);\n}\n\nfunction e() {\n return Date.now();\n}\n\nfunction r(n, t, i) {\n if (t = \"data-keen-slider-\" + t, null === i) return n.removeAttribute(t);\n n.setAttribute(t, i || \"\");\n}\n\nfunction a(n, t) {\n return t = t || document, \"function\" == typeof n && (n = n(t)), Array.isArray(n) ? n : \"string\" == typeof n ? i(t.querySelectorAll(n)) : n instanceof HTMLElement ? [n] : n instanceof NodeList ? i(n) : [];\n}\n\nfunction o(n) {\n n.raw && (n = n.raw), n.cancelable && !n.defaultPrevented && n.preventDefault();\n}\n\nfunction u(n) {\n n.raw && (n = n.raw), n.stopPropagation && n.stopPropagation();\n}\n\nfunction s() {\n var n = [];\n return {\n add: function add(t, i, e, r) {\n t.addListener ? t.addListener(e) : t.addEventListener(i, e, r), n.push([t, i, e, r]);\n },\n input: function input(n, t, i, e) {\n this.add(n, t, function (n) {\n return function (t) {\n t.nativeEvent && (t = t.nativeEvent);\n var i = t.changedTouches || [],\n e = t.targetTouches || [],\n r = t.detail && t.detail.x ? t.detail : null;\n return n({\n id: r ? r.identifier ? r.identifier : \"i\" : e[0] ? e[0] ? e[0].identifier : \"e\" : \"d\",\n idChanged: r ? r.identifier ? r.identifier : \"i\" : i[0] ? i[0] ? i[0].identifier : \"e\" : \"d\",\n raw: t,\n x: r && r.x ? r.x : e[0] ? e[0].screenX : r ? r.x : t.pageX,\n y: r && r.y ? r.y : e[0] ? e[0].screenY : r ? r.y : t.pageY\n });\n };\n }(i), e);\n },\n purge: function purge() {\n n.forEach(function (n) {\n n[0].removeListener ? n[0].removeListener(n[2]) : n[0].removeEventListener(n[1], n[2], n[3]);\n }), n = [];\n }\n };\n}\n\nfunction c(n, t, i) {\n return Math.min(Math.max(n, t), i);\n}\n\nfunction d(n) {\n return (n > 0 ? 1 : 0) - (n < 0 ? 1 : 0) || +n;\n}\n\nfunction l(n) {\n return n.getBoundingClientRect();\n}\n\nfunction f(n, t, i, e) {\n var r = n && n[t];\n return null == r ? i : e && \"function\" == typeof r ? r() : r;\n}\n\nfunction p(n) {\n return Math.round(1e6 * n) / 1e6;\n}\n\nfunction v(n) {\n var t, i, e, r, a, o;\n\n function u(t) {\n o || (o = t), s(!0);\n var a = t - o;\n a > e && (a = e);\n var l = r[i];\n if (l[3] < a) return i++, u(t);\n var f = l[2],\n p = l[4],\n v = l[0],\n m = l[1] * (0, l[5])(0 === p ? 1 : (a - f) / p);\n if (m && n.track.to(v + m), a < e) return d();\n o = null, s(!1), c(null), n.emit(\"animationEnded\");\n }\n\n function s(n) {\n t.active = n;\n }\n\n function c(n) {\n t.targetIdx = n;\n }\n\n function d() {\n var n;\n n = u, a = window.requestAnimationFrame(n);\n }\n\n function l() {\n var t;\n t = a, window.cancelAnimationFrame(t), s(!1), c(null), o && n.emit(\"animationStopped\"), o = null;\n }\n\n return t = {\n active: !1,\n start: function start(t) {\n if (l(), n.track.details) {\n var a = 0,\n o = n.track.details.position;\n i = 0, e = 0, r = t.map(function (n) {\n var t,\n i = o,\n r = null !== (t = n.earlyExit) && void 0 !== t ? t : n.duration,\n u = n.easing,\n s = n.distance * u(r / n.duration) || 0;\n o += s;\n var c = e;\n return e += r, a += s, [i, n.distance, c, e, n.duration, u];\n }), c(n.track.distToIdx(a)), d(), n.emit(\"animationStarted\");\n }\n },\n stop: l,\n targetIdx: null\n };\n}\n\nfunction m(n) {\n var i,\n r,\n a,\n o,\n u,\n s,\n l,\n v,\n m,\n h,\n g,\n b,\n x,\n y = 1 / 0,\n k = [],\n w = null,\n M = 0;\n\n function T(n) {\n _(M + n);\n }\n\n function C(n) {\n var t = E(M + n).abs;\n return A(t) ? t : null;\n }\n\n function E(n) {\n var i = Math.floor(Math.abs(n / r)),\n e = (n % r + r) % r,\n a = d(n),\n o = l.indexOf(t([], l, !0).reduce(function (n, t) {\n return Math.abs(t - e) < Math.abs(n - e) ? t : n;\n })),\n u = o;\n return a < 0 && 0 !== e && i++, o === s && (u = 0, i += a > 0 ? 1 : -1), {\n abs: u + i * s * a,\n origin: o,\n rel: u\n };\n }\n\n function z(n, t, i) {\n var e;\n if (t || !L()) return I(n, i);\n if (!A(n)) return null;\n var r = E(null != i ? i : M),\n a = r.abs,\n o = n - r.rel,\n u = a + o;\n e = I(u);\n var c = I(u - s * Math.sign(o));\n return (null !== c && Math.abs(c) < Math.abs(e) || null === e) && (e = c), p(e);\n }\n\n function I(n, t) {\n if (null == t && (t = p(M)), !A(n) || null === n) return null;\n n = Math.round(n);\n var i = E(t),\n e = i.abs,\n a = i.rel,\n o = i.origin,\n u = S(n),\n c = (t % r + r) % r,\n d = l[o],\n f = Math.floor((n - (e - a)) / s) * r;\n return p(d - c - d + l[u] + f + (o === s ? r : 0));\n }\n\n function A(n) {\n return D(n) === n;\n }\n\n function D(n) {\n return c(n, v, m);\n }\n\n function L() {\n return o.loop;\n }\n\n function S(n) {\n return (n % s + s) % s;\n }\n\n function _(t) {\n var i;\n i = t - M, k.push({\n distance: i,\n timestamp: e()\n }), k.length > 6 && (k = k.slice(-6)), M = Math.round(1e6 * t) / 1e6;\n var r = O().abs;\n\n if (r !== w) {\n var a = null !== w;\n w = r, a && n.emit(\"slideChanged\");\n }\n }\n\n function O(t) {\n var e = t ? null : function () {\n if (s) {\n var n = L(),\n t = n ? (M % r + r) % r : M,\n i = (n ? M % r : M) - u[0][2],\n e = 0 - (i < 0 && n ? r - Math.abs(i) : i),\n c = 0,\n l = E(M),\n f = l.abs,\n p = l.rel,\n y = u[p][2],\n k = u.map(function (t, i) {\n var a = e + c;\n (a < 0 - t[0] || a > 1) && (a += (Math.abs(a) > r - 1 && n ? r : 0) * d(-a));\n var u = i - p,\n l = Math.sign(u),\n v = u + f;\n n && (-1 === l && a > y && (v += s), 1 === l && a < y && (v -= s), null !== h && v < h && (a += r), null !== g && v > g && (a -= r));\n var m = a + t[0] + t[1],\n b = Math.max(a >= 0 && m <= 1 ? 1 : m < 0 || a > 1 ? 0 : a < 0 ? Math.min(1, (t[0] + a) / t[0]) : (1 - a) / t[0], 0);\n return c += t[0] + t[1], {\n abs: v,\n distance: o.rtl ? -1 * a + 1 - t[0] : a,\n portion: b,\n size: t[0]\n };\n });\n return f = D(f), p = S(f), {\n abs: D(f),\n length: a,\n max: x,\n maxIdx: m,\n min: b,\n minIdx: v,\n position: M,\n progress: n ? t / r : M / a,\n rel: p,\n slides: k\n };\n }\n }();\n return i.details = e, n.emit(\"detailsChanged\"), e;\n }\n\n return i = {\n absToRel: S,\n add: T,\n details: null,\n distToIdx: C,\n idxToDist: z,\n init: function init(t) {\n if (function () {\n if (o = n.options, u = (o.trackConfig || []).map(function (n) {\n return [f(n, \"size\", 1), f(n, \"spacing\", 0), f(n, \"origin\", 0)];\n }), s = u.length) {\n r = p(u.reduce(function (n, t) {\n return n + t[0] + t[1];\n }, 0));\n var t = s - 1;\n a = p(r + u[0][2] - u[t][0] - u[t][2] - u[t][1]), (l = u.reduce(function (n, t) {\n if (!n) return [0];\n var i = u[n.length - 1],\n e = n[n.length - 1] + (i[0] + i[2]) + i[1];\n return e -= t[2], n[n.length - 1] > e && (e = n[n.length - 1]), n.push(e), n;\n }, null)).push(r);\n }\n }(), !s) return O(!0);\n var i;\n !function () {\n var t = n.options.range,\n i = n.options.loop;\n h = v = i ? f(i, \"min\", -1 / 0) : 0, g = m = i ? f(i, \"max\", y) : u.length - 1;\n var e = f(t, \"min\", null),\n r = f(t, \"max\", null);\n e && (v = e), r && (m = r), b = v === -1 / 0 ? v : n.track.idxToDist(v || 0, !0, 0), x = m === y ? m : z(m, !0, 0), null === r && (g = m), f(t, \"align\", !1) && m !== y && 0 === u[S(m)][2] && (x -= 1 - u[S(m)][0], m = C(x)), b = p(b), x = p(x);\n }(), i = t, Number(i) === i ? T(I(D(t))) : O();\n },\n to: _,\n velocity: function velocity() {\n var n = e(),\n t = k.reduce(function (t, i) {\n var e = i.distance,\n r = i.timestamp;\n return n - r > 200 || (d(e) !== d(t.distance) && t.distance && (t = {\n distance: 0,\n lastTimestamp: 0,\n time: 0\n }), t.time && (t.distance += e), t.lastTimestamp && (t.time += r - t.lastTimestamp), t.lastTimestamp = r), t;\n }, {\n distance: 0,\n lastTimestamp: 0,\n time: 0\n });\n return t.distance / t.time || 0;\n }\n };\n}\n\nfunction h(n) {\n var t, i, e, r, a, o, u;\n\n function s(n) {\n return 2 * n;\n }\n\n function l(n) {\n return c(n, o, u);\n }\n\n function f(n) {\n return 1 - Math.pow(1 - n, 3);\n }\n\n function p() {\n h();\n var t = \"free-snap\" === n.options.mode,\n i = n.track,\n o = i.velocity();\n e = d(o);\n var u = n.track.details,\n c = [];\n\n if (o || !t) {\n var p = v(o),\n m = p.dist,\n g = p.dur;\n\n if (g = s(g), m *= e, t) {\n var b = i.idxToDist(i.distToIdx(m), !0);\n b && (m = b);\n }\n\n c.push({\n distance: m,\n duration: g,\n easing: f\n });\n var x = u.position,\n y = x + m;\n\n if (y < r || y > a) {\n var k = y < r ? r - x : a - x,\n w = 0,\n M = o;\n\n if (d(k) === e) {\n var T = Math.min(Math.abs(k) / Math.abs(m), 1),\n C = function (n) {\n return 1 - Math.pow(1 - n, 1 / 3);\n }(T) * g;\n\n c[0].earlyExit = C, M = o * (1 - T);\n } else c[0].earlyExit = 0, w += k;\n\n var E = v(M, 100),\n z = E.dist * e;\n n.options.rubberband && (c.push({\n distance: z,\n duration: s(E.dur),\n easing: f\n }), c.push({\n distance: -z + w,\n duration: 500,\n easing: f\n }));\n }\n\n n.animator.start(c);\n } else n.moveToIdx(l(u.abs), !0, {\n duration: 500,\n easing: function easing(n) {\n return 1 + --n * n * n * n * n;\n }\n });\n }\n\n function v(n, t) {\n void 0 === t && (t = 1e3);\n var i = 147e-9 + (n = Math.abs(n)) / t;\n return {\n dist: Math.pow(n, 2) / i,\n dur: n / i\n };\n }\n\n function m() {\n var t = n.track.details;\n t && (r = t.min, a = t.max, o = t.minIdx, u = t.maxIdx);\n }\n\n function h() {\n n.animator.stop();\n }\n\n n.on(\"updated\", m), n.on(\"optionsChanged\", m), n.on(\"created\", m), n.on(\"dragStarted\", function () {\n h(), t = i = n.track.details.abs;\n }), n.on(\"dragEnded\", function () {\n var e = n.options.mode;\n \"snap\" === e && function () {\n var e = n.track,\n o = n.track.details,\n u = o.position,\n s = d(e.velocity());\n (u > a || u < r) && (s = 0);\n var c = t + s;\n 0 === o.slides[e.absToRel(c)].portion && (c -= s), t !== i && (c = i), d(e.idxToDist(c, !0)) !== s && (c += s), c = l(c);\n var f = e.idxToDist(c, !0);\n n.animator.start([{\n distance: f,\n duration: 500,\n easing: function easing(n) {\n return 1 + --n * n * n * n * n;\n }\n }]);\n }(), \"free\" !== e && \"free-snap\" !== e || p();\n }), n.on(\"dragged\", function () {\n i = n.track.details.abs;\n });\n}\n\nfunction g(n) {\n var t,\n i,\n e,\n l,\n f,\n p,\n v,\n m,\n h,\n g,\n b,\n x,\n y,\n k,\n w,\n M,\n T,\n C,\n E = s();\n\n function z(a) {\n if (p && m === a.id) {\n var s = L(a);\n\n if (h) {\n if (!D(a)) return A(a);\n g = s, h = !1, n.emit(\"dragChecked\");\n }\n\n if (M) return g = s;\n o(a);\n\n var y = function (t) {\n if (T === -1 / 0 && C === 1 / 0) return t;\n var e = n.track.details,\n r = e.length,\n a = e.position,\n o = c(t, T - a, C - a);\n if (0 === r) return 0;\n if (!n.options.rubberband) return o;\n if (a <= C && a >= T) return t;\n if (a < T && i > 0 || a > C && i < 0) return t;\n var u = (a < T ? a - T : a - C) / r,\n s = l * r,\n d = Math.abs(u * s),\n p = Math.max(0, 1 - d / f * 2);\n return p * p * t;\n }(v(g - s) / l * e);\n\n i = d(y);\n var k = n.track.details.position;\n (k > T && k < C || k === T && i > 0 || k === C && i < 0) && u(a), b += y, !x && Math.abs(b * l) > 5 && (x = !0, r(t, \"moves\", \"\")), n.track.add(y), g = s, n.emit(\"dragged\");\n }\n }\n\n function I(t) {\n !p && n.track.details && n.track.details.length && (x = !1, b = 0, p = !0, h = !0, m = t.id, D(t), g = L(t), n.emit(\"dragStarted\"));\n }\n\n function A(i) {\n p && m === i.idChanged && (r(t, \"moves\", null), p = !1, n.emit(\"dragEnded\"));\n }\n\n function D(n) {\n var t = S(),\n i = t ? n.y : n.x,\n e = t ? n.x : n.y,\n r = void 0 !== y && void 0 !== k && Math.abs(k - e) <= Math.abs(y - i);\n return y = i, k = e, r;\n }\n\n function L(n) {\n return S() ? n.y : n.x;\n }\n\n function S() {\n return n.options.vertical;\n }\n\n function _() {\n l = n.size, f = S() ? window.innerHeight : window.innerWidth;\n var t = n.track.details;\n t && (T = t.min, C = t.max);\n }\n\n function O() {\n if (E.purge(), n.options.drag && !n.options.disabled) {\n var i;\n i = n.options.dragSpeed || 1, v = \"function\" == typeof i ? i : function (n) {\n return n * i;\n }, e = n.options.rtl ? -1 : 1, _(), t = n.container, function () {\n var n = \"data-keen-slider-clickable\";\n a(\"[\".concat(n, \"]:not([\").concat(n, \"=false])\"), t).map(function (n) {\n E.add(n, \"mousedown\", u), E.add(n, \"touchstart\", u);\n });\n }(), E.add(t, \"dragstart\", function (n) {\n o(n);\n }), E.input(t, \"ksDragStart\", I), E.input(t, \"ksDrag\", z), E.input(t, \"ksDragEnd\", A), E.input(t, \"mousedown\", I), E.input(t, \"mousemove\", z), E.input(t, \"mouseleave\", A), E.input(t, \"mouseup\", A), E.input(t, \"touchstart\", I, {\n passive: !0\n }), E.input(t, \"touchmove\", z, {\n passive: !1\n }), E.input(t, \"touchend\", A), E.input(t, \"touchcancel\", A), E.add(window, \"wheel\", function (n) {\n p && o(n);\n });\n var r = \"data-keen-slider-scrollable\";\n a(\"[\".concat(r, \"]:not([\").concat(r, \"=false])\"), n.container).map(function (n) {\n return function (n) {\n var t;\n E.input(n, \"touchstart\", function (n) {\n t = L(n), M = !0, w = !0;\n }, {\n passive: !0\n }), E.input(n, \"touchmove\", function (i) {\n var e = S(),\n r = e ? n.scrollHeight - n.clientHeight : n.scrollWidth - n.clientWidth,\n a = t - L(i),\n u = e ? n.scrollTop : n.scrollLeft,\n s = e && \"scroll\" === n.style.overflowY || !e && \"scroll\" === n.style.overflowX;\n if (t = L(i), (a < 0 && u > 0 || a > 0 && u < r) && w && s) return M = !0;\n w = !1, o(i), M = !1;\n }), E.input(n, \"touchend\", function () {\n M = !1;\n });\n }(n);\n });\n }\n }\n\n n.on(\"updated\", _), n.on(\"optionsChanged\", O), n.on(\"created\", O), n.on(\"destroyed\", E.purge);\n}\n\nfunction b(n) {\n var t,\n i,\n e = null;\n\n function r(t, i, e) {\n n.animator.active ? o(t, i, e) : requestAnimationFrame(function () {\n return o(t, i, e);\n });\n }\n\n function a() {\n r(!1, !1, i);\n }\n\n function o(i, r, a) {\n var o = 0,\n c = n.size,\n d = n.track.details;\n\n if (d && t) {\n var l = d.slides;\n t.forEach(function (n, t) {\n if (i) !e && r && u(n, null, a), s(n, null, a);else {\n if (!l[t]) return;\n var d = l[t].size * c;\n !e && r && u(n, d, a), s(n, l[t].distance * c - o, a), o += d;\n }\n });\n }\n }\n\n function u(n, t, i) {\n var e = i ? \"height\" : \"width\";\n null !== t && (t += \"px\"), n.style[\"min-\" + e] = t, n.style[\"max-\" + e] = t;\n }\n\n function s(t, i, e) {\n if (null !== i) {\n \"performance\" === n.options.renderMode && (i = Math.round(i));\n var r = e ? i : 0;\n i = \"translate3d(\".concat(e ? 0 : i, \"px, \").concat(r, \"px, 0)\");\n }\n\n t.style.transform = i, t.style[\"-webkit-transform\"] = i;\n }\n\n function c() {\n t && r(!0, !0, i), n.on(\"detailsChanged\", a, !0);\n }\n\n function d() {\n r(!1, !0, i);\n }\n\n function l() {\n c(), i = n.options.vertical, n.options.disabled || \"custom\" === n.options.renderMode || (e = \"auto\" === f(n.options.slides, \"perView\", null), n.on(\"detailsChanged\", a), (t = n.slides).length && d());\n }\n\n n.on(\"created\", l), n.on(\"optionsChanged\", l), n.on(\"updated\", d), n.on(\"destroyed\", c);\n}\n\nfunction x(t, i) {\n return function (e) {\n var o,\n u,\n c,\n d,\n p,\n v,\n m = s();\n\n function h(n) {\n var t;\n r(e.container, \"reverse\", \"rtl\" !== (t = e.container, window.getComputedStyle(t, null).getPropertyValue(\"direction\")) || n ? null : \"\"), r(e.container, \"v\", e.options.vertical && !n ? \"\" : null), r(e.container, \"disabled\", e.options.disabled && !n ? \"\" : null);\n }\n\n function g() {\n b() && M();\n }\n\n function b() {\n var t = null;\n if (d.forEach(function (n) {\n n.matches && (t = n.__media);\n }), t === o) return !1;\n o = t;\n var i = t ? c.breakpoints[t] : c;\n return e.options = _n(_n({}, c), i), h(), I(), A(), C(), !0;\n }\n\n function x(n) {\n var t = l(n);\n return (e.options.vertical ? t.height : t.width) / e.size || 1;\n }\n\n function y() {\n return e.options.trackConfig.length;\n }\n\n function k(t) {\n for (var r in o = !1, c = _n(_n({}, i), t), m.purge(), u = e.size, d = [], c.breakpoints || []) {\n var a = window.matchMedia(r);\n a.__media = r, d.push(a), m.add(a, \"change\", g);\n }\n\n m.add(window, \"orientationchange\", z), m.add(window, \"resize\", E), b();\n }\n\n function w(n) {\n e.animator.stop();\n var t = e.track.details;\n e.track.init(null != n ? n : t ? t.abs : 0);\n }\n\n function M(n) {\n w(n), e.emit(\"optionsChanged\");\n }\n\n function T(n, t) {\n if (n) return k(n), void M(t);\n I(), A();\n var i = y();\n C(), y() !== i ? M(t) : w(t), e.emit(\"updated\");\n }\n\n function C() {\n var n = e.options.slides;\n if (\"function\" == typeof n) return e.options.trackConfig = n(e.size, e.slides);\n\n for (var t = e.slides, i = t.length, r = \"number\" == typeof n ? n : f(n, \"number\", i, !0), a = [], o = f(n, \"perView\", 1, !0), u = f(n, \"spacing\", 0, !0) / e.size || 0, s = \"auto\" === o ? u : u / o, c = f(n, \"origin\", \"auto\"), d = 0, l = 0; l < r; l++) {\n var p = \"auto\" === o ? x(t[l]) : 1 / o - u + s,\n v = \"center\" === c ? .5 - p / 2 : \"auto\" === c ? 0 : c;\n a.push({\n origin: v,\n size: p,\n spacing: u\n }), d += p;\n }\n\n if (d += u * (r - 1), \"auto\" === c && !e.options.loop && 1 !== o) {\n var m = 0;\n a.map(function (n) {\n var t = d - m;\n return m += n.size + u, t >= 1 || (n.origin = 1 - t - (d > 1 ? 0 : 1 - d)), n;\n });\n }\n\n e.options.trackConfig = a;\n }\n\n function E() {\n I();\n var n = e.size;\n e.options.disabled || n === u || (u = n, T());\n }\n\n function z() {\n E(), setTimeout(E, 500), setTimeout(E, 2e3);\n }\n\n function I() {\n var n = l(e.container);\n e.size = (e.options.vertical ? n.height : n.width) || 1;\n }\n\n function A() {\n e.slides = a(e.options.selector, e.container);\n }\n\n e.container = (v = a(t, p || document)).length ? v[0] : null, e.destroy = function () {\n m.purge(), e.emit(\"destroyed\"), h(!0);\n }, e.prev = function () {\n e.moveToIdx(e.track.details.abs - 1, !0);\n }, e.next = function () {\n e.moveToIdx(e.track.details.abs + 1, !0);\n }, e.update = T, k(e.options);\n };\n}\n\nvar y = function y(n, i, e) {\n try {\n return function (n, t) {\n var i,\n e = {};\n return i = {\n emit: function emit(n) {\n e[n] && e[n].forEach(function (n) {\n n(i);\n });\n var t = i.options[n];\n t && t(i);\n },\n moveToIdx: function moveToIdx(n, t, e) {\n var r = i.track.idxToDist(n, t);\n\n if (r) {\n var a = i.options.defaultAnimation;\n i.animator.start([{\n distance: r,\n duration: f(e || a, \"duration\", 500),\n easing: f(e || a, \"easing\", function (n) {\n return 1 + --n * n * n * n * n;\n })\n }]);\n }\n },\n on: function on(n, t, i) {\n void 0 === i && (i = !1), e[n] || (e[n] = []);\n var r = e[n].indexOf(t);\n r > -1 ? i && delete e[n][r] : i || e[n].push(t);\n },\n options: n\n }, function () {\n if (i.track = m(i), i.animator = v(i), t) for (var n in t) {\n var e = t[n];\n e && e(i);\n }\n i.track.init(i.options.initial || 0), i.emit(\"created\");\n }(), i;\n }(i, t([x(n, {\n drag: !0,\n mode: \"snap\",\n renderMode: \"precision\",\n rubberband: !0,\n selector: \".keen-slider__slide\"\n }), b, g, h], e || [], !0));\n } catch (n) {\n console.error(n);\n }\n};\n\nexport { y as default };","\n//\n// Usage:\n//\n// <a href=\"/path/to/somewhere\"\n// data-method=\"delete\"\n// data-coorum-confirm=\"[ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ï¼ˆå¿…é ˆï¼‰]\"\n// data-coorum-confirm-title=\"[ダイヤãƒã‚°ã‚¿ã‚¤ãƒˆãƒ«ï¼ˆæŒ‡å®šãªã‘ã‚Œã°éžè¡¨ç¤ºï¼‰]\"\n// data-coorum-confirm-accept=\"[メインボタンã®ãƒ†ã‚スト(指定ãªã‘ã‚Œã°OK)]\"\n// data-coorum-confirm-reject=\"[サブボタンã®ãƒ†ã‚スト(指定ãªã‘ã‚Œã°ã‚ャンセル)]\">\n// ボタンテã‚スト\n// </a>\n//\nexport default class Confirm {\n constructor() {\n Confirm.setEvents($)\n }\n\n static setEvents($scope) {\n const $confirmTargets = $(\"[data-coorum-confirm]\", $scope) // coorum-confirmãŒè¨å®šã•ã‚Œã¦ã„ã‚‹aã‚¿ã‚°\n if ($confirmTargets.length < 1) return\n\n $confirmTargets.each((i, elem) => {\n elem.addEventListener(\"click\", (event) => {\n Confirm.confirm({\n message: elem.dataset.coorumConfirm,\n title: elem.dataset.coorumConfirmTitle,\n accept: elem.dataset.coorumConfirmAccept,\n reject: elem.dataset.coorumConfirmReject,\n href: elem.href,\n method: elem.dataset.method,\n remote: elem.dataset.remote,\n })\n event.preventDefault()\n event.stopPropagation()\n });\n });\n }\n\n static confirm({\n message,\n title = null,\n accept = null,\n reject = null,\n href = null,\n method = null,\n remote = null,\n acceptCallback = null,\n rejectCallback = null,\n }) {\n const $confirmDialog = $('.coorum-confirm--modal') // ダイアãƒã‚°\n message ||= ''\n title ||= ''\n accept ||= 'OK'\n reject ||= 'ã‚ャンセル'\n href ||= \"#close:modal\"\n remote ||= false\n $confirmDialog.find('.coorum-confirm--modal__body pre').text(message)\n $confirmDialog.find('.coorum-confirm--modal__header').text(title)\n const $rejectBtn = $confirmDialog.find('#confirm-reject-btn')\n $rejectBtn.text(reject)\n $rejectBtn.attr(\"onclick\", rejectCallback)\n const $acceptBtn = $confirmDialog.find(\"#confirm-accept-btn\")\n $acceptBtn.text(accept)\n $acceptBtn.on(\"click\", acceptCallback)\n $acceptBtn.attr(\"href\", href)\n !method ? $acceptBtn.removeAttr(\"data-method\") : $acceptBtn.attr(\"data-method\", method)\n $acceptBtn.attr(\"data-remote\", remote)\n $confirmDialog.modal('show')\n\n if (remote) {\n $acceptBtn.on(\"click\", (event) => {\n // NOTE: $confirmDialog.modal('hide') Bootstrap3.4ã§ã¯modal('hide')ã¯å‹•ã‹ãªã„\n $rejectBtn.trigger({ type: \"click\" })\n });\n }\n }\n\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = _typeof(value);\n\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;","import KeenSlider from 'keen-slider';\nimport Sortable from 'sortablejs';\nclass Attachment {\n constructor(slideOptions = { spacing: 8 }, elem = null, isComment = false, isSort = false, maxFileNum = 3, excludeType = []) {\n this.slideOptions = slideOptions;\n this.isComment = isComment;\n this.maxFileNum = maxFileNum;\n this.isSort = isSort;\n this.imageTypes = ['image/gif', 'image/jpeg', 'image/png'];\n this.excludeType = excludeType;\n this.$attachment = elem ?? document.querySelector('.js-attachment');\n if (!this.$attachment) return;\n\n this.$finderButton = this.$attachment.querySelector(\n this.$attachment.dataset.attachmentFinderButton\n );\n\n this.$cacheField = this.$attachment.querySelector(\n this.$attachment.dataset.attachmentCache\n );\n\n this.$fileField = this.$attachment.querySelector(\n this.$attachment.dataset.attachmentFieldAdd\n );\n\n this.$deleteField = this.$attachment.querySelector(\n this.$attachment.dataset.attachmentFieldDelete\n );\n\n this.$imageList = this.$attachment.querySelector(\n this.$attachment.dataset.attachmentImageList\n );\n\n this.$fileList = this.$attachment.querySelector(\n this.$attachment.dataset.attachmentFileList\n );\n\n this.$fileExisting = this.$attachment.querySelectorAll(\n this.$attachment.dataset.attachmentFileExisting\n );\n\n this.$svg = {\n image: this.createSVGRender(\n 'image',\n this.$attachment.dataset.attachmentImageCloseIconUrl\n ),\n file: this.createSVGRender(\n 'file',\n this.$attachment.dataset.attachmentFileCloseIconUrl\n ),\n doc: this.createSVGRender(\n 'doc',\n this.$attachment.dataset.attachmentFileIconUrl\n ),\n };\n\n this.$finderButton.addEventListener('click', this.handleOpenFinder.bind(this));\n this.$fileField.addEventListener('change', this.handleChange.bind(this));\n\n this.$fileExisting.forEach((elem) => {\n elem.addEventListener('click', this.handleDeleteExisting.bind(this));\n });\n\n // SNSã§ã®ã¿åˆ©ç”¨\n if (this.isSort) {\n this.$fileSortField = this.$attachment.querySelector(\n this.$attachment.dataset.attachmentFileSortField\n );\n this.setSortable();\n } else {\n this.setKeenSlider();\n }\n }\n\n getExistingFiles() {\n const images = this.$imageList.children;\n const files = this.$fileList.children;\n return [...images].concat([...files]);\n }\n\n selectedFiles() {\n return this.files ? [...this.files] : [];\n }\n\n fileSortByType(files) {\n const sorted = { image: [], file: [] };\n [...files].forEach((file) => {\n const type = `${this.imageTypes.includes(file.type) ? 'image' : 'file'}`;\n sorted[type].push(file);\n });\n return sorted;\n }\n\n handleOpenFinder() {\n this.$fileField.dispatchEvent(new MouseEvent('click'));\n }\n\n handleChange({ target: { files } }) {\n if (files.length < 1) {\n this.setFiles();\n return;\n }\n\n const changedFiles = this.fileSortByType(files);\n const existingFiles = this.getExistingFiles();\n\n // ç”»åƒã®ã¿è¨±å¯ã®æŠ•ç¨¿ã®å ´åˆï¼ˆç¾çŠ¶ã¯SNSã®ã¿ï¼‰\n if (\n this.excludeType.includes('image') &&\n changedFiles.image.length + existingFiles.length > this.maxFileNum) {\n alert(`アップãƒãƒ¼ãƒ‰å¯èƒ½ãªç”»åƒã¯${this.maxFileNum}ファイルã¾ã§ã§ã™`);\n // input[type=\"file\"]ã®ãƒªã‚»ãƒƒãƒˆ\n this.setFiles();\n return;\n }\n // ç”»åƒãƒ»ãƒ•ã‚¡ã‚¤ãƒ«æ··åˆã®æŠ•ç¨¿ã®å ´åˆ\n else if (changedFiles.image.length + changedFiles.file.length + existingFiles.length > this.maxFileNum) {\n alert(`アップãƒãƒ¼ãƒ‰å¯èƒ½ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯${this.maxFileNum}ファイルã¾ã§ã§ã™`);\n // input[type=\"file\"]ã®ãƒªã‚»ãƒƒãƒˆ\n this.setFiles();\n return;\n }\n\n if (![...files].every((file) => file.size <= 10 * 1024 * 1024)) {\n if (this.excludeType.includes('file')) {\n alert('ç”»åƒãƒ•ã‚¡ã‚¤ãƒ«ã¯10MB以下ã«ã—ã¦ãã ã•ã„');\n }\n else {\n alert('添付ファイルã¯10MB以下ã«ã—ã¦ãã ã•ã„');\n }\n // input[type=\"file\"]ã®ãƒªã‚»ãƒƒãƒˆ\n this.setFiles();\n return;\n }\n\n this.setFiles(files);\n }\n\n // æ–°ãŸã«è¿½åŠ ã•ã‚Œã‚‹ã‚±ãƒ¼ã‚¹ã®ã¿\n handleDelete(type, fileName) {\n if (this.files?.length < 1) return;\n\n const list = this[`$${type}List`];\n const dataTransfer = new DataTransfer();\n\n // Attachmentã®å‰Šé™¤ã€è¦ªã®éžè¡¨ç¤º\n list.querySelector(`[data-attachment-name=\"${fileName}\"]`)?.remove();\n if (list.childElementCount < 1) {\n list.ariaHidden = true;\n }\n\n this.selectedFiles().forEach((file) => {\n file.name !== fileName && dataTransfer.items.add(file);\n });\n this.$fileField.files = dataTransfer.files;\n this.files = dataTransfer.files;\n if (this.isSort) {\n this.updateSortFieldValues();\n }\n }\n\n // æ—¢å˜ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ã¿\n handleDeleteExisting({ target }) {\n const item = target.parentElement;\n const list = item.parentElement;\n const cache = this.$cacheField.value.split(' ');\n const id = target.dataset.attachmentDeleteId || target.dataset.attachmentDeleteCacheId;\n\n if (target.dataset.attachmentDeleteId) {\n this.$deleteField.insertAdjacentElement(\n 'afterend',\n this.createDeleteField(id)\n );\n }\n else {\n this.$cacheField.value = cache.filter((v) => v !== id).join(' ');\n }\n\n item.remove();\n\n if (list.childElementCount < 1) {\n list.ariaHidden = true;\n }\n\n // FIXME: jQuery\n const type = $(item).prop('class').includes('c-Attachment_ImageItem') ? 'image' : 'file';\n const fileName = $(item).data('attachmentName');\n this.handleDelete(type, fileName);\n }\n\n createDeleteField(id) {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = this.$deleteField.dataset.attachmentDeleteName.replace(\n 'ID',\n id\n );\n return input;\n }\n\n async createSVGRender(key, url) {\n if (this.$svg?.[key] === undefined) {\n const response = await fetch(url);\n const text = await response.text();\n const domParser = new DOMParser();\n const svg = domParser.parseFromString(\n text,\n 'image/svg+xml'\n ).documentElement;\n const className = key === 'doc' ? 'c-Attachment_Icon' : 'c-Attachment_X';\n svg.classList.add(className);\n this.$svg[key] = svg;\n }\n return this.$svg[key];\n }\n\n async createItemRender(reader, file, type) {\n const { 0: filename, length, [length - 1]: extension } = file.name.split('.');\n const renderSet = {\n li: {\n element: 'li',\n class:\n type === 'image' ?\n (this.isSort ? ['c-Attachment_ImageItem', 'sort'] : ['c-Attachment_ImageItem']) :\n ['c-Attachment_FileItem'],\n data: {\n attachmentName: `${file.name}`,\n },\n },\n button: {\n element: 'button',\n class: ['c-Attachment_Remove'],\n type: 'button',\n },\n span: {\n element: 'span',\n class: ['c-Attachment_Filename', 'text-gray-900'],\n data: {\n attachmentType: type,\n },\n },\n name: {\n element: 'span',\n class: ['c-Attachment_Name'],\n text: filename,\n },\n ext: {\n element: 'span',\n class: ['c-Attachment_Ext'],\n text: `.${extension}`,\n },\n };\n\n if (type === 'image') {\n Object.assign(renderSet, {\n figure: {\n element: 'figure',\n class: ['c-Attachment_Fig'],\n },\n img: {\n element: 'img',\n class: ['c-Attachment_Image'],\n src: reader.result,\n alt: '',\n },\n });\n }\n\n const [li, button, span, name, ext, figure, img] = Object.keys(renderSet).map(\n (key) => {\n const element = document.createElement(renderSet[key].element);\n\n if (renderSet[key].class) {\n element.classList.add(...renderSet[key].class);\n }\n\n if (renderSet[key].text) {\n element.textContent = renderSet[key].text;\n }\n\n if (renderSet[key].type) {\n element.type = renderSet[key].type;\n }\n\n if (renderSet[key].src) {\n element.src = renderSet[key].src;\n }\n\n if (renderSet[key].alt) {\n element.alt = renderSet[key].alt;\n }\n\n if (renderSet[key].style) {\n element.style.cssText = renderSet[key].style;\n }\n\n if (renderSet[key].data) {\n Object.keys(renderSet[key].data).forEach((dataKey) => {\n element.dataset[dataKey] = renderSet[key].data[dataKey];\n });\n }\n\n return element;\n }\n );\n\n span.append(name, ext);\n button.append(this.$svg[type].cloneNode(true));\n button.addEventListener(\n 'click',\n this.handleDelete.bind(this, type, file.name)\n );\n\n if (type === 'image') {\n figure.append(img);\n li.append(button, figure, span);\n } else {\n const doc = this.$svg.doc.cloneNode(true);\n li.append(doc, span, button);\n }\n\n return li;\n }\n\n setKeenSlider() {\n const MutationPlugin = (slider) => {\n const observer = new MutationObserver((mutations) =>\n mutations.forEach(() => slider.update())\n );\n slider.on('created', () => {\n observer.observe(slider.container, { childList: true });\n });\n slider.on('destroyed', () => {\n observer.disconnect();\n });\n };\n\n const slides = {\n origin: 0,\n perView: 'auto',\n };\n\n Object.assign(slides, this.slideOptions);\n\n new KeenSlider(\n this.$attachment.querySelector(\n this.$attachment.dataset.attachmentImageList\n ),\n {\n selector: this.$attachment.dataset.attachmentImageItem,\n disabled: true,\n breakpoints: {\n '(max-width: 768px)': {\n disabled: false,\n loop: false,\n slidesPerView: 3,\n mode: 'free-snap',\n slides,\n },\n },\n },\n [MutationPlugin]\n );\n }\n\n setSortable() {\n const fileSortField = this.$fileSortField;\n const sortable = document.querySelector('.sortable');\n if (!fileSortField || !sortable) return;\n\n new Sortable(sortable, {\n animation: 150,\n onEnd: this.updateSortFieldValues\n });\n }\n\n updateSortFieldValues = () => {\n const items = {};\n const sortItems = document.querySelectorAll('.sort');\n sortItems.forEach((item, index) => {\n items[item.dataset.attachmentName] = index + 1;\n });\n this.$fileSortField.value = JSON.stringify(items);\n };\n\n setFiles(files = []) {\n // データã®è¿½åŠ \n const uniqued = [...this.selectedFiles(), ...files].filter(\n (file, i, merged) => merged.findIndex((f) => f.name === file.name) === i\n );\n\n const dataTransfer = new DataTransfer();\n uniqued.forEach((file) => {\n dataTransfer.items.add(file);\n });\n this.$fileField.files = dataTransfer.files;\n this.files = dataTransfer.files;\n\n // ファイルãŒãªã„å ´åˆã€ã¾ãŸã¯JSå´ã®Validateエラーã®å ´åˆã¯ãƒ—レビューã®ç”Ÿæˆã‚’è¡Œã‚ãªã„\n if (files.length < 1) return;\n\n // UIã®è¿½åŠ \n [...this.files].forEach((file) => {\n const type = `${this.imageTypes.includes(file.type) ? 'image' : 'file'}`;\n\n // è¿½åŠ ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«åˆ†ã‚’å…¨ã¦ä¸€åº¦æ¶ˆã™\n document.querySelectorAll(`[data-attachment-name=\"${file.name}\"]`).forEach((elem) => {\n elem.remove();\n });\n\n const reader = new FileReader();\n\n reader.readAsDataURL(file);\n reader.addEventListener('load', async () => {\n await this.createItemRender(reader, file, type).then((li) => {\n const list = this[`$${type}List`];\n // Attachmentã®è¿½åŠ ã€è¦ªã®è¡¨ç¤º\n list.appendChild(li);\n if (list.childElementCount > 0) {\n list.ariaHidden = false;\n }\n }).then(() => {\n if (this.isSort) {\n this.updateSortFieldValues();\n }\n });\n });\n });\n }\n}\n\nconst AttachmentMutationObserve = (element) => {\n const selectorMutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n Array.from(mutation.addedNodes)\n .filter((node) => node.nodeType === Node.ELEMENT_NODE)\n .forEach((node) => {\n const targets = node.querySelectorAll('.js-attachment');\n Array.from(targets).forEach((target) => {\n target && new Attachment({ spacing: 12 }, target, true);\n });\n });\n });\n });\n selectorMutationObserver.observe(element, { childList: true, subtree: true });\n};\n\nexport default Attachment;\nexport {\n AttachmentMutationObserve\n};\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n/** `Object#toString` result references. */\n\n\nvar symbolTag = '[object Symbol]';\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\nfunction isSymbol(value) {\n return _typeof(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\n\nmodule.exports = isSymbol;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = (typeof global === \"undefined\" ? \"undefined\" : _typeof(global)) == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","var _Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n/** `Object#toString` result references. */\n\n\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nmodule.exports = baseGetTag;","class ViewMore {\n constructor(buttonSelector, loadingSelector) {\n $(buttonSelector).click(function () {\n $(this).hide();\n $(loadingSelector).show();\n });\n }\n}\n\nexport { ViewMore };\n","class InfiniteScroll {\n constructor(rootSelector, originSelector, nextSelector) {\n if (!rootSelector || !originSelector || !nextSelector) {\n console.error('rootSelector, originSelector, and nextSelector are required');\n return;\n }\n\n this.originSelector = originSelector;\n this.root = document.querySelector(rootSelector);\n this.nextSelector = nextSelector;\n\n this.initScrollObserver();\n this.initMutationObserver();\n }\n\n initScrollObserver() {\n this.scrollObserver = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const nextLink = this.root.querySelector(this.nextSelector);\n if (nextLink) {\n this.root.insertAdjacentElement('beforeend', this.createLoadingImage());\n nextLink.click();\n }\n\n this.scrollObserver.disconnect();\n }\n });\n }, {\n root: null,\n rootMargin: '0px',\n threshold: 0.1\n });\n\n this.scrollObserver.observe(this.getObservedElement());\n }\n\n initMutationObserver() {\n this.mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n Array.from(mutation.addedNodes)\n .filter((node) => node.nodeType === Node.ELEMENT_NODE && node.matches(this.originSelector))\n .forEach(() => {\n const loadingElement = this.root.querySelector('.js-tmp-loading');\n\n if (loadingElement) {\n loadingElement.remove();\n }\n\n if (this.root.querySelector(this.nextSelector)) {\n this.scrollObserver.observe(this.getObservedElement());\n }\n });\n });\n });\n\n this.mutationObserver.observe(this.root, { childList: true, subtree: true });\n }\n\n getOrigin() {\n return this.root.querySelectorAll(this.originSelector);\n }\n\n getObservedElement() {\n const origins = this.getOrigin();\n return origins[origins.length - 1];\n }\n\n createLoadingImage() {\n const imageElement = document.createElement('img');\n imageElement.src = this.root.dataset.loadingImage;\n const divElement = document.createElement('div');\n divElement.classList.add('js-tmp-loading', 'text-center', 'p-3.5');\n divElement.appendChild(imageElement);\n return divElement;\n }\n}\n\nexport default InfiniteScroll;\n","var _Symbol = require('./_Symbol');\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n\nmodule.exports = getRawTag;","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && _typeof(value) == 'object';\n}\n\nmodule.exports = isObjectLike;","var root = require('./_root');\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\n\nvar now = function now() {\n return root.Date.now();\n};\n\nmodule.exports = now;","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n/** Used as references for various `Number` constants. */\n\n\nvar NAN = 0 / 0;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = toNumber;","var trimmedEndIndex = require('./_trimmedEndIndex');\n/** Used to match leading whitespace. */\n\n\nvar reTrimStart = /^\\s+/;\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n\nfunction baseTrim(string) {\n return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string;\n}\n\nmodule.exports = baseTrim;","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n\n return index;\n}\n\nmodule.exports = trimmedEndIndex;","class ReplyOmitted {\n constructor(targetSelector, rootSelector = document) {\n this.root = rootSelector;\n this.targets = this.root.querySelectorAll(targetSelector);\n\n this.targets.forEach((target) => this.initializeTarget(target));\n }\n\n initializeTarget(target) {\n if (!target) return;\n\n const omittedSelector = target.dataset?.jsOmittedSelector;\n const omittedArea = target.querySelector(omittedSelector);\n const unlockButton = target.querySelector(target.dataset?.jsOmittedUnlockSelector);\n\n if (!omittedArea || !unlockButton) return;\n\n this.handleUnlockButtonVisibility(omittedArea, unlockButton);\n this.addUnlockButtonListener(omittedArea, unlockButton, omittedSelector);\n }\n\n handleUnlockButtonVisibility(omittedArea, unlockButton) {\n const isContentOmitted =\n omittedArea.offsetHeight > 0 &&\n omittedArea.scrollHeight > 0 &&\n omittedArea.offsetHeight < omittedArea.scrollHeight;\n\n // omittedArea ã®é«˜ã•ãŒå…¨é–‹æ™‚よりもå°ã•ã„å ´åˆã« unlockButton を表示ã™ã‚‹\n if (isContentOmitted) {\n // FIXME: 該当classã®displayプãƒãƒ‘ティを削除ã— ã€hidden ã«ç½®ãæ›ãˆå‡ºæ¥ãŸå ´åˆã« `remove('hidden');` ãŒä¸è¦ã«ãªã‚‹\n unlockButton.classList.remove('hidden');\n unlockButton.classList.add('block');\n }\n }\n\n addUnlockButtonListener(omittedArea, unlockButton, omittedSelector) {\n unlockButton.addEventListener('click', () => {\n omittedArea.classList.remove(omittedSelector.replace('.', ''));\n unlockButton.remove();\n });\n }\n}\n\nexport default ReplyOmitted;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && _typeof(module.exports) === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket #14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n\n return factory(w);\n };\n } else {\n factory(global);\n } // Pass this if window is not defined yet\n\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var _slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n } // Support: Android <=2.3 only (functionish RegExp)\n\n\n return _typeof(obj) === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : _typeof(obj);\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n\n var version = \"3.5.1\",\n // Define a local copy of jQuery\n jQuery = function jQuery(selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function toArray() {\n return _slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function get(num) {\n // Return all the elements in a clean array\n if (num == null) {\n return _slice.call(this);\n } // Return just the one element from the set\n\n\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function pushStack(elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)\n\n ret.prevObject = this; // Return the newly-formed element set\n\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function each(callback) {\n return jQuery.each(this, callback);\n },\n map: function map(callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function slice() {\n return this.pushStack(_slice.apply(this, arguments));\n },\n first: function first() {\n return this.eq(0);\n },\n last: function last() {\n return this.eq(-1);\n },\n even: function even() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function odd() {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function eq(i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function end() {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false; // Handle a deep copy situation\n\n if (typeof target === \"boolean\") {\n deep = target; // Skip the boolean and the target\n\n target = arguments[i] || {};\n i++;\n } // Handle case when target is a string or something (possible in deep copy)\n\n\n if (_typeof(target) !== \"object\" && !isFunction(target)) {\n target = {};\n } // Extend jQuery itself if only one argument is passed\n\n\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name]; // Prevent Object.prototype pollution\n // Prevent never-ending loop\n\n if (name === \"__proto__\" || target === copy) {\n continue;\n } // Recurse if we're merging plain objects or arrays\n\n\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name]; // Ensure proper type for the source value\n\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n\n copyIsArray = false; // Never move original objects, clone them\n\n target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function error(msg) {\n throw new Error(msg);\n },\n noop: function noop() {},\n isPlainObject: function isPlainObject(obj) {\n var proto, Ctor; // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain\n\n if (!proto) {\n return true;\n } // Objects with prototype are plain iff they were constructed by a global Object function\n\n\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function isEmptyObject(obj) {\n var name;\n\n for (name in obj) {\n return false;\n }\n\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function globalEval(code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function each(obj, callback) {\n var length,\n i = 0;\n\n if (isArrayLike(obj)) {\n length = obj.length;\n\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n\n return obj;\n },\n // results is for internal usage only\n makeArray: function makeArray(arr, results) {\n var ret = results || [];\n\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n\n return ret;\n },\n inArray: function inArray(elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function merge(first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n\n first.length = i;\n return first;\n },\n grep: function grep(elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert; // Go through the array, only saving the items\n // that pass the validator function\n\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n },\n // arg is for internal usage only\n map: function map(elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = []; // Go through the array, translating each of the items to their new values\n\n if (isArrayLike(elems)) {\n length = elems.length;\n\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n } // Go through every key on the object,\n\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n\n if (value != null) {\n ret.push(value);\n }\n }\n } // Flatten any nested arrays\n\n\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n } // Populate the class2type map\n\n\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function sortOrder(a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n pushNative = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function indexOf(list, elem) {\n var i = 0,\n len = list.length;\n\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" + \"ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace + // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace + // \"Attribute values must be CSS identifiers [capture 5]\n // or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" + // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" + // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function funescape(escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n return nonHex ? // Strip the backslash prefix from a non-hex escape sequence\n nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n } // Control characters and (dependent upon position) numbers get escaped as code points\n\n\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n } // Other potentially-special ASCII characters get backslash-escaped\n\n\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function unloadHandler() {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n }); // Optimize for push.apply( _, NodeList )\n\n\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ? // Leverage slice if possible\n function (target, els) {\n pushNative.apply(target, slice.call(els));\n } : // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0; // Can't trust NodeList.length\n\n while (target[j++] = els[i++]) {}\n\n target.length = j - 1;\n }\n };\n }\n\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || []; // Return early from calls with invalid selector or context\n\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n } // Try to shortcut find operations (as opposed to filters) in HTML documents\n\n\n if (!seed) {\n setDocument(context);\n context = context || document;\n\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n } // Element context\n\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n } // Type selector\n\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results; // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n } // Take advantage of querySelectorAll\n\n\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && ( // Support: IE 8 only\n // Exclude object elements\n nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context; // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n\n if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n\n if (newContext !== context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n } // Prefix every selector in the list\n\n\n groups = tokenize(selector);\n i = groups.length;\n\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n\n newSelector = groups.join(\",\");\n }\n\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n } // All others\n\n\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\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 */\n\n\n function createCache() {\n var keys = [];\n\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n\n return cache[key + \" \"] = value;\n }\n\n return cache;\n }\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n\n\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n\n\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n } // release memory in IE\n\n\n el = null;\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 */\n\n\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\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 */\n\n\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes\n\n if (diff) {\n return diff;\n } // Check if b follows a\n\n\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n\n return a ? 1 : -1;\n }\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n\n\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n\n\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n\n\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n } // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\n\n return elem.isDisabled === disabled || // Where there is no isDisabled, check manually\n\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n\n return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n } // Remaining elements are neither :enabled nor :disabled\n\n\n return false;\n };\n }\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n\n\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length; // Match elements found at the specified indexes\n\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\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 */\n\n\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n } // Expose support vars for convenience\n\n\n support = Sizzle.support = {};\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 */\n\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem.namespaceURI,\n docElem = (elem.ownerDocument || elem).documentElement; // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n\n return !rhtml.test(namespace || docElem && docElem.nodeName || \"HTML\");\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 */\n\n\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n } // Update global variables\n\n\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document); // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false); // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n // Safari 4 - 5 only, Opera <=11.6 - 12.x only\n // IE/Edge & older browsers don't support the :scope pseudo-class.\n // Support: Safari 6.0 only\n // Safari 6.0 supports :scope but it's an alias of :root there.\n\n\n support.scope = assert(function (el) {\n docElem.appendChild(el).appendChild(document.createElement(\"div\"));\n return typeof el.querySelectorAll !== \"undefined\" && !el.querySelectorAll(\":scope fieldset div\").length;\n });\n /* Attributes\n ---------------------------------------------------------------------- */\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n // Check if getElementsByTagName(\"*\") returns only elements\n\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n }); // Support: IE<9\n\n support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n }); // ID filter and find\n\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n }; // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n\n\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n } // Fall back on getElementsByName\n\n\n elems = context.getElementsByName(id);\n i = 0;\n\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n\n return [];\n }\n };\n } // Tag\n\n\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag); // Filter out possible comments\n\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n\n return tmp;\n }\n\n return results;\n }; // Class\n\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n // QSA and matchesSelector support\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\n\n rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n\n rbuggyQSA = [];\n\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input; // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n\n docElem.appendChild(el).innerHTML = \"<a id='\" + expando + \"'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" + \"<option selected=''></option></select>\"; // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n\n\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\n\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n } // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n\n\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n } // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n\n\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n } // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n\n\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n } // Support: Firefox <=3.6 - 5 only\n // Old Firefox doesn't throw on a badly-escaped identifier.\n\n\n el.querySelectorAll(\"\\\\\\f\");\n rbuggyQSA.push(\"[\\\\r\\\\n\\\\f]\");\n });\n assert(function (el) {\n el.innerHTML = \"<a href='' disabled='disabled'></a>\" + \"<select disabled='disabled'><option/></select>\"; // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\"); // Support: IE8\n // Enforce case-sensitivity of name attribute\n\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n\n\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n\n\n docElem.appendChild(el).disabled = true;\n\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n } // Support: Opera 10 - 11 only\n // Opera 10-11 does not throw on post-comma invalid pseudos\n\n\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\"); // This should fail with an exception\n // Gecko does not error, returns false instead\n\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n /* Contains\n ---------------------------------------------------------------------- */\n\n hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n\n return false;\n };\n /* Sorting\n ---------------------------------------------------------------------- */\n // Document order sorting\n\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n } // Sort on method existence if only one input has compareDocumentPosition\n\n\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\n if (compare) {\n return compare;\n } // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected\n 1; // Disconnected nodes\n\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {\n return -1;\n } // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n\n if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {\n return 1;\n } // Maintain original order\n\n\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b]; // Parentless nodes are either documents or disconnected\n\n if (!aup || !bup) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n return a == document ? -1 : b == document ? 1 :\n /* eslint-enable eqeqeq */\n aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n } // Otherwise we need full lists of their ancestors for comparison\n\n\n cur = a;\n\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n\n cur = b;\n\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n } // Walk down the tree looking for a discrepancy\n\n\n while (ap[i] === bp[i]) {\n i++;\n }\n\n return i ? // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n\n /* eslint-disable eqeqeq */\n ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 :\n /* eslint-enable eqeqeq */\n 0;\n };\n return document;\n };\n\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n\n Sizzle.matchesSelector = function (elem, expr) {\n setDocument(elem);\n\n if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes\n\n if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n\n return contains(context, elem);\n };\n\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n\n Sizzle.escape = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n\n\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0; // Unless we *know* we can detect duplicates, assume their presence\n\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n } // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n\n\n sortInput = null;\n return results;\n };\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n\n\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n } // Do not include comment or processing instruction nodes\n\n\n return ret;\n };\n\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function ATTR(match) {\n match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted\n\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n\n return match.slice(0, 4);\n },\n \"CHILD\": function CHILD(match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n } // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n\n\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\"); // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n\n return match;\n },\n \"PSEUDO\": function PSEUDO(match) {\n var excess,\n unquoted = !match[6] && match[2];\n\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n } // Accept quoted arguments as-is\n\n\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\"; // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n } // Return only captures needed by the pseudo filter method (type and argument)\n\n\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function TAG(nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function CLASS(className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function ATTR(name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n\n if (result == null) {\n return operator === \"!=\";\n }\n\n if (!operator) {\n return true;\n }\n\n result += \"\";\n /* eslint-disable max-len */\n\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n /* eslint-enable max-len */\n };\n },\n \"CHILD\": function CHILD(type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ? // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n } // Reverse direction for :only-* (if we haven't yet done so)\n\n\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n\n return true;\n }\n\n start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`\n\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n\n while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n } // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\n\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n\n if (node === elem) {\n break;\n }\n }\n }\n }\n } // Incorporate the offset, then check against cycle size\n\n\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function PSEUDO(pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo); // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n\n if (fn[expando]) {\n return fn(argument);\n } // But maintain support for old signatures\n\n\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length; // Match elements unmatched by `matcher`\n\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results); // Don't keep the element (issue #299)\n\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function target(elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function root(elem) {\n return elem === docElem;\n },\n \"focus\": function focus(elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": createDisabledPseudo(false),\n \"disabled\": createDisabledPseudo(true),\n \"checked\": function checked(elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function selected(elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n\n return elem.selected === true;\n },\n // Contents\n \"empty\": function empty(elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n\n return true;\n },\n \"parent\": function parent(elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function header(elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function input(elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function button(elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function text(elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && ( // Support: IE<8\n // New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument > length ? length : argument;\n\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"]; // Add button/input type pseudos\n\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n } // Easy API for creating new setFilters\n\n\n function setFilters() {}\n\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n\n groups.push(tokens = []);\n }\n\n matched = false; // Combinators\n\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n } // Filters\n\n\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n\n if (!matched) {\n break;\n }\n } // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n\n\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n\n return selector;\n }\n\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ? // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n\n return false;\n } : // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n\n if (skip && skip === elem.nodeName.toLowerCase()) {\n elem = elem[dir] || elem;\n } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking\n\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n };\n }\n\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n\n return true;\n } : matchers[0];\n }\n\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n\n return results;\n }\n\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n\n return newUnmatched;\n }\n\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary\n [] : // ...otherwise use results directly\n results : matcherIn; // Find primary matches\n\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n } // Apply postFilter\n\n\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn\n\n i = temp.length;\n\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n\n postFinder(null, matcherOut = [], temp, xml);\n } // Move matched elements from seed to results to keep them synchronized\n\n\n i = matcherOut.length;\n\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n } // Add elements to results, through postFinder if defined\n\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)\n\n checkContext = null;\n return ret;\n }];\n\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher\n\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n\n matchers.push(matcher);\n }\n }\n\n return elementMatcher(matchers);\n }\n\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function superMatcher(seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n } // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\n\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0; // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n } // Track unmatched elements for set filters\n\n\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n } // Lengthen the array for every element, matched or not\n\n\n if (seed) {\n unmatched.push(elem);\n }\n }\n } // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n\n\n matchedCount += i; // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n\n if (bySet && i !== matchedCount) {\n j = 0;\n\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n } // Discard index placeholder values to get only actual matches\n\n\n setMatched = condense(setMatched);\n } // Add matches to results\n\n\n push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting\n\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n } // Override manipulation of globals by nested matchers\n\n\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n\n return unmatched;\n };\n\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n\n compile = Sizzle.compile = function (selector, match\n /* Internal Use Only */\n ) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n\n i = match.length;\n\n while (i--) {\n cached = matcherFromTokens(match[i]);\n\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n } // Cache the compiled function\n\n\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization\n\n cached.selector = selector;\n }\n\n return cached;\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 */\n\n\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || []; // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n\n if (!context) {\n return results; // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n\n selector = selector.slice(tokens.shift().value.length);\n } // Fetch a seed set for right-to-left matching\n\n\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n\n while (i--) {\n token = tokens[i]; // Abort if we hit a combinator\n\n if (Expr.relative[type = token.type]) {\n break;\n }\n\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n\n break;\n }\n }\n }\n } // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n\n\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }; // One-time assignments\n // Sort stability\n\n\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando; // Support: Chrome 14-35+\n // Always assume duplicates if they aren't passed to the comparison function\n\n support.detectDuplicates = !!hasDuplicate; // Initialize against the default document\n\n setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n }); // Support: IE<8\n // Prevent attribute/property \"interpolation\"\n // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n\n if (!assert(function (el) {\n el.innerHTML = \"<a href='#'></a>\";\n return el.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n } // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n\n\n if (!support.attributes || !assert(function (el) {\n el.innerHTML = \"<input/>\";\n el.firstChild.setAttribute(\"value\", \"\");\n return el.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, _name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n } // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n\n\n if (!assert(function (el) {\n return el.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n\n return Sizzle;\n }(window);\n\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors; // Deprecated\n\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n jQuery.escapeSelector = Sizzle.escape;\n\n var dir = function dir(elem, _dir, until) {\n var matched = [],\n truncate = until !== undefined;\n\n while ((elem = elem[_dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n\n matched.push(elem);\n }\n }\n\n return matched;\n };\n\n var _siblings = function siblings(n, elem) {\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n\n return matched;\n };\n\n var rneedsContext = jQuery.expr.match.needsContext;\n\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n\n ;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i; // Implement the identical functionality for filter and not\n\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n } // Single element\n\n\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n } // Arraylike of elements (jQuery, arguments, Array)\n\n\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n } // Filtered directly for both simple and complex selectors\n\n\n return jQuery.filter(qualifier, elements, not);\n }\n\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n\n jQuery.fn.extend({\n find: function find(selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n\n ret = this.pushStack([]);\n\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function filter(selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function not(selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function is(selector) {\n return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n }); // Initialize a jQuery object\n // A central reference to the root jQuery(document)\n\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n // Strict HTML recognition (#11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem; // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\n if (!selector) {\n return this;\n } // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n\n\n root = root || rootjQuery; // Handle HTML strings\n\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n } // Match html or make sure no context is specified for #id\n\n\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)\n\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]); // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n\n return this; // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n\n return this;\n } // HANDLE: $(expr, $(...))\n\n } else if (!context || context.jquery) {\n return (context || root).find(selector); // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n } // HANDLE: $(DOMElement)\n\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this; // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present\n selector(jQuery);\n }\n\n return jQuery.makeArray(selector, this);\n }; // Give the init function the jQuery prototype for later instantiation\n\n\n init.prototype = jQuery.fn; // Initialize central reference\n\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function has(target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function closest(selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context\n\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function index(elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n } // Index in selector\n\n\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n } // Locate the position of the desired element\n\n\n return indexOf.call(this, // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function add(selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function addBack(selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n\n return cur;\n }\n\n jQuery.each({\n parent: function parent(elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function parents(elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function parentsUntil(elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function next(elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function prev(elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function nextAll(elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function prevAll(elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function nextUntil(elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function prevUntil(elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function siblings(elem) {\n return _siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function children(elem) {\n return _siblings(elem.firstChild);\n },\n contents: function contents(elem) {\n if (elem.contentDocument != null && // Support: IE 11+\n // <object> elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n\n\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n } // Reverse order for parents* and prev-derivatives\n\n\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g; // Convert String-formatted options into Object-formatted ones\n\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\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 */\n\n\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n\n var // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n _fired,\n // Flag to prevent firing\n _locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function fire() {\n // Enforce single-firing\n _locked = _locked || options.once; // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n\n _fired = firing = true;\n\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n } // Forget the data if we're done with it\n\n\n if (!options.memory) {\n memory = false;\n }\n\n firing = false; // Clean up if we're done firing for good\n\n if (_locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = []; // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function add() {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n\n if (memory && !firing) {\n fire();\n }\n }\n\n return this;\n },\n // Remove a callback from the list\n remove: function remove() {\n jQuery.each(arguments, function (_, arg) {\n var index;\n\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1); // Handle firing indexes\n\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function has(fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function empty() {\n if (list) {\n list = [];\n }\n\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function disable() {\n _locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function disabled() {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function lock() {\n _locked = queue = [];\n\n if (!memory && !firing) {\n list = memory = \"\";\n }\n\n return this;\n },\n locked: function locked() {\n return !!_locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function fireWith(context, args) {\n if (!_locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n\n if (!firing) {\n fire();\n }\n }\n\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function fire() {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function fired() {\n return !!_fired;\n }\n };\n\n return self;\n };\n\n function Identity(v) {\n return v;\n }\n\n function Thrower(ex) {\n throw ex;\n }\n\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject); // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject); // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n } // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n\n jQuery.extend({\n Deferred: function Deferred(func) {\n var tuples = [// action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n _state = \"pending\",\n _promise = {\n state: function state() {\n return _state;\n },\n always: function always() {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function _catch(fn) {\n return _promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function pipe()\n /* fnDone, fnFail, fnProgress */\n {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function then(onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function mightThrow() {\n var returned, then; // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n\n if (depth < maxDepth) {\n return;\n }\n\n returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n } // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n\n\n then = returned && ( // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n _typeof(returned) === \"object\" || typeof returned === \"function\") && returned.then; // Handle a returned thenable\n\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n } // Handle all other returned values\n\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n } // Process the value(s)\n // Default process is resolve\n\n\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.stackTrace);\n } // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n\n\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n\n deferred.rejectWith(that, args);\n }\n }\n }; // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n\n\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the stack, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getStackHook) {\n process.stackTrace = jQuery.Deferred.getStackHook();\n }\n\n window.setTimeout(process);\n }\n };\n }\n\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )\n\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )\n\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function promise(obj) {\n return obj != null ? jQuery.extend(obj, _promise) : _promise;\n }\n },\n deferred = {}; // Add list-specific methods\n\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5]; // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n\n _promise[tuple[1]] = list.add; // Handle state\n\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n _state = stateString;\n }, // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable, // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable, // progress_callbacks.lock\n tuples[0][2].lock, // progress_handlers.lock\n tuples[0][3].lock);\n } // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n\n\n list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n }; // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n\n\n deferred[tuple[0] + \"With\"] = list.fireWith;\n }); // Make the deferred a promise\n\n _promise.promise(deferred); // Call given func if any\n\n\n if (func) {\n func.call(deferred, deferred);\n } // All done!\n\n\n return deferred;\n },\n // Deferred helper\n when: function when(singleValue) {\n var // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = _slice.call(arguments),\n // the master Deferred\n master = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function updateFunc(i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;\n\n if (! --remaining) {\n master.resolveWith(resolveContexts, resolveValues);\n }\n };\n }; // Single- and empty arguments are adopted like Promise.resolve\n\n\n if (remaining <= 1) {\n adoptValue(singleValue, master.done(updateFunc(i)).resolve, master.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)\n\n if (master.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return master.then();\n }\n } // Multiple arguments are aggregated like Promise.all array elements\n\n\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), master.reject);\n }\n\n return master.promise();\n }\n }); // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n jQuery.Deferred.exceptionHook = function (error, stack) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, stack);\n }\n };\n\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n }; // The deferred used on DOM ready\n\n\n var readyList = jQuery.Deferred();\n\n jQuery.fn.ready = function (fn) {\n readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n [\"catch\"](function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See #6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function ready(wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n } // Remember that the DOM is ready\n\n\n jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be\n\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n } // If there are functions bound, to execute\n\n\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method\n\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n } // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n\n\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed); // A fallback to window.onload, that will always work\n\n window.addEventListener(\"load\", completed);\n } // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n\n\n var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null; // Sets many values\n\n if (toType(key) === \"object\") {\n chainable = true;\n\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n } // Sets one value\n\n } else if (value !== undefined) {\n chainable = true;\n\n if (!isFunction(value)) {\n raw = true;\n }\n\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null; // ...except when executing function values\n } else {\n bulk = fn;\n\n fn = function fn(elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n\n if (chainable) {\n return elems;\n } // Gets\n\n\n if (bulk) {\n return fn.call(elems);\n }\n\n return len ? fn(elems[0], key) : emptyGet;\n }; // Matches dashed string for camelizing\n\n\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()\n\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n } // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (#9572)\n\n\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n\n var acceptData = function acceptData(owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n\n Data.uid = 1;\n Data.prototype = {\n cache: function cache(owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando]; // If not, create one\n\n if (!value) {\n value = {}; // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value; // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n\n return value;\n },\n set: function set(owner, data, value) {\n var prop,\n cache = this.cache(owner); // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n\n return cache;\n },\n get: function get(owner, key) {\n return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function access(owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n } // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n\n\n this.set(owner, key, value); // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n\n return value !== undefined ? value : key;\n },\n remove: function remove(owner, key) {\n var i,\n cache = owner[this.expando];\n\n if (cache === undefined) {\n return;\n }\n\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key); // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n\n i = key.length;\n\n while (i--) {\n delete cache[key[i]];\n }\n } // Remove the expando if there's no more data\n\n\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function hasData(owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data(); //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n\n if (data === \"false\") {\n return false;\n }\n\n if (data === \"null\") {\n return null;\n } // Only convert to a number if it doesn't change the string\n\n\n if (data === +data + \"\") {\n return +data;\n }\n\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n\n return data;\n }\n\n function dataAttr(elem, key, data) {\n var name; // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {} // Make sure we set the data so it isn't changed later\n\n\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n\n return data;\n }\n\n jQuery.extend({\n hasData: function hasData(elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function data(elem, name, _data) {\n return dataUser.access(elem, name, _data);\n },\n removeData: function removeData(elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function _data(elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function _removeData(elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function data(key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes; // Gets all values\n\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (#14894)\n if (attrs[i]) {\n name = attrs[i].name;\n\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n\n return data;\n } // Sets multiple values\n\n\n if (_typeof(key) === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n\n return access(this, function (value) {\n var data; // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n\n if (data !== undefined) {\n return data;\n } // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n\n\n data = dataAttr(elem, key);\n\n if (data !== undefined) {\n return data;\n } // We tried really hard, but the data doesn't exist.\n\n\n return;\n } // Set the data...\n\n\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function removeData(key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function queue(elem, type, data) {\n var queue;\n\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup\n\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n\n return queue || [];\n }\n },\n dequeue: function dequeue(elem, type) {\n type = type || \"fx\";\n\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function next() {\n jQuery.dequeue(elem, type);\n }; // If the fx queue is dequeued, always remove the progress sentinel\n\n\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n } // Clear up the last queue stop function\n\n\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function _queueHooks(elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function queue(type, data) {\n var setter = 2;\n\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue\n\n jQuery._queueHooks(this, type);\n\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function dequeue(type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function clearQueue(type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function promise(type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function resolve() {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n\n type = type || \"fx\";\n\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n\n var isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n\n\n if (documentElement.getRootNode) {\n isAttached = function isAttached(elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n\n var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem; // Inline style trumps all\n\n return elem.style.display === \"none\" || elem.style.display === \"\" && // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2; // Trust units reported by jQuery.css\n\n unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point\n\n initialInUnit = +initial || 1;\n\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n\n initialInUnit = initialInUnit / scale;\n }\n\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on\n\n valueParts = valueParts || [];\n }\n\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified\n\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n\n return adjusted;\n }\n\n var defaultDisplayMap = {};\n\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n\n if (display) {\n return display;\n }\n\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n\n if (display === \"none\") {\n display = \"block\";\n }\n\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length; // Determine new display value for elements that need to change\n\n for (; index < length; index++) {\n elem = elements[index];\n\n if (!elem.style) {\n continue;\n }\n\n display = elem.style.display;\n\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\"; // Remember what we're overwriting\n\n dataPriv.set(elem, \"display\", display);\n }\n }\n } // Set the display of the elements in a second loop to avoid constant reflow\n\n\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n\n return elements;\n }\n\n jQuery.fn.extend({\n show: function show() {\n return showHide(this, true);\n },\n hide: function hide() {\n return showHide(this);\n },\n toggle: function toggle(state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\"); // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (#11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (#14901)\n\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input); // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only\n // IE <=9 replaces <option> tags with their contents when inserted outside of\n // the select element.\n\n div.innerHTML = \"<option></option>\";\n support.option = !!div.lastChild;\n })(); // We have to close these tags to support XHTML (#13200)\n\n\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td; // Support: IE <=9 only\n\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"<select multiple='multiple'>\", \"</select>\"];\n }\n\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (#15151)\n var ret;\n\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n\n return ret;\n } // Mark scripts as having already been evaluated\n\n\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n\n var rhtml = /<|&#?\\w+;/;\n\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n\n for (; i < l; i++) {\n elem = elems[i];\n\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\")); // Deserialize a standard representation\n\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content\n\n j = wrap[0];\n\n while (j--) {\n tmp = tmp.lastChild;\n } // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n\n\n jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container\n\n tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392)\n\n tmp.textContent = \"\";\n }\n }\n } // Remove wrapper from fragment\n\n\n fragment.textContent = \"\";\n i = 0;\n\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n\n continue;\n }\n\n attached = isAttached(elem); // Append to fragment\n\n tmp = getAll(fragment.appendChild(elem), \"script\"); // Preserve script evaluation history\n\n if (attached) {\n setGlobalEval(tmp);\n } // Capture executables\n\n\n if (scripts) {\n j = 0;\n\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n\n return fragment;\n }\n\n var rkeyEvent = /^key/,\n rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous, except when they are no-op.\n // So expect focus to be synchronous when the element is already active,\n // and blur to be synchronous when the element is not already active.\n // (focus and blur are always synchronous in other supported browsers,\n // this just defines when we can count on it).\n\n\n function expectSync(elem, type) {\n return elem === safeActiveElement() === (type === \"focus\");\n } // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n\n\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n function _on(elem, types, selector, data, fn, one) {\n var origFn, type; // Types can be a map of types/handlers\n\n if (_typeof(types) === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n\n for (type in types) {\n _on(elem, type, selector, data, types[type], one);\n }\n\n return elem;\n }\n\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n\n if (one === 1) {\n origFn = fn;\n\n fn = function fn(event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n }; // Use same guid so caller can remove using origFn\n\n\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\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 */\n\n\n jQuery.event = {\n global: {},\n add: function add(elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem); // Only attach events to objects that accept data\n\n if (!acceptData(elem)) {\n return;\n } // Caller can pass in an object of custom data in lieu of the handler\n\n\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n } // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\n\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n } // Make sure that the handler has a unique ID, used to find/remove it later\n\n\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n } // Init the element's event structure and main handler, if this is the first\n\n\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n } // Handle multiple events separated by a space\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // There *must* be a type, no attaching namespace-only handlers\n\n if (!type) {\n continue;\n } // If event changes its type, use the special event handlers for the changed type\n\n\n special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type\n\n type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type\n\n special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers\n\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn); // Init the event handler queue if we're the first\n\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false\n\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n\n if (special.add) {\n special.add.call(elem, handleObj);\n\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n } // Add to the element's handler list, delegates in front\n\n\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n } // Keep track of which events have ever been used, for event optimization\n\n\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function remove(elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n\n if (!elemData || !(events = elemData.events)) {\n return;\n } // Once for each type.namespace in types; type may be omitted\n\n\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort(); // Unbind all events (on this namespace, if provided) for the element\n\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n\n continue;\n }\n\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"); // Remove matching events\n\n origCount = j = handlers.length;\n\n while (j--) {\n handleObj = handlers[j];\n\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n } // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n\n\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n\n delete events[type];\n }\n } // Remove data and the expando if it's no longer used\n\n\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function dispatch(nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event\n\n args[0] = event;\n\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired\n\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n } // Determine handlers\n\n\n handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us\n\n i = 0;\n\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n } // Call the postDispatch hook for the mapped type\n\n\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n\n return event.result;\n },\n handlers: function handlers(event, _handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = _handlers.delegateCount,\n cur = event.target; // Find delegate handlers\n\n if (delegateCount && // Support: IE <=9\n // Black-hole SVG <use> instance trees (trac-13180)\n cur.nodeType && // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (#13208)\n // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n\n for (i = 0; i < delegateCount; i++) {\n handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (#13203)\n\n sel = handleObj.selector + \" \";\n\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n } // Add the remaining (directly-bound) handlers\n\n\n cur = this;\n\n if (delegateCount < _handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: _handlers.slice(delegateCount)\n });\n }\n\n return handlerQueue;\n },\n addProp: function addProp(name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function set(value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function fix(originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function setup(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Claim the first handler\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", returnTrue);\n } // Return false to allow normal processing in the caller\n\n\n return false;\n },\n trigger: function trigger(data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data; // Force setup before triggering a click\n\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n } // Return non-false to allow normal event-path propagation\n\n\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function _default(event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function postDispatch(event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n }; // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n\n function leverageNative(el, type, expectSync) {\n // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n if (!expectSync) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n\n return;\n } // Register the controller as a special universal handler for all event namespaces\n\n\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function handler(event) {\n var notAsync,\n result,\n saved = dataPriv.get(this, type);\n\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n // Saved data should be false in such cases, but might be a leftover capture object\n // from an async native handler (gh-4350)\n if (!saved.length) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = _slice.call(arguments);\n dataPriv.set(this, type, saved); // Trigger the native event and capture its result\n // Support: IE <=9 - 11+\n // focus() and blur() are asynchronous\n\n notAsync = expectSync(this, type);\n this[type]();\n result = dataPriv.get(this, type);\n\n if (saved !== result || notAsync) {\n dataPriv.set(this, type, false);\n } else {\n result = {};\n }\n\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result.value;\n } // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering the\n // native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n } // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n\n } else if (saved.length) {\n // ...and capture the result\n dataPriv.set(this, type, {\n value: jQuery.event.trigger( // Support: IE <=9 - 11+\n // Extend with the prototype to reset the above stopImmediatePropagation()\n jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)\n }); // Abort handling of the native event\n\n event.stopImmediatePropagation();\n }\n }\n });\n }\n\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n } // Event object\n\n\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type; // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse; // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (#504, #13143)\n\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget; // Event type\n } else {\n this.type = src;\n } // Put explicitly provided properties onto the event object\n\n\n if (props) {\n jQuery.extend(this, props);\n } // Create a timestamp if incoming event doesn't have one\n\n\n this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed\n\n this[jQuery.expando] = true;\n }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n\n\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function preventDefault() {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function stopPropagation() {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function stopImmediatePropagation() {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n\n this.stopPropagation();\n }\n }; // Includes all common event props including KeyEvent and MouseEvent specific props\n\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: function which(event) {\n var button = event.button; // Add which for key events\n\n if (event.which == null && rkeyEvent.test(event.type)) {\n return event.charCode != null ? event.charCode : event.keyCode;\n } // Add which for click: 1 === left; 2 === middle; 3 === right\n\n\n if (!event.which && button !== undefined && rmouseEvent.test(event.type)) {\n if (button & 1) {\n return 1;\n }\n\n if (button & 2) {\n return 3;\n }\n\n if (button & 4) {\n return 2;\n }\n\n return 0;\n }\n\n return event.which;\n }\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function setup() {\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller\n\n return false;\n },\n trigger: function trigger() {\n // Force setup before trigger\n leverageNative(this, type); // Return non-false to allow normal event-path propagation\n\n return true;\n },\n delegateType: delegateType\n };\n }); // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function handle(event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function on(types, selector, data, fn) {\n return _on(this, types, selector, data, fn);\n },\n one: function one(types, selector, data, fn) {\n return _on(this, types, selector, data, fn, 1);\n },\n off: function off(types, selector, fn) {\n var handleObj, type;\n\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n\n if (_typeof(types) === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n\n return this;\n }\n\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n\n if (fn === false) {\n fn = returnFalse;\n }\n\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g; // Prefer a tbody over its parent table for containing new rows\n\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n\n return elem;\n } // Replace/restore the type attribute of script elements for safe DOM manipulation\n\n\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n\n return elem;\n }\n\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n\n if (dest.nodeType !== 1) {\n return;\n } // 1. Copy private data: events, handlers, etc.\n\n\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n } // 2. Copy user data\n\n\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n } // Fix IE bugs, see support tests\n\n\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.\n\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit\n\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n\n domManip(self, args, callback, ignored);\n });\n }\n\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n\n if (fragment.childNodes.length === 1) {\n fragment = first;\n } // Require either new content or an interest in ignored elements to invoke the callback\n\n\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length; // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (#8070).\n\n for (; i < l; i++) {\n node = fragment;\n\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration\n\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n\n callback.call(collection[i], node, i);\n }\n\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument; // Reenable scripts\n\n jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion\n\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n\n return collection;\n }\n\n function _remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n\n node.parentNode.removeChild(node);\n }\n }\n\n return elem;\n }\n\n jQuery.extend({\n htmlPrefilter: function htmlPrefilter(html) {\n return html;\n },\n clone: function clone(elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem); // Fix IE cloning issues\n\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n } // Copy the events from the original to the clone\n\n\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n } // Preserve script evaluation history\n\n\n destElements = getAll(clone, \"script\");\n\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n } // Return the cloned set\n\n\n return clone;\n },\n cleanData: function cleanData(elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n } // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n\n\n elem[dataPriv.expando] = undefined;\n }\n\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function detach(selector) {\n return _remove(this, selector, true);\n },\n remove: function remove(selector) {\n return _remove(this, selector);\n },\n text: function text(value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function append() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function prepend() {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function before() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function after() {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function empty() {\n var elem,\n i = 0;\n\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes\n\n elem.textContent = \"\";\n }\n }\n\n return this;\n },\n clone: function clone(dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function html(value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n } // See if we can take a shortcut and just use innerHTML\n\n\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n\n try {\n for (; i < l; i++) {\n elem = this[i] || {}; // Remove element nodes and prevent memory leaks\n\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n\n elem = 0; // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function replaceWith() {\n var ignored = []; // Make the changes, replacing each non-ignored context element with the new content\n\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n\n if (parent) {\n parent.replaceChild(elem, this);\n }\n } // Force callback invocation\n\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n\n push.apply(ret, elems.get());\n }\n\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n\n var getStyles = function getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n };\n\n var swap = function swap(elem, options, callback) {\n var ret,\n name,\n old = {}; // Remember the old values, and insert the new ones\n\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n\n ret = callback.call(elem); // Revert the old values\n\n for (name in options) {\n elem.style[name] = old[name];\n }\n\n return ret;\n };\n\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n\n div = null;\n }\n\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\"); // Finish early in limited (non-browser) environments\n\n if (!div.style) {\n return;\n } // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (#8908)\n\n\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function boxSizingReliable() {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function pixelBoxStyles() {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function pixelPosition() {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function reliableMarginLeft() {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function scrollboxSize() {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n reliableTrDimensions: function reliableTrDimensions() {\n var table, tr, trChild, trStyle;\n\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px\";\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height) > 3;\n documentElement.removeChild(table);\n }\n\n return reliableTrDimensionsVal;\n }\n });\n })();\n\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem); // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, #12537)\n // .css('--customProperty) (#3144)\n\n if (computed) {\n ret = computed.getPropertyValue(name) || computed[name];\n\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n } // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n\n\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth; // Put in the new values to get a computed value out\n\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width; // Revert the changed values\n\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n\n return ret !== undefined ? // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function get() {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n } // Hook needed; redefine it so that the support test is not executed again.\n\n\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {}; // Return a vendor-prefixed property or undefined\n\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n\n while (i--) {\n name = cssPrefixes[i] + capName;\n\n if (name in emptyStyle) {\n return name;\n }\n }\n } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n\n\n function finalPropName(name) {\n var _final = jQuery.cssProps[name] || vendorProps[name];\n\n if (_final) {\n return _final;\n }\n\n if (name in emptyStyle) {\n return name;\n }\n\n return vendorProps[name] = vendorPropName(name) || name;\n }\n\n var // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n rcustomProp = /^--/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ? // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0; // Adjustment may not be necessary\n\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n if (box === \"margin\") {\n delta += jQuery.css(elem, box + cssExpand[i], true, styles);\n } // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\n\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles); // For \"border\" or \"margin\", add border\n\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles); // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n } // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n } // For \"content\" or \"padding\", subtract border\n\n\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n } // Account for positive content-box scroll gutter when requested by providing computedVal\n\n\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n\n return delta;\n }\n\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n\n val = \"auto\";\n } // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n\n\n if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") || // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" || // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") && // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n\n valueIsBorderBox = offsetProp in elem;\n\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n } // Normalize \"\" and auto\n\n\n val = parseFloat(val) || 0; // Adjust for the element's box model\n\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function get(elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n \"animationIterationCount\": true,\n \"columnCount\": true,\n \"fillOpacity\": true,\n \"flexGrow\": true,\n \"flexShrink\": true,\n \"fontWeight\": true,\n \"gridArea\": true,\n \"gridColumn\": true,\n \"gridColumnEnd\": true,\n \"gridColumnStart\": true,\n \"gridRow\": true,\n \"gridRowEnd\": true,\n \"gridRowStart\": true,\n \"lineHeight\": true,\n \"opacity\": true,\n \"order\": true,\n \"orphans\": true,\n \"widows\": true,\n \"zIndex\": true,\n \"zoom\": true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function style(elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n } // Make sure that we're working with the right name\n\n\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style; // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Gets hook for the prefixed version, then unprefixed version\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value\n\n if (value !== undefined) {\n type = _typeof(value); // Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret); // Fixes bug #9237\n\n type = \"number\";\n } // Make sure that null and NaN values aren't set (#7116)\n\n\n if (value == null || value !== value) {\n return;\n } // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n\n\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n } // background-* props affect original clone's values\n\n\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n } // If a hook was provided, use that value, otherwise just set the specified value\n\n\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n } // Otherwise just get the value from the style object\n\n\n return style[name];\n }\n },\n css: function css(elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n\n if (!isCustomProp) {\n name = finalPropName(origName);\n } // Try prefixed name followed by the unprefixed name\n\n\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there\n\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n } // Otherwise, if a way to get the computed value exists, use that\n\n\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n } // Convert \"normal\" to computed value\n\n\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n } // Make numeric if forced or a qualifier was provided and val looks numeric\n\n\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function get(elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && ( // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function set(elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n } // Convert to pixels if value adjustment is needed\n\n\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n }); // These hooks are used by animate to expand properties\n\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function expand(value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n\n return expanded;\n }\n };\n\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function css(name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n\n return map;\n }\n\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function init(elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function cur() {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function run(percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n\n this.now = (this.end - this.start) * eased + this.start;\n\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function get(tween) {\n var result; // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n } // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n\n\n result = jQuery.css(tween.elem, tween.prop, \"\"); // Empty strings, null, undefined and \"auto\" are converted to 0.\n\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function set(tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n }; // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function set(tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function linear(p) {\n return p;\n },\n swing: function swing(p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point\n\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n\n jQuery.fx.tick();\n }\n } // Animations created synchronously will run synchronously\n\n\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n } // Generate parameters to create a standard animation\n\n\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n }; // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n\n includeWidth = includeWidth ? 1 : 0;\n\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n\n return attrs;\n }\n\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\"); // Queue-skipping animations hijack the fx hooks\n\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n } // Detect show/hide animations\n\n\n for (prop in props) {\n value = props[prop];\n\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true; // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n } // Bail out if this is a no-op like .hide().hide()\n\n\n propTween = !jQuery.isEmptyObject(props);\n\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n } // Restrict \"overflow\" and \"display\" styles during box animations\n\n\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade\n\n restoreDisplay = dataShow && dataShow.display;\n\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n\n display = jQuery.css(elem, \"display\");\n\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n } // Animate inline elements as inline-block\n\n\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n\n style.display = \"inline-block\";\n }\n }\n }\n\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n } // Implement show/hide animations\n\n\n propTween = false;\n\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n } // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\n\n if (toggle) {\n dataShow.hidden = !hidden;\n } // Show elements before animating them\n\n\n if (hidden) {\n showHide([elem], true);\n }\n /* eslint-disable no-loop-func */\n\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n\n dataPriv.remove(elem, \"fxshow\");\n\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n } // Per-property setup\n\n\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass\n\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n\n hooks = jQuery.cssHooks[name];\n\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name]; // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function tick() {\n if (stopped) {\n return false;\n }\n\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n\n deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield\n\n if (percent < 1 && length) {\n return remaining;\n } // If this was an empty animation, synthesize a final progress notification\n\n\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n } // Resolve the animation and report its conclusion\n\n\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function createTween(prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function stop(gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n\n if (stopped) {\n return this;\n }\n\n stopped = true;\n\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n } // Resolve when we played the last frame; otherwise, reject\n\n\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n\n return this;\n }\n }),\n props = animation.props;\n\n propFilter(props, animation.opts.specialEasing);\n\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n\n return result;\n }\n }\n\n jQuery.map(props, createTween, animation);\n\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n } // Attach callbacks from options\n\n\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function tweener(props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n\n var prop,\n index = 0,\n length = props.length;\n\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function prefilter(callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && _typeof(speed) === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n }; // Go to the end state if fx are off\n\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n } // Normalize opt.queue - true/undefined/null -> \"fx\"\n\n\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n } // Queueing\n\n\n opt.old = opt.complete;\n\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n\n return opt;\n };\n\n jQuery.fn.extend({\n fadeTo: function fadeTo(speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show() // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function animate(prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function doAnimation() {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately\n\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function stop(type, clearQueue, gotoEnd) {\n var stopQueue = function stopQueue(hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n } // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n\n\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function finish(type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0; // Enable finishing flag on private data\n\n data.finish = true; // Empty the queue first\n\n jQuery.queue(this, type, []);\n\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n } // Look for any active animations, and finish them\n\n\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n } // Look for any animations in the old queue and finish them\n\n\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n } // Turn off finishing flag\n\n\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n }); // Generate shortcuts for custom animations\n\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n\n for (; i < timers.length; i++) {\n timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)\n\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n\n if (!timers.length) {\n jQuery.fx.stop();\n }\n\n fxNow = undefined;\n };\n\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n\n jQuery.fx.interval = 13;\n\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n\n inProgress = true;\n schedule();\n };\n\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n }; // Based off of the plugin by Clint Helfers, with permission.\n // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\n\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\"; // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n\n support.checkOn = input.value !== \"\"; // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n\n support.optSelected = opt.selected; // Support: IE <=11 only\n // An input loses its value after becoming a radio\n\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function attr(name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function removeAttr(name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function attr(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n } // Fallback to prop when attributes are not supported\n\n\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n } // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n elem.setAttribute(name, value + \"\");\n return value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined\n\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function set(elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n\n if (val) {\n elem.value = val;\n }\n\n return value;\n }\n }\n }\n },\n removeAttr: function removeAttr(elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n }); // Hooks for boolean attributes\n\n boolHook = {\n set: function set(elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function prop(name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function removeProp(name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function prop(elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes\n\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n\n return elem[name] = value;\n }\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function get(elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n // Use proper attribute retrieval(#12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n }); // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n // eslint rule \"no-unused-expressions\" is disabled for this code\n // since it considers such accessions noop\n\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function get(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n\n return null;\n },\n set: function set(elem) {\n /* eslint no-unused-expressions: \"off\" */\n var parent = elem.parentNode;\n\n if (parent) {\n parent.selectedIndex;\n\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n }); // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n\n return [];\n }\n\n jQuery.fn.extend({\n addClass: function addClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem);\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n if (cur.indexOf(\" \" + clazz + \" \") < 0) {\n cur += clazz + \" \";\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n removeClass: function removeClass(value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n\n classes = classesToArray(value);\n\n if (classes.length) {\n while (elem = this[i++]) {\n curValue = getClass(elem); // This expression is here for better compressibility (see addClass)\n\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n\n if (cur) {\n j = 0;\n\n while (clazz = classes[j++]) {\n // Remove *all* instances\n while (cur.indexOf(\" \" + clazz + \" \") > -1) {\n cur = cur.replace(\" \" + clazz + \" \", \" \");\n }\n } // Only assign if different to avoid unneeded rendering.\n\n\n finalValue = stripAndCollapse(cur);\n\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n\n return this;\n },\n toggleClass: function toggleClass(value, stateVal) {\n var type = _typeof(value),\n isValidValue = type === \"string\" || Array.isArray(value);\n\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n\n return this.each(function () {\n var className, i, self, classNames;\n\n if (isValidValue) {\n // Toggle individual class names\n i = 0;\n self = jQuery(this);\n classNames = classesToArray(value);\n\n while (className = classNames[i++]) {\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n } // Toggle whole class name\n\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n } // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n\n\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function hasClass(selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function val(value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n\n ret = elem.value; // Handle most common string cases\n\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n } // Handle cases where value is null/undef or number\n\n\n return ret == null ? \"\" : ret;\n }\n\n return;\n }\n\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n\n if (this.nodeType !== 1) {\n return;\n }\n\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n } // Treat null/undefined as \"\"; convert numbers to string\n\n\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting\n\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function get(elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val : // Support: IE <=10 - 11 only\n // option.text throws exceptions (#14686, #14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function get(elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n } // Loop through all the selected options\n\n\n for (; i < max; i++) {\n option = options[i]; // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (#2551)\n\n if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val(); // We don't need an array for one selects\n\n if (one) {\n return value;\n } // Multi-Selects return an array\n\n\n values.push(value);\n }\n }\n\n return values;\n },\n set: function set(elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n\n while (i--) {\n option = options[i];\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n /* eslint-enable no-cond-assign */\n\n } // Force browsers to behave consistently when non-matching value is set\n\n\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n\n return values;\n }\n }\n }\n }); // Radios and checkboxes getter/setter\n\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function set(elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n }); // Return jQuery for attributes-only inclusion\n\n support.focusin = \"onfocusin\" in window;\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function stopPropagationCallback(e) {\n e.stopPropagation();\n };\n\n jQuery.extend(jQuery.event, {\n trigger: function trigger(event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes\n\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n } // focus/blur morphs to focusin/out; ensure we're not firing them right now\n\n\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n\n ontype = type.indexOf(\":\") < 0 && \"on\" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string\n\n event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === \"object\" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null; // Clean up the event in case it is being reused\n\n event.result = undefined;\n\n if (!event.target) {\n event.target = elem;\n } // Clone any incoming data and prepend the event, creating the handler arg list\n\n\n data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines\n\n special = jQuery.event.special[type] || {};\n\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n } // Determine event propagation path in advance, per W3C events spec (#9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\n\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n } // Only add window if we got to document (e.g., not plain obj or detached DOM)\n\n\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n } // Fire handlers on the event path\n\n\n i = 0;\n\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler\n\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n\n if (handle) {\n handle.apply(cur, data);\n } // Native handler\n\n\n handle = ontype && cur[ontype];\n\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n\n event.type = type; // If nobody prevented the default action, do it now\n\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (#6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n\n if (tmp) {\n elem[ontype] = null;\n } // Prevent re-triggering of the same event, since we already bubbled it above\n\n\n jQuery.event.triggered = type;\n\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n\n elem[type]();\n\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n\n jQuery.event.triggered = undefined;\n\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function simulate(type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function trigger(type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function triggerHandler(type, data) {\n var elem = this[0];\n\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n }); // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\n if (!support.focusin) {\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (orig, fix) {\n // Attach a single capturing handler on the document while someone wants focusin/focusout\n var handler = function handler(event) {\n jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n };\n\n jQuery.event.special[fix] = {\n setup: function setup() {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix);\n\n if (!attaches) {\n doc.addEventListener(orig, handler, true);\n }\n\n dataPriv.access(doc, fix, (attaches || 0) + 1);\n },\n teardown: function teardown() {\n var doc = this.ownerDocument || this.document || this,\n attaches = dataPriv.access(doc, fix) - 1;\n\n if (!attaches) {\n doc.removeEventListener(orig, handler, true);\n dataPriv.remove(doc, fix);\n } else {\n dataPriv.access(doc, fix, attaches);\n }\n }\n };\n });\n }\n\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/; // Cross-browser xml parsing\n\n jQuery.parseXML = function (data) {\n var xml;\n\n if (!data || typeof data !== \"string\") {\n return null;\n } // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n\n\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {\n xml = undefined;\n }\n\n if (!xml || xml.getElementsByTagName(\"parsererror\").length) {\n jQuery.error(\"Invalid XML: \" + data);\n }\n\n return xml;\n };\n\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n\n function buildParams(prefix, obj, traditional, add) {\n var name;\n\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (_typeof(v) === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n } // Serialize an array of form elements or a set of\n // key/values into a query string\n\n\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function add(key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n\n if (a == null) {\n return \"\";\n } // If an array was passed in, assume that it is an array of form elements.\n\n\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n } // Return the resulting serialization\n\n\n return s.join(\"&\");\n };\n\n jQuery.fn.extend({\n serialize: function serialize() {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function serializeArray() {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type; // Use .is( \":disabled\" ) so that fieldset[disabled] works\n\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n\n if (val == null) {\n return null;\n }\n\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // #7653, #8125, #8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href; // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n } // Base inspection function for prefilters and transports\n\n\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n } // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes #9887\n\n\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n\n return target;\n }\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n\n\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process\n\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n } // Check if we're dealing with a known content-type\n\n\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n } // Check to see if we have a response for the expected dataType\n\n\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n\n if (!firstDataType) {\n firstDataType = type;\n }\n } // Or just use first one\n\n\n finalDataType = finalDataType || firstDataType;\n } // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n\n\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n\n return responses[finalDataType];\n }\n }\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n\n\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys\n\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n\n current = dataTypes.shift(); // Convert to each sequential dataType\n\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n } // Apply the dataFilter if provided\n\n\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n\n prev = current;\n current = dataTypes.shift();\n\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev; // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current]; // If none found, seek a pair\n\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2]; // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n\n break;\n }\n }\n }\n } // Apply converter (if not an equivalence)\n\n\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s[\"throws\"]) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n\n return {\n state: \"success\",\n data: response\n };\n }\n\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function ajaxSetup(target, settings) {\n return settings ? // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function ajax(url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (_typeof(url) === \"object\") {\n options = url;\n url = undefined;\n } // Force options to be an object\n\n\n options = options || {};\n\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n _statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function getResponseHeader(key) {\n var match;\n\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function getAllResponseHeaders() {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function setRequestHeader(name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function overrideMimeType(type) {\n if (completed == null) {\n s.mimeType = type;\n }\n\n return this;\n },\n // Status-dependent callbacks\n statusCode: function statusCode(map) {\n var code;\n\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n _statusCode[code] = [_statusCode[code], map[code]];\n }\n }\n }\n\n return this;\n },\n // Cancel the request\n abort: function abort(statusText) {\n var finalText = statusText || strAbort;\n\n if (transport) {\n transport.abort(finalText);\n }\n\n done(0, finalText);\n return this;\n }\n }; // Attach deferreds\n\n\n deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (#10093: consistency with old signature)\n // We also use the url parameter if available\n\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\"); // Alias method option to type as per ticket #12004\n\n s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list\n\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"]; // A cross-domain request is in order when the origin doesn't match the current origin.\n\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\"); // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n\n try {\n urlAnchor.href = s.url; // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n } // Convert data if not already a string\n\n\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n } // Apply prefilters\n\n\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there\n\n if (completed) {\n return jqXHR;\n } // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\n\n fireGlobals = jQuery.event && s.global; // Watch for a new set of requests\n\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n } // Uppercase the type\n\n\n s.type = s.type.toUpperCase(); // Determine if request has content\n\n s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n\n cacheURL = s.url.replace(rhash, \"\"); // More options handling for requests with no content\n\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url\n\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data; // #9682: remove data so that it's not used in an eventual retry\n\n delete s.data;\n } // Add or update anti-cache param if needed\n\n\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n } // Put hash and anti-cache on the URL that will be requested (gh-1732)\n\n\n s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\n\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n } // Set the correct header, if data is being sent\n\n\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n } // Set the Accepts header for the server, depending on the dataType\n\n\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]); // Check for headers option\n\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n } // Allow custom headers/mimetypes and early abort\n\n\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n } // Aborting is no longer a cancellation\n\n\n strAbort = \"abort\"; // Install callbacks on deferreds\n\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error); // Get transport\n\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort\n\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1; // Send global event\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n } // If request was aborted inside ajaxSend, stop there\n\n\n if (completed) {\n return jqXHR;\n } // Timeout\n\n\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n } // Propagate others as results\n\n\n done(-1, e);\n }\n } // Callback for when everything is done\n\n\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText; // Ignore repeat invocations\n\n if (completed) {\n return;\n }\n\n completed = true; // Clear timeout if it exists\n\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n } // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n\n\n transport = undefined; // Cache response headers\n\n responseHeadersString = headers || \"\"; // Set readyState\n\n jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful\n\n isSuccess = status >= 200 && status < 300 || status === 304; // Get response data\n\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n } // Use a noop converter for missing script\n\n\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1) {\n s.converters[\"text script\"] = function () {};\n } // Convert no matter what (that way responseXXX fields are always set)\n\n\n response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining\n\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n\n modified = jqXHR.getResponseHeader(\"etag\");\n\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n } // if no content\n\n\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\"; // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\"; // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n\n if (status || !statusText) {\n statusText = \"error\";\n\n if (status < 0) {\n status = 0;\n }\n }\n } // Set data for the fake xhr object\n\n\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\"; // Success/Error\n\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n } // Status-dependent callbacks\n\n\n jqXHR.statusCode(_statusCode);\n _statusCode = undefined;\n\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n } // Complete\n\n\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]); // Handle the global AJAX counter\n\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n\n return jqXHR;\n },\n getJSON: function getJSON(url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function getScript(url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n } // The url can be an options object (which then must have .url)\n\n\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (#11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function textScript() {}\n },\n dataFilter: function dataFilter(response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n\n jQuery.fn.extend({\n wrapAll: function wrapAll(html) {\n var wrap;\n\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n } // The elements to wrap the target around\n\n\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n\n wrap.map(function () {\n var elem = this;\n\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n\n return elem;\n }).append(this);\n }\n\n return this;\n },\n wrapInner: function wrapInner(html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function wrap(html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function unwrap(selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // #1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var _callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest\n\n\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function send(headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided\n\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n } // Override mime type if needed\n\n\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n } // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n\n\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n } // Set headers\n\n\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n } // Callback\n\n\n _callback = function callback(type) {\n return function () {\n if (_callback) {\n _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete( // File: protocol always yields status 0; see #8605, #14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n }; // Listen to events\n\n\n xhr.onload = _callback();\n errorCallback = xhr.onerror = xhr.ontimeout = _callback(\"error\"); // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (_callback) {\n errorCallback();\n }\n });\n }\n };\n } // Create the abort callback\n\n\n _callback = _callback(\"abort\");\n\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // #14683: Only rethrow if this hasn't been notified as an error yet\n if (_callback) {\n throw e;\n }\n }\n },\n abort: function abort() {\n if (_callback) {\n _callback();\n }\n }\n };\n }\n }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n }); // Install script dataType\n\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function textScript(text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n }); // Handle cache's special case and crossDomain\n\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n }); // Bind script tag hack transport\n\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, _callback2;\n\n return {\n send: function send(_, complete) {\n script = jQuery(\"<script>\").attr(s.scriptAttrs || {}).prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", _callback2 = function callback(evt) {\n script.remove();\n _callback2 = null;\n\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n }); // Use native DOM manipulation to avoid our domManip AJAX trickery\n\n document.head.appendChild(script[0]);\n },\n abort: function abort() {\n if (_callback2) {\n _callback2();\n }\n }\n };\n }\n });\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/; // Default jsonp settings\n\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function jsonpCallback() {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce.guid++;\n this[callback] = true;\n return callback;\n }\n }); // Detect, normalize options and install callbacks for jsonp requests\n\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\"); // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; // Insert callback into url or form data\n\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n } // Use data converter to retrieve json after script execution\n\n\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n\n return responseContainer[0];\n }; // Force json dataType\n\n\n s.dataTypes[0] = \"json\"; // Install callback\n\n overwritten = window[callbackName];\n\n window[callbackName] = function () {\n responseContainer = arguments;\n }; // Clean-up function (fires after converters)\n\n\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName); // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n } // Save back as free\n\n\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback; // Save the callback name for future use\n\n oldCallbacks.push(callbackName);\n } // Call if it was a function and we have a response\n\n\n if (responseContainer && isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n\n responseContainer = overwritten = undefined;\n }); // Delegate to script\n\n return \"script\";\n }\n }); // Support: Safari 8 only\n // In Safari 8 documents created via document.implementation.createHTMLDocument\n // collapse sibling forms: the second one becomes a child of the first one.\n // Because of that, this security measure has to be disabled in Safari 8.\n // https://bugs.webkit.org/show_bug.cgi?id=137337\n\n support.createHTMLDocument = function () {\n var body = document.implementation.createHTMLDocument(\"\").body;\n body.innerHTML = \"<form></form><form></form>\";\n return body.childNodes.length === 2;\n }(); // Argument \"data\" should be string of html\n // context (optional): If specified, the fragment will be created in this context,\n // defaults to document\n // keepScripts (optional): If true, will include scripts passed in the html string\n\n\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (typeof data !== \"string\") {\n return [];\n }\n\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n\n var base, parsed, scripts;\n\n if (!context) {\n // Stop scripts or inline event handlers from being executed immediately\n // by using document.implementation\n if (support.createHTMLDocument) {\n context = document.implementation.createHTMLDocument(\"\"); // Set the base href for the created document\n // so any parsed elements with URLs\n // are based on the document's URL (gh-2965)\n\n base = context.createElement(\"base\");\n base.href = document.location.href;\n context.head.appendChild(base);\n } else {\n context = document;\n }\n }\n\n parsed = rsingleTag.exec(data);\n scripts = !keepScripts && []; // Single tag\n\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n\n parsed = buildFragment([data], context, scripts);\n\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n\n return jQuery.merge([], parsed.childNodes);\n };\n /**\n * Load a url into a page\n */\n\n\n jQuery.fn.load = function (url, params, callback) {\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n\n if (off > -1) {\n selector = stripAndCollapse(url.slice(off));\n url = url.slice(0, off);\n } // If it's a function\n\n\n if (isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined; // Otherwise, build a param string\n } else if (params && _typeof(params) === \"object\") {\n type = \"POST\";\n } // If we have elements to modify, make the request\n\n\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ? // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) : // Otherwise use the full result\n responseText); // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n\n return this;\n };\n\n jQuery.expr.pseudos.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n\n jQuery.offset = {\n setOffset: function setOffset(elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {}; // Set position first, in-case top/left are set even on static elem\n\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1; // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n\n if (isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n if (typeof props.top === \"number\") {\n props.top += \"px\";\n }\n\n if (typeof props.left === \"number\") {\n props.left += \"px\";\n }\n\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n // offset() relates an element's border box to the document origin\n offset: function offset(options) {\n // Preserve chaining for setter\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n\n var rect,\n win,\n elem = this[0];\n\n if (!elem) {\n return;\n } // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n\n\n if (!elem.getClientRects().length) {\n return {\n top: 0,\n left: 0\n };\n } // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\n\n rect = elem.getBoundingClientRect();\n win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n },\n // position() relates an element's margin box to its offset parent's padding box\n // This corresponds to the behavior of CSS absolute positioning\n position: function position() {\n if (!this[0]) {\n return;\n }\n\n var offsetParent,\n offset,\n doc,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n }; // position:fixed elements are offset from the viewport, which itself always has zero offset\n\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume position:fixed implies availability of getBoundingClientRect\n offset = elem.getBoundingClientRect();\n } else {\n offset = this.offset(); // Account for the *real* offset parent, which can be the document or its root element\n // when a statically positioned element is identified\n\n doc = elem.ownerDocument;\n offsetParent = elem.offsetParent || doc.documentElement;\n\n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.parentNode;\n }\n\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n // Incorporate borders into its offset, since they are outside its content origin\n parentOffset = jQuery(offsetParent).offset();\n parentOffset.top += jQuery.css(offsetParent, \"borderTopWidth\", true);\n parentOffset.left += jQuery.css(offsetParent, \"borderLeftWidth\", true);\n }\n } // Subtract parent offsets and element margins\n\n\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function offsetParent() {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement;\n });\n }\n }); // Create scrollLeft and scrollTop methods\n\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n // Coalesce documents and windows\n var win;\n\n if (isWindow(elem)) {\n win = elem;\n } else if (elem.nodeType === 9) {\n win = elem.defaultView;\n }\n\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n }); // Support: Safari <=7 - 9.1, Chrome <=37 - 49\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n\n jQuery.each([\"top\", \"left\"], function (_i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop); // If curCSS returns percentage, fallback to offset\n\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n }); // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n\n if (isWindow(elem)) {\n // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n return funcName.indexOf(\"outer\") === 0 ? elem[\"inner\" + name] : elem.document.documentElement[\"client\" + name];\n } // Get document width or height\n\n\n if (elem.nodeType === 9) {\n doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n\n return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) : // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable);\n };\n });\n });\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (_i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n jQuery.fn.extend({\n bind: function bind(types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function unbind(types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function delegate(selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function undelegate(selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n },\n hover: function hover(fnOver, fnOut) {\n return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);\n }\n });\n jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup contextmenu\").split(\" \"), function (_i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n }); // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n\n var rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g; // Bind a function to a context, optionally partially applying any\n // arguments.\n // jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n // However, it is not slated for removal any time soon\n\n jQuery.proxy = function (fn, context) {\n var tmp, args, proxy;\n\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n } // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n\n\n if (!isFunction(fn)) {\n return undefined;\n } // Simulated bind\n\n\n args = _slice.call(arguments, 2);\n\n proxy = function proxy() {\n return fn.apply(context || this, args.concat(_slice.call(arguments)));\n }; // Set the guid of unique handler to the same of original handler, so it can be removed\n\n\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n };\n\n jQuery.holdReady = function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n };\n\n jQuery.isArray = Array.isArray;\n jQuery.parseJSON = JSON.parse;\n jQuery.nodeName = nodeName;\n jQuery.isFunction = isFunction;\n jQuery.isWindow = isWindow;\n jQuery.camelCase = camelCase;\n jQuery.type = toType;\n jQuery.now = Date.now;\n\n jQuery.isNumeric = function (obj) {\n // As of jQuery 3.0, isNumeric is limited to\n // strings and numbers (primitives or objects)\n // that can be coerced to finite numbers (gh-2662)\n var type = jQuery.type(obj);\n return (type === \"number\" || type === \"string\") && // parseFloat NaNs numeric-cast false positives (\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n !isNaN(obj - parseFloat(obj));\n };\n\n jQuery.trim = function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"\");\n }; // Register as a named AMD module, since jQuery can be concatenated with other\n // files that may use define, but not via a proper concatenation script that\n // understands anonymous AMD modules. A named AMD is safest and most robust\n // way to register. Lowercase jquery is used because AMD module names are\n // derived from file names, and jQuery is normally delivered in a lowercase\n // file name. Do this after creating the global so that if an AMD module wants\n // to call noConflict to hide this version of jQuery, it will work.\n // Note that for maximum portability, libraries that are not jQuery should\n // declare themselves as anonymous modules, and avoid setting a global if an\n // AMD loader is present. jQuery is a special case. For more information, see\n // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n\n if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n\n var // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n\n return jQuery;\n }; // Expose jQuery and $ identifiers, even in AMD\n // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n // and CommonJS for browser emulators (#13566)\n\n\n if (typeof noGlobal === \"undefined\") {\n window.jQuery = window.$ = jQuery;\n }\n\n return jQuery;\n});","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","import _debounce from 'lodash/debounce'\n\nexport default class Like {\n constructor(classname, sns_animation = false, rootElement = document) {\n this.sns_animation = sns_animation\n this.classname = classname\n this.$buttons = rootElement.querySelectorAll(this.classname)\n this.hide_event = null\n this.long_touch_event = null\n\n if (this.$buttons.length < 1) return\n\n this.$buttons.forEach((elem, n) => this.clickEvent(elem))\n this.$buttons.forEach((elem, n) => this.hoverEvent(elem))\n this.$buttons.forEach((elem, n) => this.touchEvent(elem))\n }\n\n animationend(e) {\n setTimeout(() => {\n e.target.classList.add('like-anime-hidden')\n e.target.classList.remove('like-animation')\n }, 500)\n }\n\n hoverEvent(elem) {\n const reactionPopup = document.querySelector(\n `${this.classname}-popup[data-value=\"${elem.dataset.value}\"]`\n )\n if (!reactionPopup) return\n\n elem.addEventListener(\n 'mouseout',\n () => {\n this.popupHide(reactionPopup)\n }\n )\n elem.addEventListener(\n 'mouseover',\n () => {\n this.popupShowWithTimer(reactionPopup)\n reactionPopup.addEventListener('mouseover', () => {\n this.popupShow(reactionPopup)\n })\n reactionPopup.addEventListener('mouseout', () => {\n this.popupHide(reactionPopup)\n })\n }\n )\n }\n clickEvent(elem) {\n const eyecatch = document.querySelector(\n `${this.classname}-animation[data-value=\"${elem.dataset.value}\"]`\n )\n const reactionPopup = document.querySelector(\n `${this.classname}-popup[data-value=\"${elem.dataset.value}\"]`\n )\n\n if (this.sns_animation === true) {\n eyecatch.removeEventListener('animationend', this.animationend)\n eyecatch.addEventListener('animationend', this.animationend)\n }\n\n elem.addEventListener(\n 'click',\n _debounce(() => {\n if (!elem.dataset.method) return\n // 連打対ç–\n elem.disabled = !elem.disabled;\n if (elem.dataset.method === 'post' && this.sns_animation === true) {\n eyecatch.classList.remove('like-anime-hidden')\n eyecatch.classList.add('like-animation')\n }\n if (reactionPopup){\n reactionPopup.classList.add('popup_hide')\n }\n return this.formAction(elem)\n }, 400)\n )\n }\n\n async formAction({ dataset }) {\n let reactionParam = ''\n if (dataset.reaction != null){\n reactionParam = `&like_reaction_attributes[community_reaction_id]=${dataset.reaction}`\n }\n const response = await fetch(\n `${dataset.url}?${dataset.key}_id=${dataset.value}${reactionParam}`,\n {\n method: dataset.method,\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document\n .querySelector('meta[name=csrf-token]')\n .getAttribute('content'),\n },\n }\n )\n\n const text = await response.text()\n // $.ajaxã®evalã®ä»£æ›¿ã—ã§`XXX.js.haml`ã®å‡¦ç†ã‚’実施\n await Function(`\"use strict\";return (${text})`)()\n\n // 上記`XXX.js.haml`ã§ç”Ÿæˆã•ã‚ŒãŸDOMã«Eventを付与\n const replacedButton = document.querySelector(\n `${this.classname}[data-key=\"${dataset.key}\"][data-value=\"${dataset.value}\"]`\n )\n\n replacedButton.classList.add(\n dataset.method === 'delete' ? '-unfilled' : '-filled'\n )\n\n this.clickEvent(replacedButton)\n this.hoverEvent(replacedButton)\n this.touchEvent(replacedButton)\n const reactionPopup = document.querySelector(\n `${this.classname}-popup[data-value=\"${dataset.value}\"]`\n )\n if (!reactionPopup) return\n const replacedButtons = reactionPopup.querySelectorAll(\n `${this.classname}[data-key=\"${dataset.key}\"][data-value=\"${dataset.value}\"]`\n )\n replacedButtons.forEach((elem, n) => { this.clickEvent(elem) })\n\n }\n\n isLessMD() {\n if (window.matchMedia && window.matchMedia('(max-device-width: 640px)').matches) {\n return true;\n } else {\n return false;\n }\n }\n\n touchEvent(elem) {\n if (!this.isLessMD()){ return; }\n\n const reactionPopup = document.querySelector(\n `${this.classname}-popup[data-value=\"${elem.dataset.value}\"]`\n )\n if (!reactionPopup) return\n\n elem.addEventListener(\n 'touchstart',\n (e) => {\n e.preventDefault()\n this.long_touch_event = setTimeout(() => {\n this.popupShowWithTimer(reactionPopup,5000)\n this.long_touch_event = null\n }, 500)\n }\n )\n elem.addEventListener(\n 'touchend',\n (e) => {\n if (this.long_touch_event){\n clearTimeout(this.long_touch_event)\n e.target.click()\n }\n const reactionButtons = document.querySelectorAll(\n `.c-Button-reaction[data-value=\"${elem.dataset.value}\"]`\n )\n reactionButtons.forEach((elem, n) => { \n if (elem.classList.contains('hovered')){\n elem.click()\n elem.classList.remove('hovered')\n return;\n }\n })\n this.popupHide(reactionPopup)\n }\n )\n elem.addEventListener(\n 'touchmove',\n (e) => {\n const touch = e.touches[0];\n const targetElement = document.elementFromPoint(touch.clientX, touch.clientY);\n const reactionButtons = document.querySelectorAll(\n `.c-Button-reaction[data-value=\"${elem.dataset.value}\"]`\n )\n reactionButtons.forEach((elem, n) => { \n if (elem === targetElement.closest('.c-Button-reaction')){\n elem.classList.add('hovered')\n }else{\n elem.classList.remove('hovered')\n }\n })\n }\n )\n }\n\n popupShowWithTimer(popupElem,duration = 1000) {\n popupElem.classList.remove('popup_hide')\n this.popupHide(popupElem,duration)\n }\n\n popupShow(popupElem) {\n if (this.hide_event){\n clearTimeout(this.hide_event)\n }\n popupElem.classList.remove('popup_hide')\n }\n\n popupHide(popupElem,duration = 1000) {\n if (this.hide_event){\n clearTimeout(this.hide_event)\n }\n this.hide_event = setTimeout(() => {\n popupElem.classList.add('popup_hide')\n }, duration)\n }\n}\n"],"sourceRoot":""}