{"version":3,"sources":["webpack:///./node_modules/vue-full-calendar/components/FullCalendar.vue?9640","webpack:///node_modules/vue-full-calendar/components/FullCalendar.vue","webpack:///./node_modules/vue-full-calendar/components/FullCalendar.vue?d16e","webpack:///./node_modules/vue-full-calendar/components/FullCalendar.vue","webpack:///./node_modules/lodash.defaultsdeep/index.js","webpack:///./node_modules/vue-sweet-calendar/dist/SweetCalendar.umd.min.js","webpack:///./node_modules/vue-full-calendar/node_modules/fullcalendar/dist/fullcalendar.js","webpack:///./node_modules/vue-full-calendar/node_modules/jquery/dist/jquery.js","webpack:///./node_modules/vue-date-pick/dist/vueDatePick.js"],"names":["render","_vm","this","_h","$createElement","_c","_self","ref","attrs","staticRenderFns","component","LARGE_ARRAY_SIZE","HASH_UNDEFINED","HOT_COUNT","HOT_SPAN","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reRegExpChar","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","global","Object","freeSelf","self","root","Function","freeExports","exports","nodeType","freeModule","module","moduleExports","freeProcess","process","nodeUtil","types","require","binding","e","nodeIsTypedArray","isTypedArray","apply","func","thisArg","args","length","call","baseTimes","n","iteratee","index","result","Array","baseUnary","value","getValue","object","key","undefined","overArg","transform","arg","arrayProto","prototype","funcProto","objectProto","coreJsData","funcToString","toString","hasOwnProperty","maskSrcKey","uid","exec","keys","IE_PROTO","nativeObjectToString","objectCtorString","reIsNative","RegExp","replace","Buffer","Symbol","Uint8Array","allocUnsafe","getPrototype","getPrototypeOf","objectCreate","create","propertyIsEnumerable","splice","symToStringTag","toStringTag","defineProperty","getNative","nativeIsBuffer","isBuffer","nativeMax","Math","max","nativeNow","Date","now","Map","nativeCreate","baseCreate","proto","isObject","Hash","entries","clear","entry","set","hashClear","__data__","size","hashDelete","has","hashGet","data","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","lastIndex","pop","listCacheGet","listCacheHas","listCacheSet","push","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","get","mapCacheHas","mapCacheSet","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArr","isArray","isArg","isArguments","isBuff","isType","skipIndexes","String","isIndex","assignMergeValue","eq","baseAssignValue","assignValue","objValue","array","baseFor","createBaseFor","baseGetTag","getRawTag","objectToString","baseIsArguments","isObjectLike","baseIsNative","isMasked","pattern","isFunction","test","toSource","baseIsTypedArray","isLength","baseKeysIn","nativeKeysIn","isProto","isPrototype","baseMerge","source","srcIndex","customizer","stack","srcValue","baseMergeDeep","newValue","safeGet","keysIn","mergeFunc","stacked","isCommon","isTyped","isArrayLikeObject","copyArray","cloneBuffer","cloneTypedArray","isPlainObject","toPlainObject","initCloneObject","baseRest","start","setToString","overRest","identity","baseSetToString","string","constant","buffer","isDeep","slice","constructor","copy","cloneArrayBuffer","arrayBuffer","byteLength","typedArray","byteOffset","copyObject","props","isNew","createAssigner","assigner","sources","guard","isIterateeCall","fromRight","keysFunc","iterable","customDefaultsMerge","map","isKeyable","isOwn","tag","unmasked","type","isArrayLike","Ctor","arguments","otherArgs","shortOut","count","lastCalled","stamp","remaining","other","stubFalse","defaultsDeep","mergeWith","t","r","o","i","l","m","c","d","enumerable","__esModule","bind","p","s","a","u","f","y","v","h","g","b","x","_","w","min","1169","getOwnPropertyDescriptor","1495","defineProperties","P","repeat","1654","_t","_i","done","1691","split","S","valueOf","TypeError","setPrototypeOf","document","createElement","inspectSource","join","style","display","appendChild","src","contentWindow","open","write","close","F","store","3024","O","j","D","k","M","T","A","C","next","name","values","documentElement","3702","ceil","floor","isNaN","callee","4562","4588","configurable","4630","writable","from","5168","5176","assign","5537","version","mode","copyright","5559","__e","G","B","U","core","W","R","random","concat","virtual","6821","fill","charCodeAt","charAt","Reflect","construct","7514","find","7726","window","__g","getIteratorMethod","getIterator","8378","8436","__proto__","check","9003","9093","getOwnPropertyNames","9138","9306","forEach","isIterable","9744","RangeError","getOwnPropertySymbols","a159","a3c3","a5b2","a745","aa28","aa77","trim","aebd","b0dc","b447","b8e3","be13","bf0b","c189","c366","c367","_k","Arguments","c3a1","c5f6","NaN","parseInt","c69a","c8bb","ca5a","cb7c","cd1c","ce10","d2d5","d3f4","d864","d8e8","d9f6","dbdb","e11e","e472","e4ae","e53d","e6f3","e853","ead6","f410","f772","fa5b","fab2","fae3","currentScript","match","id","staticClass","on","click","prevMonth","_v","_s","selectedMonthName","selectedYear","nextMonth","_l","weekdays","title","days","generateBeforeStyle","_e","class","getDate","getDay","offDays","includes","toDateString","today","generateDayStyle","generateAfterStyle","sham","Proxy","setHours","_date","getMonth","toLocaleString","month","getFullYear","getTime","weekday","setDate","toISOString","getTimezoneOffset","E","date","computed","startWeekDayOfMonth","firstDayOfWeek","numberOfDays","selectedMonth","getFirstWeekdayOfMonth","getNumberOfDaysInMonth","getMonthName","methods","generateWeekdayNames","shift","isInRange","end","eventCategories","categoryId","color","textColor","backgroundColor","fontWeight","events","return","getPrevDay","getNextDay","goToday","initialDate","default","Number","beforeMount","parse","I","options","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","beforeCreate","N","L","isSelected","selectDay","Y","$emit","iso","timeZoneOffset","selectedDate","V","$","fdef","factory","__WEBPACK_EXTERNAL_MODULE_0__","__WEBPACK_EXTERNAL_MODULE_3__","modules","installedModules","__webpack_require__","moduleId","getter","property","extendStatics","__extends","__","moment","compensateScroll","rowEls","scrollbarWidths","left","css","right","uncompensateScroll","disableCursor","addClass","enableCursor","removeClass","distributeHeight","els","availableHeight","shouldRedistribute","minOffset1","minOffset2","flexEls","flexOffsets","flexHeights","usedHeight","undistributeHeight","each","el","minOffset","naturalOffset","outerHeight","height","naturalHeight","newHeight","matchCellWidths","maxInnerWidth","innerEl","innerWidth","outerWidth","width","subtractInnerElHeight","outerEl","diff","both","position","getScrollParent","scrollParent","parents","filter","ownerDocument","getOuterRect","origin","offset","top","bottom","getClientRect","getScrollbarWidths","getCssFloat","clientWidth","clientHeight","getContentRect","widths","leftRightWidth","offsetWidth","bottomWidth","offsetHeight","sanitizeScrollbarWidth","getIsLeftRtlScrollbars","round","_isLeftRtlScrollbars","computeIsLeftRtlScrollbars","border","padding","overflow","direction","appendTo","children","res","remove","prop","parseFloat","isPrimaryMouseButton","ev","which","ctrlKey","getEvX","touches","originalEvent","pageX","getEvY","pageY","getEvIsTouch","preventSelection","preventDefault","allowSelection","off","intersectRects","rect1","rect2","constrainPoint","point","rect","getRectCenter","diffPoints","point1","point2","parseFieldSpecs","input","token","specs","tokens","field","substring","order","compareByFieldSpecs","obj1","obj2","fieldSpecs","obj1fallback","obj2fallback","cmp","compareByFieldSpec","fieldSpec","val1","val2","flexibleCompare","localeCompare","diffDayTime","duration","clone","stripTime","ms","time","diffDay","diffByUnit","unit","computeGreatestUnit","val","unitsDesc","computeRangeAs","isInt","computeDurationGreatestUnit","durationInput","isDuration","as","divideRangeByDuration","dur","months","durationHasTime","asMonths","abs","asDays","divideDurationByDuration","dur1","dur2","months1","months2","multiplyDuration","Boolean","hours","minutes","seconds","milliseconds","isNativeDate","isTimeString","str","log","console","warn","dayIDs","hasOwnPropMethod","mergeProps","propObjs","complexProps","complexObjs","dest","unshift","copyOwnProps","name_1","hasOwnProp","obj","applyAll","functions","thisObj","ret","removeMatching","testFunc","removeCnt","removeExact","exactVal","isArraysEqual","a0","a1","len","firstDefined","htmlEscape","stripHtmlEntities","text","cssToStr","cssProps","statements","attrsToStr","parts","capitaliseFirstLetter","toUpperCase","compareNumbers","proxy","methodName","method","debounce","wait","immediate","timeout","context","timestamp","later","last","setTimeout","callNow","moment_ext_1","UnzonedRange","startInput","endInput","isStart","isEnd","isMoment","stripZone","startMs","endMs","invertRanges","ranges","constraintRange","dateRange","invertedRanges","sort","compareUnzonedRanges","intersect","otherRange","newRange","intersectsWith","containsRange","innerRange","containsDate","constrainDate","equals","range","getStart","utc","getEnd","range1","range2","tslib_1","ParsableModelMixin_1","Class_1","EventDefParser_1","EventSource","_super","calendar","_this","className","uuid","rawInput","applyProps","normalizeId","fetch","timezone","removeEventDefsById","eventDefId","removeAllEventDefs","getPrimitive","otherSource","parseEventDefs","rawEventDefs","eventDef","eventDefs","parseEventDef","calendarTransform","opt","sourceTransform","eventDataTransform","applyManualStandardProps","rawProps","defineStandardProps","copyVerbatimStandardProps","mixInto","borderColor","editable","startEditable","durationEditable","rendering","overlap","constraint","allDayDefault","Mixin_1","guid","ListenerMixin","listenTo","callback","eventName","getListenerNamespace","stopListeningTo","listenerId","EventDef_1","EventInstance_1","EventDateProfile_1","SingleEventDef","buildInstances","buildInstance","dateProfile","isAllDay","def","rezone","superSuccess","miscProps","allDay","util_1","ambigDateOfMonthRegex","ambigTimeOrZoneRegex","newMomentProto","fn","oldMomentProto","extend","momentProperties","oldMomentFormat","mom","formatStr","format","momentExt","makeMoment","parseAsUTC","parseZone","isAmbigTime","isAmbigZone","ambigMatch","isSingleString","_ambigTime","_ambigZone","utcOffset","_fullCalendar","hasTime","week","weeks","weekCalc","_locale","_fullCalendar_weekCalc","isoWeek","dayHours","wasAmbigTime","hasZone","local","keepLocalTime","tzo","ComponentFootprint","unzonedRange","toLegacy","msToMoment","EmitterMixin","handler","_prepareIntercept","one","intercept","extra","trigger","triggerHandler","triggerWith","hasHandlers","hash","_data","Interaction","view","_getView","Mixin","destClass","mixOver","UnzonedRange_1","EventDateProfile","buildUnzonedRange","forcedAllDay","forceEventDuration","isValid","isAfter","getDefaultEventEnd","isStandardProp","propName","DragListener_1","HitDragListener","handleInteractionStart","subjectRect","origPoint","subjectEl","hitsNeeded","computeScrollBounds","origHit","queryHit","subjectCenter","coordAdjust","handleDragStart","hit","handleHitOver","handleDrag","dx","dy","isHitsEqual","handleHitOut","handleDragEnd","handleHitDone","isOrig","handleInteractionEnd","isCancelled","hitsNotNeeded","handleScrollEnd","isDragging","releaseHits","prepareHits","hit0","hit1","isHitPropsWithin","subHit","superHit","internalApiVersion","date_formatting_1","formatDate","formatRange","queryMostGranularFormatUnit","locale_1","datepickerLocale","locale","getMomentLocaleData","populateInstanceComputableOptions","util_2","eventDefsToEventInstances","eventFootprintToComponentFootprint","eventInstanceToEventRange","eventInstanceToUnzonedRange","eventRangeToEventFootprint","EmitterMixin_1","ListenerMixin_1","Model_1","Model","Constraints_1","Constraints","DateProfileGenerator_1","DateProfileGenerator","ComponentFootprint_1","BusinessHourGenerator_1","BusinessHourGenerator","EventPeriod_1","EventPeriod","EventManager_1","EventManager","EventDef","EventDefMutation_1","EventDefMutation","EventDefParser","EventInstance","EventRange_1","EventRange","RecurringEventDef_1","RecurringEventDef","SingleEventDef_1","EventDefDateMutation_1","EventDefDateMutation","EventSourceParser_1","EventSourceParser","EventSource_1","ThemeRegistry_1","defineThemeSystem","getThemeSystemClass","EventInstanceGroup_1","EventInstanceGroup","ArrayEventSource_1","ArrayEventSource","FuncEventSource_1","FuncEventSource","JsonFeedEventSource_1","JsonFeedEventSource","EventFootprint_1","EventFootprint","Class","CoordCache_1","CoordCache","Iterator_1","Iterator","DragListener","HitDragListener_1","MouseFollower_1","MouseFollower","ParsableModelMixin","Popover_1","Popover","Promise_1","Promise","TaskQueue_1","TaskQueue","RenderQueue_1","RenderQueue","Scroller_1","Scroller","Theme_1","Theme","Component_1","Component","DateComponent_1","DateComponent","InteractiveDateComponent_1","InteractiveDateComponent","Calendar_1","Calendar","View_1","View","ViewRegistry_1","defineView","getViewConfig","DayTableMixin_1","DayTableMixin","BusinessHourRenderer_1","BusinessHourRenderer","EventRenderer_1","EventRenderer","FillRenderer_1","FillRenderer","HelperRenderer_1","HelperRenderer","ExternalDropping_1","ExternalDropping","EventResizing_1","EventResizing","EventPointing_1","EventPointing","EventDragging_1","EventDragging","DateSelecting_1","DateSelecting","DateClicking_1","DateClicking","Interaction_1","StandardInteractionsMixin_1","StandardInteractionsMixin","AgendaView_1","AgendaView","TimeGrid_1","TimeGrid","TimeGridEventRenderer_1","TimeGridEventRenderer","TimeGridFillRenderer_1","TimeGridFillRenderer","TimeGridHelperRenderer_1","TimeGridHelperRenderer","DayGrid_1","DayGrid","DayGridEventRenderer_1","DayGridEventRenderer","DayGridFillRenderer_1","DayGridFillRenderer","DayGridHelperRenderer_1","DayGridHelperRenderer","BasicView_1","BasicView","BasicViewDateProfileGenerator_1","BasicViewDateProfileGenerator","MonthView_1","MonthView","MonthViewDateProfileGenerator_1","MonthViewDateProfileGenerator","ListView_1","ListView","ListEventPointing_1","ListEventPointing","ListEventRenderer_1","ListEventRenderer","eventInstances","eventInstance","eventRange","eventFootprint","componentFootprint","getAllEventRanges","sliceNormalRenderRanges","sliceRenderRanges","isInverse","sliceInverseRenderRanges","slicedRange","slicedEventRanges","unzonedRanges","ownerDef","getEventDef","hasInverseRendering","explicitEventDef","PromiseStub","executor","deferred","Deferred","promise","resolve","attachImmediatelyResolvingThen","reject","attachImmediatelyRejectingThen","then","onResolve","onReject","optionsManager","processIconOverride","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","iconClasses","applyIconOverridePrefix","prefix","iconOverridePrefix","indexOf","getClass","classes","getIconClass","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","exportHooks","touchMouseIgnoreWait","globalEmitter","neededCount","GlobalEmitter","isTouching","mouseIgnoreDepth","needed","unneeded","unbind","touchstart","handleTouchStart","touchcancel","handleTouchCancel","touchend","handleTouchEnd","mousedown","handleMouseDown","mousemove","handleMouseMove","mouseup","handleMouseUp","handleClick","selectstart","handleSelectStart","contextmenu","handleContextMenu","addEventListener","handleTouchMoveProxy","handleTouchMove","Event","passive","handleScrollProxy","handleScroll","removeEventListener","stopTouch","shouldIgnoreMouse","skipMouseIgnore","startTouchMouseIgnore","viewName","viewConfig","viewHash","views","options_1","localeOptionHash","locales","dpComputableOptions","buttonText","dpOptions","prev","prevText","nextText","currentText","monthYearFormat","showMonthAfterYear","yearSuffix","momComputableOptions","dayOfMonthFormat","momOptions","fcOptions","longDateFormat","isRTL","mediumTimeFormat","smallTimeFormat","extraSmallTimeFormat","hourFormat","noMeridiemTimeFormat","instanceComputableOptions","smallDayDateFormat","weekFormat","weekNumberTitle","smallWeekFormat","localeCode","dpLocaleCode","weekHeader","jqDatePicker","datepicker","regional","en","setDefaults","newFcOptions","mergeOptions","globalDefaults","localeData","englishDefaults","titleRangeSeparator","defaultTimedEventDuration","defaultAllDayEventDuration","nextDayThreshold","columnHeader","defaultView","aspectRatio","header","center","weekends","weekNumbers","weekNumberCalculation","scrollTime","minTime","maxTime","showNonCurrentDates","lazyFetching","startParam","endParam","timezoneParam","prevYear","nextYear","year","day","allDayText","agendaEventMinHeight","theme","dragOpacity","dragRevertDuration","dragScroll","unselectAuto","dropAccept","eventOrder","eventLimit","eventLimitText","eventLimitClick","dayPopoverFormat","handleWindowResize","windowResizeDelay","longPressDelay","rtlDefaults","buttonIcons","themeButtonIcons","complexOptions","optionObjs","getEventLegacy","members","SubClass","mixin","eventInput","generateId","rawId","getRendering","hasBgRendering","getConstraint","getOverlap","isStartExplicitlyEditable","isDurationExplicitlyEditable","isExplicitlyEditable","_id","applyMiscProps","url","sourceClasses","registerClass","EventSourceClass","eventSource","createFromRawProps","largeUnit","dateMutation","defMutation","dateProps","standardProps","verbatimStandardProps","createFromDiff","mutateSingle","origDateProfile","buildNewDateProfile","setDateMutation","isEmpty","clearEnd","forceTimed","forceAllDay","dateProfile0","dateProfile1","dateDelta","endDiff","endDelta","mutation","subtractDates","date1","date0","subtract","setDateDelta","setEndDelta","eventDateProfile","shouldRezone","startDelta","applyTimezone","setStartDelta","overflowX","overflowY","renderEl","applyOverflow","scrollEl","setHeight","destroy","lockOverflow","scrollWidth","scrollHeight","getScrollTop","scrollTop","setScrollTop","getClientWidth","getClientHeight","GlobalEmitter_1","_view","_options","segSelector","dateSelectingClass","dateClicking","dateClickingClass","dateSelecting","eventPointingClass","eventPointing","eventDraggingClass","eventDragging","eventResizingClass","eventResizing","externalDroppingClass","externalDropping","setElement","bindToEl","bindAllSegHandlersToEl","removeElement","endInteractions","executeEventUnrender","bindGlobalHandlers","bindToDocument","unbindGlobalHandlers","unbindFromDocument","bindDateHandlerToEl","target","is","eventInteraction","bindSegHandlerToEl","segEl","currentTarget","seg","shouldIgnoreEventPointing","shouldIgnoreTouch","selectedEvent","isResizing","canStartSelection","canStartResize","isEventDefDraggable","footprint","isEventDefResizable","canStartDrag","isEventDefSelected","interaction","isEventDefStartEditable","isEditable","isEventDefGenerallyEditable","isEventDefResizableFromStart","isEventDefResizableFromEnd","isResizable","diffDates","isEventInstanceGroupAllowed","eventInstanceGroup","eventFootprints","eventRangesToEventFootprints","validUnzonedRange","constraints","isExternalInstanceGroupAllowed","isSelectionFootprintAllowed","viewSpec","batchRenderDepth","initRenderQueue","initHiddenDays","dateProfileGenerator","dateProfileGeneratorClass","bindBaseRenderHandlers","eventOrderSpecs","renderQueue","event","onRenderQueueStart","onRenderQueueStop","startBatchRender","stopBatchRender","freezeContentHeight","addScroll","queryScroll","updateViewSize","popScroll","thawContentHeight","pause","resume","requestRender","namespace","actionType","queue","whenSizeUpdated","isRunning","computeTitle","currentRangeUnit","currentUnzonedRange","activeUnzonedRange","isRangeAllDay","computeTitleFormat","currentDateProfile","newDateProfile","build","unsetDate","unset","fetchInitialEvents","usesMinMaxTime","requestEvents","bindEventChanges","resetEvents","unbindEventChanges","setEvents","eventsPayload","unsetEvents","requestDateRender","executeDateRender","requestDateUnrender","executeDateUnrender","isDateInit","startNowIndicator","unselect","stopNowIndicator","triggerViewRender","triggerViewDestroy","publiclyTrigger","requestEventsRender","executeEventRender","triggerAfterEventsRendered","requestEventsUnrender","triggerBeforeEventsDestroyed","requestBusinessHoursRender","businessHourGenerator","renderBusinessHours","requestBusinessHoursUnrender","unrenderBusinessHours","processUnselect","handleDocumentMousedown","update","delay","getNowIndicatorUnit","initialNowDate","getNow","initialNowQueriedMs","startOf","nowIndicatorTimeoutID","nowIndicatorIntervalID","setInterval","updateNowIndicator","isDatesRendered","unrenderNowIndicator","renderNowIndicator","isNowIndicatorRendered","clearTimeout","clearInterval","updateSize","totalHeight","isAuto","isResize","scroll","queuedScroll","applyQueuedScroll","applyScroll","queryDateScroll","computeInitialDateScroll","applyDateScroll","reportEventDrop","eventMutation","eventManager","undoFunc","mutateEventsWithId","triggerEventDrop","reportExternalDrop","singleEventDef","isEvent","isSticky","ui","addEventDef","triggerExternalDrop","reportEventResize","resizeDelta","triggerEventResize","select","renderSelectionFootprint","reportSelection","triggerSelect","footprintToDateProfile","unrenderSelection","selectEventInstance","selectedEventInstance","unselectEventInstance","getEventSegs","processRangeUnselect","processEventUnselect","ignore","closest","triggerBaseRendered","triggerBaseUnrendered","triggerDayClick","dayEl","isDateInOtherMonth","getUnzonedRangeOption","parseUnzonedRange","hiddenDays","isHiddenDayHash","dayCnt","inArray","Error","trimHiddenDays","inputUnzonedRange","skipHiddenDays","isHiddenDay","inc","isExclusive","out","watch","deps","initialEvents","intervalStart","intervalEnd","fillRenderer","rangeUpdated","displayEventTime","displayEventEnd","eventTimeFormat","computeEventTimeFormat","computeDisplayEventTime","computeDisplayEventEnd","instanceGroup","eventRanges","_getDateProfile","bgRanges","fgRanges","renderBgRanges","renderFgRanges","unrender","unrenderBgRanges","unrenderFgRanges","segs","eventFootprintsToSegs","renderFgSegEls","renderFgSegs","fgSegs","unrenderFgSegs","renderBgSegs","bgSegs","unrenderBgSegs","getSegs","renderSegs","getClasses","getBgClasses","getCss","getBgColor","filterEl","filterEventRenderEl","disableResizing","hasEventRenderHandlers","hasPublicHandlers","html","renderedSegs","beforeFgSegHtml","fgSegHtml","node","getSegClasses","isDraggable","legacy","custom","getTimeText","displayEnd","_getTimeText","classNames","objs","getStylingObjs","eventClassName","getSkinCss","getBorderColor","getTextColor","eventBackgroundColor","eventColor","eventBorderColor","eventTextColor","getFallbackStylingObjs","sortEventSegs","compareEventSegs","seg1","seg2","f1","f2","cf1","cf2","r1","r2","englishMoment","PART_SEPARATOR","SPECIAL_TOKEN_MARKER","MAYBE_MARKER","MAYBE_REGEXP","specialTokens","largeTokenMap","renderFakeFormatString","getParsedFormatString","fakeFormatString","date2","separator","renderParsedFormat","parsedFormat","leftI","rightI","middleI","sameUnits","unzonedDate1","unzonedDate2","renderedParts1","renderFakeFormatStringParts","renderedParts2","leftStr","rightStr","middleStr1","middleStr2","middleStr","isSame","processMaybeMarkers","parsedFormatStrCache","parseFormatString","chunks","chunkFormatString","buildFakeFormatString","buildSameUnits","chunker","splitStringLiteral","maybe","chunk","tokenInfo","units","fakePart","fakeRender","fakeParts","m0","m1","candidate","best","_watchers","_props","applyGlobalWatchers","constructed","_globalWatchArgs","newProps","setProps","reset","oldProps","changeset","names","changedProps","changedCnt","depList","startFunc","stopFunc","unwatch","_watchDeps","watcher","teardown","queuedChangeCnt","depCnt","satisfyCnt","bindTuples","isCallingStop","onBeforeDepChange","depName","isOptional","onDepChange","flash","propDefs","standardPropMap","manualProps","startTime","endTime","zonedDayStart","instanceStart","instanceEnd","unzonedDate","unzonedEnd","instances","isBefore","dowHash","setDow","dowNumbers","dow","msToUtcMoment","buildPrev","prevDate","dateIncrement","buildNext","nextDate","forceToValid","currentInfo","renderUnzonedRange","isDateAllDay","buildValidRange","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","dayCount","durationUnit","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","dateIncrementInput","dateIncrementDuration","alignment","computeRes","customAlignment","runningCount","visibleUnzonedRange","fallback","setRawEventDefs","currentTimezone","StandardTheme_1","JqueryUiTheme_1","themeClassHash","themeName","themeClass","themeSetting","isHorizontal","isVertical","forcedOffsetParentEl","offsetParent","offsetParentEl","boundingRect","queryBoundingRect","buildElHorizontals","buildElVerticals","lefts","rights","tops","bottoms","ensureBuilt","getHorizontalIndex","leftOffset","getVerticalIndex","topOffset","getLeftOffset","leftIndex","getLeftPosition","getRightOffset","getRightPosition","getWidth","getTopOffset","topIndex","getTopPosition","getBottomOffset","getBottomPosition","getHeight","scrollParentEl","isPointInBounds","isLeftInBounds","isTopInBounds","isInteracting","isDistanceSurpassed","isDelayEnded","isTouch","isGeneric","shouldCancelTouchScroll","scrollAlwaysKills","isAutoScroll","scrollSensitivity","scrollSpeed","scrollIntervalMs","startInteraction","extraOptions","minDistance","distance","originX","originY","bindHandlers","initAutoScroll","startDelay","handleDistanceSurpassed","endInteraction","endDrag","delayTimeoutId","destroyAutoScroll","unbindHandlers","drag","handleMove","dragstop","touchmove","handleTouchScroll","startDrag","distanceSq","updateAutoScroll","initialEv","handleDelayEnd","handleDebouncedScroll","endAutoScroll","scrollBounds","topCloseness","bottomCloseness","leftCloseness","rightCloseness","sensitivity","bounds","topVel","leftVel","setScrollVel","scrollTopVel","scrollLeftVel","constrainScrollVel","scrollIntervalId","scrollLeft","scrollIntervalFunc","frac","updateDayTable","daysPerRow","firstDay","rowCnt","dayIndex","dayIndices","dayDates","breakOnWeeks","updateDayTableCols","colCnt","computeColCnt","colHeadFormat","computeColHeadFormat","getCellDate","row","col","getCellDayIndex","getCellRange","getColDayIndex","getDateDayIndex","dayOffset","sliceRangeByRow","rowFirst","rowLast","segFirst","segLast","normalRange","computeDayRange","rangeFirst","rangeLast","firstRowDayIndex","lastRowDayIndex","sliceRangeByDay","renderHeadHtml","renderHeadTrHtml","renderHeadIntroHtml","renderIntroHtml","renderHeadDateCellsHtml","htmls","renderHeadDateCellHtml","colspan","otherAttrs","innerHtml","isDateValid","getDayClasses","buildGotoAnchorHtml","forceOff","renderBgTrHtml","renderBgIntroHtml","renderBgCellsHtml","renderBgCellHtml","bookendCells","trEl","introHtml","append","prepend","buildEventInstanceGroup","hasAllDayBusinessHours","renderEventFootprints","fillSegTag","elsByFill","renderFootprint","componentFootprintToSegs","buildSegEls","attachSegEls","reportEls","buildSegHtml","nodes","eventRenderer","renderComponentFootprint","fabricateEventFootprint","renderEventDraggingFootprints","sourceSeg","renderEventResizingFootprints","extraClassNames","opacity","helperEls","dummyInstance","dummyEvent","handleMouseover","handleMouseout","mousedOverSeg","cellWeekNumbersVisible","bottomCoordPadding","isRigid","leftCol","rightCol","renderDates","renderGrid","unrenderDates","removeSegPopover","headContainerEl","renderDayRowHtml","cellEls","rowCoordCache","colCoordCache","getCellEl","getIsNumbersVisible","renderNumberTrHtml","getIsDayNumbersVisible","renderNumberIntroHtml","renderNumberCellsHtml","renderNumberCellHtml","weekCalcFirstDoW","isDayNumberVisible","getCellHit","getHitFootprint","getHitEl","getOwnEventSegs","popoverSegs","renderDrag","renderHighlight","helperRenderer","unrenderDrag","unrenderHighlight","renderEventResize","unrenderEventResize","segPopover","hide","limitRows","levelLimit","rowLevelLimit","rowStructs","unlimitRow","computeRowLevelLimit","limitRow","trHeight","rowEl","rowHeight","trEls","tbodyEl","iterInnerHeights","childNode","levelSegs","cellMatrix","limitedNodes","segsBelow","totalSegsBelow","colSegsBelow","td","rowspan","segMoreNodes","moreTd","moreWrap","moreLink","rowStruct","moreNodes","emptyCellsUntil","endCol","getCellSegs","renderMoreLink","segLevels","attr","after","moreEls","limitedEls","hiddenSegs","getMoreLinkText","clickOption","moreEl","allSegs","reslicedAllSegs","resliceDaySegs","reslicedHiddenSegs","showSegPopover","zoomTo","topEl","content","renderSegPopoverContent","parentEl","autoHide","viewportConstrain","triggerBeforeEventSegsDestroyed","show","triggerAfterEventSegsRendered","segContainer","dayDate","dayStart","dayEnd","dayRange","newSegs","num","startLevel","segMatrix","level","eventRendererClass","businessHourRendererClass","helperRendererClass","fillRendererClass","dayGrid","instantiateDayGrid","hasRigidRows","colWeekNumbersVisible","addChild","scroller","subclass","makeDayGridSubclass","dayGridClass","renderSkeleton","dayGridContainerEl","dayGridEl","renderSkeletonHtml","unrenderSkeleton","weekNumberStyleAttr","weekNumberWidth","scrollerHeight","headRowEl","computeScrollerHeight","setGridHeight","SuperClass","weekStart","_calendar","peerEventInstances","getPeerEventInstances","peerEventRanges","peerEventFootprints","constraintVal","overlapVal","eventAllowFunc","isFootprintAllowed","getEventInstancesWithoutId","selectAllowFunc","getEventInstances","subjectEventInstance","constraintFootprints","overlapEventFootprints","constraintValToFootprints","isFootprintWithinConstraints","collectOverlapEventFootprints","isOverlapsAllowedByFunc","isOverlapEventInstancesAllowed","footprintContainsFootprint","buildCurrentBusinessFootprints","parseEventDefToInstances","eventInstancesToFootprints","parseFootprints","getEventInstancesWithId","targetFootprint","footprintsIntersect","currentPeriod","eventRangeToEventFootprints","outerFootprint","innerFootprint","footprint0","footprint1","overlapFunc","overlapEventInstance","overlapEventDef","subjectLegacyInstance","BUSINESS_HOUR_EVENT_DEFAULTS","rawComplexDef","buildEventDefs","rawDefs","requireDow","defs","buildEventDef","rawDef","fullRawDef","pendingCnt","freezeDepth","stuntedReleaseCnt","releaseCnt","requestsByUid","eventDefsByUid","eventDefsById","eventInstanceGroupsById","isWithinRange","requestSources","freeze","requestSource","thaw","request","status","addEventDefs","tryRelease","purgeSource","removeEventDef","purgeAllSources","completedCnt","getEventDefByUid","eventDefUid","getEventDefsById","addEventInstance","isEmptyObject","removeEventInstancesForDef","matchingInstances","currentEventInstance","release","whenReleased","stickySource","otherSources","force","setPeriod","addSource","removeSource","doomedSource","removeAllSources","refetchSource","refetchAllSources","getSources","multiQuerySources","matchInputs","matchingSources","querySources","matchInput","getSourceById","grep","isSourcesEquivalent","eventPeriod","unbindPeriod","bindPeriod","eventId","eventDefMutation","undoFuncs","buildMutatedEventInstanceGroup","defCopy","allInstances","source0","source1","StandardTheme","widget","widgetHeader","widgetContent","buttonGroup","button","cornerLeft","cornerRight","stateDefault","stateActive","stateDisabled","stateHover","stateDown","popoverHeader","popoverContent","headerRow","dayRow","listView","JqueryUiTheme","pushLoading","popLoading","ajaxSettings","onSuccess","success","onError","error","requestParams","buildRequestParams","ajax","AJAX_DEFAULTS","xhr","callbackRes","statusText","errorThrown","customRequestParams","params","dataType","cache","items","proxyCall","results","item","sourceEl","isFollowing","isHidden","isAnimating","y0","x0","topDelta","leftDelta","updatePosition","stop","shouldRevert","revertDuration","complete","top0","left0","animate","getEl","additionalClass","visibility","margin","zIndex","sourceOffset","documentMousedown","viewportTop","viewportLeft","viewportOffset","windowEl","viewportEl","q","isPaused","tryStart","getIsIdle","canRunNext","runRemaining","task","runTask","waitsByNamespace","taskFunc","waitMs","waitNamespace","delayWait","clearWait","compoundTask","startWait","spawnWait","waitId","newTask","shouldAppend","hitsNeededDepth","childrenByUid","businessHourRenderer","child","removeChild","callChildren","_getCalendar","convertEventsPayloadToLegacyArray","getBusinessHourSegs","getOwnBusinessHourSegs","iterChildren","showEventsWithId","hideEventsWithId","renderedHelper","getSafeHitFootprint","eventFootprintToSegs","gotoOptions","finalOptions","JSON","stringify","getAllDayHtml","noThemeHighlight","currentRangeAs","startDay","endTimeMS","endDay","isMultiDayRange","legacyEvents","Toolbar_1","OptionsManager_1","ViewSpecManager_1","overrides","loadingLevel","ignoreUpdateViewSize","freezeContentHeightDepth","viewsByType","viewSpecManager","initMomentInternals","initCurrentDate","initEventManager","getView","triggerInfo","optHandler","option","newOptionHash","instantiateView","viewType","spec","getViewSpec","isValidViewType","changeView","dateOrRange","recordOverrides","visibleRange","currentDate","renderView","newDate","getUnitViewSpec","defaultDateInput","prevInfo","nextInfo","gotoDate","zonedDateInput","incrementDate","delta","contentEl","elementVisible","calcSize","initialRender","anchorEl","customAction","opts","themeSystem","widgetClass","businessHours","toggleClass","prependTo","initToolbars","renderHeader","renderFooter","resize","windowResizeProxy","windowResize","clearView","toolbarsManager","bindViewHandlers","setToolbarsTitle","updateToolbarButtons","unbindViewHandlers","newView","oldView","currentView","reinitView","getSuggestedViewHeight","suggestedViewHeight","isHeightAuto","_calcSize","contentHeightInput","heightInput","queryToolbarsHeight","forceFreezeContentHeight","computeHeaderOptions","footer","computeFooterOptions","extraClasses","layout","setToolbarOptions","todayInfo","reduce","accumulator","toolbar","toolbarHeight","zonedStartInput","zonedEndInput","buildSelectFootprint","_week","monthNames","_months","monthNamesShort","_monthsShort","dayNames","_weekdays","dayNamesShort","_weekdaysShort","localizeMoment","getIsAmbigTimezone","adjustedZonedDate","zonedDate","toArray","timeAdjust","asMilliseconds","ignoreEnd","humanizeDuration","humanize","rangeInput","rawSources","singleRawSource","rawSource","getEventEnd","zonedStart","rerenderEvents","refetchEvents","renderEvents","eventInputs","renderEvent","removeEvents","legacyQuery","legacyInstances","idMap","filterLegacyEventInstances","clientEvents","legacyEventInstances","updateEvents","eventPropsArray","updateEvent","eventProps","getEventSources","getEventSourceById","addEventSource","sourceInput","removeEventSources","sourceMultiQuery","removeEventSource","sourceQuery","refetchEventSources","defaults","legacyEventInstance","dragListener","dragstart","sortstart","accept","listenToExternalDrag","meta","getDraggedElMeta","interactionStart","hitOver","mutatedEventInstanceGroup","isAllowed","hitFootprint","computeExternalDrop","hitOut","hitDone","interactionEnd","stick","dataAttrPrefix","buildDragListener","resizeMutation","dragStart","segResizeStart","origHitFootprint","computeEventStartResizeMutation","computeEventEndResizeMutation","segResizeStop","startFootprint","endFootprint","origEventFootprint","origRange","getSelectionDelay","handleMousedown","settings","buildSelectListener","mouseFollower","segDragStart","origFootprint","computeEventDropMutation","segDragStop","computeEventDateMutation","getDelay","selectionFootprint","computeSelection","wholeFootprint","computeSelectionFootprint","dayClickHit","agendaTimeGridMethods","agendaDayGridMethods","AGENDA_ALL_DAY_EVENT_LIMIT","timeGrid","instantiateTimeGrid","timeGridClass","timeGridWrapEl","timeGridEl","axisStyleAttr","axisWidth","colEls","noScrollRowEls","bottomRuleEl","getTotalSlatHeight","computeTimeTop","dayEventsPayload","timedEventsPayload","groups","groupEventFootprintsByAllDay","timed","weekText","AGENDA_STOCK_SUB_DURATIONS","processOptions","sliceRangeByTimes","segRange","dayRanges","slotDuration","snapDuration","snapsPerSlot","labelFormat","labelInterval","computeLabelInterval","slotsPerLabel","renderSlats","renderColumns","unrenderColumns","slatContainerEl","renderSlatRowHtml","slatEls","slatCoordCache","slotDate","isLabeled","axisHtml","slotTime","slotIterator","renderContentSkeleton","unrenderContentSkeleton","skeletonEl","cellHtml","contentSkeletonEl","colContainerEls","helperContainerEls","fgContainerEls","bgContainerEls","highlightContainerEls","businessContainerEls","groupSegsByCol","segsByCol","attachSegsByCol","containerEls","computeDateTop","nowIndicatorEls","updateSegVerticals","businessSegs","startOfDayDate","slatIndex","slatRemainder","slatCoverage","computeSegVerticals","assignSegVerticals","eventMinHeight","generateSegVerticalCss","colIndex","slatTop","slatHeight","partial","localSnapIndex","snapIndex","snapTop","snapBottom","snap","computeSnapTime","renderFgSegsIntoContainers","updateFgSegCoords","timeText","fullTimeText","startTimeText","isResizableFromStart","isResizableFromEnd","skinCss","zonedEnd","computeFgSegHorizontals","assignFgSegHorizontals","levels","level0","buildSlotSegLevels","computeForwardSlotSegs","computeSlotSegPressures","computeFgSegForwardBack","seriesBackwardPressure","seriesBackwardCoord","forwardSegs","forwardCoord","sortForwardSegs","backwardCoord","compareForwardSegs","forwardPressure","generateFgSegHorizontalCss","shouldOverlap","computeSlotSegCollisions","forwardSeg","otherSegs","isSlotSegCollision","helperNodes","renderSegRows","rowNode","segRows","groupSegRows","renderSegRow","rowSegs","tr","buildSegLevels","levelCnt","tbody","loneCellMatrix","isDaySegCollision","compareDaySegCols","titleHtml","timeHtml","otherSeg","skeletonTopEl","skeletonTop","renderFillRow","startCol","toLowerCase","viewEnd","renderEmptyMessage","renderSegList","daySegs","segsByDay","groupSegsByDay","tableEl","dayHeaderHtml","empty","mainFormat","altFormat","bgColor","isDefaultPrevented","location","href","fullCalendar","_element","singleRes","element","removeData","Toolbar","toolbarOptions","viewsWithButtons","newToolbarOptions","sections","renderSection","sectionEl","buttonStr","calendarCustomButtons","calendarButtonTextOverrides","calendarButtonText","buttonGroupStr","groupEl","groupChildren","isOnlyButtons","buttonClick","buttonIcon","buttonInnerHtml","buttonClasses","buttonEl","buttonAriaAttr","buttonTextOverride","buttonTextDefault","hasClass","not","hover","first","updateTitle","activateButton","deactivateButton","disableButton","enableButton","getViewsWithButtons","OptionsManager","dynamicOverrides","compute","optionName","optionCnt","localeDefaults","dirDefaults","rawOptions","clearCache","ViewSpecManager","viewSpecCache","buildViewSpec","viewTypes","singleUnit","requestedViewType","viewOverrides","specChain","defaultsChain","overridesChain","buildViewSpecOptions","buildViewSpecButtonText","queryButtonText","buttonTextKey","Bootstrap3Theme_1","Bootstrap4Theme_1","Bootstrap3Theme","tableGrid","tableList","tableListHeading","popover","Bootstrap4Theme","fixedWeekCount","allDaySlot","slotEventOverlap","listDayFormat","noEventsMessage","listDayAltFormat","noGlobal","arr","getProto","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","doc","script","getAttribute","setAttribute","head","parentNode","toType","jQuery","selector","init","rtrim","jquery","pushStack","elems","merge","prevObject","elem","copyIsArray","deep","expando","isReady","msg","noop","globalEval","makeArray","second","invert","callbackInverse","matches","callbackExpect","iterator","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escaped","escapedWhitespace","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","childNodes","seed","nid","newSelector","newContext","getElementById","getElementsByTagName","getElementsByClassName","qsa","toSelector","testContext","querySelectorAll","qsaError","removeAttribute","cacheLength","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespaceURI","hasCompare","subWindow","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","activeElement","hasFocus","tabIndex","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","filters","parseOnly","soFar","preFilters","cached","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","targets","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","createOptions","flag","Identity","Thrower","ex","adoptValue","noValue","fail","Callbacks","firing","memory","fired","locked","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","tuples","state","always","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","master","updateFunc","rerrorNames","message","readyException","readyList","completed","catch","readyWait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","camelCase","acceptData","owner","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","dataAttr","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","thead","_default","getAll","setGlobalEval","refElements","optgroup","tfoot","colgroup","caption","th","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","err","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","handleObjIn","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","load","noBubble","beforeunload","returnValue","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","detail","eventPhase","metaKey","shiftKey","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","insertBefore","before","replaceWith","replaceChild","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","setPositiveNumber","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","suffix","expand","expanded","propHooks","run","percent","eased","pos","step","fx","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","propFilter","specialEasing","properties","stopped","prefilters","currentTime","tweens","originalProperties","originalOptions","gotoEnd","timer","tweener","prefilter","speed","speeds","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","classesToArray","removeProp","propFix","tabindex","curValue","clazz","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","throws","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","pageYOffset","pageXOffset","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","fnOver","fnOut","delegate","undelegate","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","displayFormat","hasInputElement","inputAttributes","selectableYearRange","startPeriod","parseDate","pickTime","pickMinutes","pickSeconds","use12HourClock","isDateDisabled","nextMonthCaption","prevMonthCaption","setTimeCaption","mobileBreakpointWidth","startWeekOnSunday","inputValue","valueToInputFormat","positionClass","opened","getPeriodFromValue","valueDate","parseDateString","isReadOnly","readonly","currentPeriodDates","outOfRange","dateKey","yearRange","getHours","getMinutes","getSeconds","isPM","hoursFormatted","minutesFormatted","secondsFormatted","directionClass","weekdaysSorted","beforeDestroy","removeCloseEvents","teardownPosition","formatDateToString","parseSimpleDateString","formatSimpleDateToString","incrementMonth","processUserInput","addCloseEvents","setupPosition","closeViaOverlay","$refs","outerWrap","closeEventListener","inspectCloseEvent","$el","positionEventListener","positionFloater","innerHeight","$nextTick","selectDateItem","setMinutes","setSeconds","set12HourClock","inputHours","inputTime","onTimeInputFocus","vdpWithInput","_b","domProps","vdpFloating","directives","rawName","expression","change","_value","$set","multiple","selectable"],"mappings":"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C,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CACA,CAEH,SAAUpiC,EAAQH,EAASof,GAEjC1f,OAAOuE,eAAejE,EAAS,aAAc,CAAE2B,OAAO,IACtD,IAAIm1B,EAAiB1X,EAAoB,GACrC+b,EAAuB/b,EAAoB,IAC3CkQ,EAAmBlQ,EAAoB,IACvCod,EAAgBpd,EAAoB,GACpC+T,EAAS/T,EAAoB,IAC7B4b,EAA6B,WAC7B,SAASA,EAAY2hB,EAAc4iB,GAC/B9iE,KAAKkgD,aAAeA,EACpBlgD,KAAK8iE,UAAYA,EA2MrB,OAzMAvkC,EAAY54B,UAAUyuB,IAAM,SAAU3e,GAClC,OAAOzV,KAAK8iE,UAAU1uC,IAAI3e,IAM9B8oB,EAAY54B,UAAU0zC,4BAA8B,SAAUC,GAC1D,IAEI3nC,EAFAqiB,EAAWslB,EAAmB/R,cAC9BgS,EAAkBv5C,KAAKw5C,6BAA6BF,EAAmBxS,qBAEvEi8B,EAAqB/iE,KAAKgjE,sBAAsBhvC,GAChDivC,EAAkBF,EAAmB1yD,IAAIqmB,EAAOqH,2BAChDmlC,EAAsBljE,KAAKw5C,6BAA6BypB,GACxDE,EAAgBnvC,EAASoe,gBACzBgxB,E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","file":"js/chunk-09b683a4.0253d158.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"calendar\",attrs:{\"id\":\"calendar\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./FullCalendar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./FullCalendar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FullCalendar.vue?vue&type=template&id=41e9886e&\"\nimport script from \"./FullCalendar.vue?vue&type=script&lang=js&\"\nexport * from \"./FullCalendar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\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 */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\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 */\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 if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\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 */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\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 `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\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 array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\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 valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\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 return value != null && (type == 'object' || type == 'function');\n}\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\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = defaultsDeep;\n","(function(t,e){\"object\"===typeof exports&&\"object\"===typeof module?module.exports=e():\"function\"===typeof define&&define.amd?define([],e):\"object\"===typeof exports?exports[\"SweetCalendar\"]=e():t[\"SweetCalendar\"]=e()})(\"undefined\"!==typeof self?self:this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t[\"default\"]}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=\"fae3\")}({\"07e3\":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},\"0a49\":function(t,e,n){var r=n(\"9b43\"),o=n(\"626a\"),i=n(\"4bf8\"),a=n(\"9def\"),c=n(\"cd1c\");t.exports=function(t,e){var n=1==t,u=2==t,f=3==t,s=4==t,l=6==t,d=5==t||l,p=e||c;return function(e,c,y){for(var v,h,g=i(e),b=o(g),x=r(c,y,3),m=a(b.length),_=0,w=n?p(e,m):u?p(e,0):void 0;m>_;_++)if((d||_ in b)&&(v=b[_],h=x(v,_,g),t))if(n)w[_]=h;else if(h)switch(t){case 3:return!0;case 5:return v;case 6:return _;case 2:w.push(v)}else if(s)return!1;return l?-1:f||s?s:w}}},\"0d58\":function(t,e,n){var r=n(\"ce10\"),o=n(\"e11e\");t.exports=Object.keys||function(t){return r(t,o)}},\"0fc9\":function(t,e,n){var r=n(\"3a38\"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},1169:function(t,e,n){var r=n(\"2d95\");t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},\"11e9\":function(t,e,n){var r=n(\"52a7\"),o=n(\"4630\"),i=n(\"6821\"),a=n(\"6a99\"),c=n(\"69a8\"),u=n(\"c69a\"),f=Object.getOwnPropertyDescriptor;e.f=n(\"9e1e\")?f:function(t,e){if(t=i(t),e=a(e,!0),u)try{return f(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},1495:function(t,e,n){var r=n(\"86cc\"),o=n(\"cb7c\"),i=n(\"0d58\");t.exports=n(\"9e1e\")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),c=a.length,u=0;while(c>u)r.f(t,n=a[u++],e[n]);return t}},\"14b9\":function(t,e,n){var r=n(\"5ca1\");r(r.P,\"String\",{repeat:n(\"9744\")})},1654:function(t,e,n){\"use strict\";var r=n(\"71c1\")(!0);n(\"30f1\")(String,\"String\",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},1691:function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},\"1af6\":function(t,e,n){var r=n(\"63b6\");r(r.S,\"Array\",{isArray:n(\"9003\")})},\"1bc3\":function(t,e,n){var r=n(\"f772\");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},\"1df8\":function(t,e,n){var r=n(\"63b6\");r(r.S,\"Object\",{setPrototypeOf:n(\"ead6\").set})},\"1ec9\":function(t,e,n){var r=n(\"f772\"),o=n(\"e53d\").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},\"20fd\":function(t,e,n){\"use strict\";var r=n(\"d9f6\"),o=n(\"aebd\");t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},\"230e\":function(t,e,n){var r=n(\"d3f4\"),o=n(\"7726\").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},\"241e\":function(t,e,n){var r=n(\"25eb\");t.exports=function(t){return Object(r(t))}},\"25b0\":function(t,e,n){n(\"1df8\"),t.exports=n(\"584a\").Object.setPrototypeOf},\"25eb\":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},\"294c\":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},\"2aba\":function(t,e,n){var r=n(\"7726\"),o=n(\"32e9\"),i=n(\"69a8\"),a=n(\"ca5a\")(\"src\"),c=n(\"fa5b\"),u=\"toString\",f=(\"\"+c).split(u);n(\"8378\").inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var u=\"function\"==typeof n;u&&(i(n,\"name\")||o(n,\"name\",e)),t[e]!==n&&(u&&(i(n,a)||o(n,a,t[e]?\"\"+t[e]:f.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,u,(function(){return\"function\"==typeof this&&this[a]||c.call(this)}))},\"2aeb\":function(t,e,n){var r=n(\"cb7c\"),o=n(\"1495\"),i=n(\"e11e\"),a=n(\"613b\")(\"IE_PROTO\"),c=function(){},u=\"prototype\",f=function(){var t,e=n(\"230e\")(\"iframe\"),r=i.length,o=\"<\",a=\">\";e.style.display=\"none\",n(\"fab2\").appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(o+\"script\"+a+\"document.F=Object\"+o+\"/script\"+a),t.close(),f=t.F;while(r--)delete f[u][i[r]];return f()};t.exports=Object.create||function(t,e){var n;return null!==t?(c[u]=r(t),n=new c,c[u]=null,n[a]=t):n=f(),void 0===e?n:o(n,e)}},\"2b4c\":function(t,e,n){var r=n(\"5537\")(\"wks\"),o=n(\"ca5a\"),i=n(\"7726\").Symbol,a=\"function\"==typeof i,c=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)(\"Symbol.\"+t))};c.store=r},\"2d00\":function(t,e){t.exports=!1},\"2d95\":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},3024:function(t,e){t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},\"30f1\":function(t,e,n){\"use strict\";var r=n(\"b8e3\"),o=n(\"63b6\"),i=n(\"9138\"),a=n(\"35e8\"),c=n(\"481b\"),u=n(\"8f60\"),f=n(\"45f2\"),s=n(\"53e2\"),l=n(\"5168\")(\"iterator\"),d=!([].keys&&\"next\"in[].keys()),p=\"@@iterator\",y=\"keys\",v=\"values\",h=function(){return this};t.exports=function(t,e,n,g,b,x,m){u(n,e,g);var _,w,O,S=function(t){if(!d&&t in j)return j[t];switch(t){case y:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},D=e+\" Iterator\",k=b==v,M=!1,j=t.prototype,T=j[l]||j[p]||b&&j[b],A=T||S(b),C=b?k?S(\"entries\"):A:void 0,P=\"Array\"==e&&j.entries||T;if(P&&(O=s(P.call(new t)),O!==Object.prototype&&O.next&&(f(O,D,!0),r||\"function\"==typeof O[l]||a(O,l,h))),k&&T&&T.name!==v&&(M=!0,A=function(){return T.call(this)}),r&&!m||!d&&!M&&j[l]||a(j,l,A),c[e]=A,c[D]=h,b)if(_={values:k?A:S(v),keys:x?A:S(y),entries:C},m)for(w in _)w in j||i(j,w,_[w]);else o(o.P+o.F*(d||M),e,_);return _}},\"32e9\":function(t,e,n){var r=n(\"86cc\"),o=n(\"4630\");t.exports=n(\"9e1e\")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},\"32fc\":function(t,e,n){var r=n(\"e53d\").document;t.exports=r&&r.documentElement},\"335c\":function(t,e,n){var r=n(\"6b4c\");t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},\"355d\":function(t,e){e.f={}.propertyIsEnumerable},\"35e8\":function(t,e,n){var r=n(\"d9f6\"),o=n(\"aebd\");t.exports=n(\"8e60\")?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},\"36bd\":function(t,e,n){\"use strict\";var r=n(\"4bf8\"),o=n(\"77f1\"),i=n(\"9def\");t.exports=function(t){var e=r(this),n=i(e.length),a=arguments.length,c=o(a>1?arguments[1]:void 0,n),u=a>2?arguments[2]:void 0,f=void 0===u?n:o(u,n);while(f>c)e[c++]=t;return e}},\"36c3\":function(t,e,n){var r=n(\"335c\"),o=n(\"25eb\");t.exports=function(t){return r(o(t))}},3702:function(t,e,n){var r=n(\"481b\"),o=n(\"5168\")(\"iterator\"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},\"3a38\":function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},\"40c3\":function(t,e,n){var r=n(\"6b4c\"),o=n(\"5168\")(\"toStringTag\"),i=\"Arguments\"==r(function(){return arguments}()),a=function(t,e){try{return t[e]}catch(n){}};t.exports=function(t){var e,n,c;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=a(e=Object(t),o))?n:i?r(e):\"Object\"==(c=r(e))&&\"function\"==typeof e.callee?\"Arguments\":c}},\"454f\":function(t,e,n){n(\"46a7\");var r=n(\"584a\").Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},4562:function(t,e,n){},4588:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},\"45f2\":function(t,e,n){var r=n(\"d9f6\").f,o=n(\"07e3\"),i=n(\"5168\")(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},4630:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},\"469f\":function(t,e,n){n(\"6c1c\"),n(\"1654\"),t.exports=n(\"7d7b\")},\"46a7\":function(t,e,n){var r=n(\"63b6\");r(r.S+r.F*!n(\"8e60\"),\"Object\",{defineProperty:n(\"d9f6\").f})},\"481b\":function(t,e){t.exports={}},\"4bf8\":function(t,e,n){var r=n(\"be13\");t.exports=function(t){return Object(r(t))}},\"4d16\":function(t,e,n){t.exports=n(\"25b0\")},\"4ee1\":function(t,e,n){var r=n(\"5168\")(\"iterator\"),o=!1;try{var i=[7][r]();i[\"return\"]=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(a){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],c=i[r]();c.next=function(){return{done:n=!0}},i[r]=function(){return c},t(i)}catch(a){}return n}},\"50ed\":function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},5168:function(t,e,n){var r=n(\"dbdb\")(\"wks\"),o=n(\"62a0\"),i=n(\"e53d\").Symbol,a=\"function\"==typeof i,c=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)(\"Symbol.\"+t))};c.store=r},5176:function(t,e,n){t.exports=n(\"51b6\")},\"51b6\":function(t,e,n){n(\"a3c3\"),t.exports=n(\"584a\").Object.assign},\"52a7\":function(t,e){e.f={}.propertyIsEnumerable},\"53e2\":function(t,e,n){var r=n(\"07e3\"),o=n(\"241e\"),i=n(\"5559\")(\"IE_PROTO\"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},\"549b\":function(t,e,n){\"use strict\";var r=n(\"d864\"),o=n(\"63b6\"),i=n(\"241e\"),a=n(\"b0dc\"),c=n(\"3702\"),u=n(\"b447\"),f=n(\"20fd\"),s=n(\"7cd6\");o(o.S+o.F*!n(\"4ee1\")((function(t){Array.from(t)})),\"Array\",{from:function(t){var e,n,o,l,d=i(t),p=\"function\"==typeof this?this:Array,y=arguments.length,v=y>1?arguments[1]:void 0,h=void 0!==v,g=0,b=s(d);if(h&&(v=r(v,y>2?arguments[2]:void 0,2)),void 0==b||p==Array&&c(b))for(e=u(d.length),n=new p(e);e>g;g++)f(n,g,h?v(d[g],g):d[g]);else for(l=b.call(d),n=new p;!(o=l.next()).done;g++)f(n,g,h?a(l,v,[o.value,g],!0):o.value);return n.length=g,n}})},\"54a1\":function(t,e,n){n(\"6c1c\"),n(\"1654\"),t.exports=n(\"95d5\")},5537:function(t,e,n){var r=n(\"8378\"),o=n(\"7726\"),i=\"__core-js_shared__\",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:r.version,mode:n(\"2d00\")?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},5559:function(t,e,n){var r=n(\"dbdb\")(\"keys\"),o=n(\"62a0\");t.exports=function(t){return r[t]||(r[t]=o(t))}},\"584a\":function(t,e){var n=t.exports={version:\"2.6.5\"};\"number\"==typeof __e&&(__e=n)},\"5b4e\":function(t,e,n){var r=n(\"36c3\"),o=n(\"b447\"),i=n(\"0fc9\");t.exports=function(t){return function(e,n,a){var c,u=r(e),f=o(u.length),s=i(a,f);if(t&&n!=n){while(f>s)if(c=u[s++],c!=c)return!0}else for(;f>s;s++)if((t||s in u)&&u[s]===n)return t||s||0;return!t&&-1}}},\"5ca1\":function(t,e,n){var r=n(\"7726\"),o=n(\"8378\"),i=n(\"32e9\"),a=n(\"2aba\"),c=n(\"9b43\"),u=\"prototype\",f=function(t,e,n){var s,l,d,p,y=t&f.F,v=t&f.G,h=t&f.S,g=t&f.P,b=t&f.B,x=v?r:h?r[e]||(r[e]={}):(r[e]||{})[u],m=v?o:o[e]||(o[e]={}),_=m[u]||(m[u]={});for(s in v&&(n=e),n)l=!y&&x&&void 0!==x[s],d=(l?x:n)[s],p=b&&l?c(d,r):g&&\"function\"==typeof d?c(Function.call,d):d,x&&a(x,s,d,t&f.U),m[s]!=d&&i(m,s,p),g&&_[s]!=d&&(_[s]=d)};r.core=o,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},\"5d73\":function(t,e,n){t.exports=n(\"469f\")},\"5dbc\":function(t,e,n){var r=n(\"d3f4\"),o=n(\"8b97\").set;t.exports=function(t,e,n){var i,a=e.constructor;return a!==n&&\"function\"==typeof a&&(i=a.prototype)!==n.prototype&&r(i)&&o&&o(t,i),t}},\"5f00\":function(t,e,n){\"use strict\";n(\"4562\")},\"613b\":function(t,e,n){var r=n(\"5537\")(\"keys\"),o=n(\"ca5a\");t.exports=function(t){return r[t]||(r[t]=o(t))}},\"626a\":function(t,e,n){var r=n(\"2d95\");t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},\"62a0\":function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},\"63b6\":function(t,e,n){var r=n(\"e53d\"),o=n(\"584a\"),i=n(\"d864\"),a=n(\"35e8\"),c=n(\"07e3\"),u=\"prototype\",f=function(t,e,n){var s,l,d,p=t&f.F,y=t&f.G,v=t&f.S,h=t&f.P,g=t&f.B,b=t&f.W,x=y?o:o[e]||(o[e]={}),m=x[u],_=y?r:v?r[e]:(r[e]||{})[u];for(s in y&&(n=e),n)l=!p&&_&&void 0!==_[s],l&&c(x,s)||(d=l?_[s]:n[s],x[s]=y&&\"function\"!=typeof _[s]?n[s]:g&&l?i(d,r):b&&_[s]==d?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[u]=t[u],e}(d):h&&\"function\"==typeof d?i(Function.call,d):d,h&&((x.virtual||(x.virtual={}))[s]=d,t&f.R&&m&&!m[s]&&a(m,s,d)))};f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},\"64fe\":function(t,e,n){},6821:function(t,e,n){var r=n(\"626a\"),o=n(\"be13\");t.exports=function(t){return r(o(t))}},\"69a8\":function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},\"6a99\":function(t,e,n){var r=n(\"d3f4\");t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},\"6b4c\":function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},\"6c1c\":function(t,e,n){n(\"c367\");for(var r=n(\"e53d\"),o=n(\"35e8\"),i=n(\"481b\"),a=n(\"5168\")(\"toStringTag\"),c=\"CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList\".split(\",\"),u=0;u=f?t?\"\":void 0:(i=c.charCodeAt(u),i<55296||i>56319||u+1===f||(a=c.charCodeAt(u+1))<56320||a>57343?t?c.charAt(u):i:t?c.slice(u,u+2):a-56320+(i-55296<<10)+65536)}}},\"733c\":function(t,e,n){var r=n(\"63b6\"),o=n(\"a159\"),i=n(\"79aa\"),a=n(\"e4ae\"),c=n(\"f772\"),u=n(\"294c\"),f=n(\"c189\"),s=(n(\"e53d\").Reflect||{}).construct,l=u((function(){function t(){}return!(s((function(){}),[],t)instanceof t)})),d=!u((function(){s((function(){}))}));r(r.S+r.F*(l||d),\"Reflect\",{construct:function(t,e){i(t),a(e);var n=arguments.length<3?t:i(arguments[2]);if(d&&!l)return s(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return r.push.apply(r,e),new(f.apply(t,r))}var u=n.prototype,p=o(c(u)?u:Object.prototype),y=Function.apply.call(t,p,e);return c(y)?y:p}})},7514:function(t,e,n){\"use strict\";var r=n(\"5ca1\"),o=n(\"0a49\")(5),i=\"find\",a=!0;i in[]&&Array(1)[i]((function(){a=!1})),r(r.P+r.F*a,\"Array\",{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(\"9c6c\")(i)},7726:function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},\"774e\":function(t,e,n){t.exports=n(\"d2d5\")},\"77f1\":function(t,e,n){var r=n(\"4588\"),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},\"794b\":function(t,e,n){t.exports=!n(\"8e60\")&&!n(\"294c\")((function(){return 7!=Object.defineProperty(n(\"1ec9\")(\"div\"),\"a\",{get:function(){return 7}}).a}))},\"79aa\":function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},\"79e5\":function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},\"7cd6\":function(t,e,n){var r=n(\"40c3\"),o=n(\"5168\")(\"iterator\"),i=n(\"481b\");t.exports=n(\"584a\").getIteratorMethod=function(t){if(void 0!=t)return t[o]||t[\"@@iterator\"]||i[r(t)]}},\"7d7b\":function(t,e,n){var r=n(\"e4ae\"),o=n(\"7cd6\");t.exports=n(\"584a\").getIterator=function(t){var e=o(t);if(\"function\"!=typeof e)throw TypeError(t+\" is not iterable!\");return r(e.call(t))}},\"7e90\":function(t,e,n){var r=n(\"d9f6\"),o=n(\"e4ae\"),i=n(\"c3a1\");t.exports=n(\"8e60\")?Object.defineProperties:function(t,e){o(t);var n,a=i(e),c=a.length,u=0;while(c>u)r.f(t,n=a[u++],e[n]);return t}},8378:function(t,e){var n=t.exports={version:\"2.6.5\"};\"number\"==typeof __e&&(__e=n)},8436:function(t,e){t.exports=function(){}},\"85f2\":function(t,e,n){t.exports=n(\"454f\")},\"86cc\":function(t,e,n){var r=n(\"cb7c\"),o=n(\"c69a\"),i=n(\"6a99\"),a=Object.defineProperty;e.f=n(\"9e1e\")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(c){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},\"8b97\":function(t,e,n){var r=n(\"d3f4\"),o=n(\"cb7c\"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,r){try{r=n(\"9b43\")(Function.call,n(\"11e9\").f(Object.prototype,\"__proto__\").set,2),r(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},\"8e60\":function(t,e,n){t.exports=!n(\"294c\")((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))},\"8f60\":function(t,e,n){\"use strict\";var r=n(\"a159\"),o=n(\"aebd\"),i=n(\"45f2\"),a={};n(\"35e8\")(a,n(\"5168\")(\"iterator\"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+\" Iterator\")}},9003:function(t,e,n){var r=n(\"6b4c\");t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},9093:function(t,e,n){var r=n(\"ce10\"),o=n(\"e11e\").concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},9138:function(t,e,n){t.exports=n(\"35e8\")},9306:function(t,e,n){\"use strict\";var r=n(\"c3a1\"),o=n(\"9aa9\"),i=n(\"355d\"),a=n(\"241e\"),c=n(\"335c\"),u=Object.assign;t.exports=!u||n(\"294c\")((function(){var t={},e={},n=Symbol(),r=\"abcdefghijklmnopqrst\";return t[n]=7,r.split(\"\").forEach((function(t){e[t]=t})),7!=u({},t)[n]||Object.keys(u({},e)).join(\"\")!=r}))?function(t,e){var n=a(t),u=arguments.length,f=1,s=o.f,l=i.f;while(u>f){var d,p=c(arguments[f++]),y=s?r(p).concat(s(p)):r(p),v=y.length,h=0;while(v>h)l.call(p,d=y[h++])&&(n[d]=p[d])}return n}:u},\"95d5\":function(t,e,n){var r=n(\"40c3\"),o=n(\"5168\")(\"iterator\"),i=n(\"481b\");t.exports=n(\"584a\").isIterable=function(t){var e=Object(t);return void 0!==e[o]||\"@@iterator\"in e||i.hasOwnProperty(r(e))}},9744:function(t,e,n){\"use strict\";var r=n(\"4588\"),o=n(\"be13\");t.exports=function(t){var e=String(o(this)),n=\"\",i=r(t);if(i<0||i==1/0)throw RangeError(\"Count can't be negative\");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},\"9aa9\":function(t,e){e.f=Object.getOwnPropertySymbols},\"9b43\":function(t,e,n){var r=n(\"d8e8\");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},\"9c6c\":function(t,e,n){var r=n(\"2b4c\")(\"unscopables\"),o=Array.prototype;void 0==o[r]&&n(\"32e9\")(o,r,{}),t.exports=function(t){o[r][t]=!0}},\"9def\":function(t,e,n){var r=n(\"4588\"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},\"9e1e\":function(t,e,n){t.exports=!n(\"79e5\")((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))},a159:function(t,e,n){var r=n(\"e4ae\"),o=n(\"7e90\"),i=n(\"1691\"),a=n(\"5559\")(\"IE_PROTO\"),c=function(){},u=\"prototype\",f=function(){var t,e=n(\"1ec9\")(\"iframe\"),r=i.length,o=\"<\",a=\">\";e.style.display=\"none\",n(\"32fc\").appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(o+\"script\"+a+\"document.F=Object\"+o+\"/script\"+a),t.close(),f=t.F;while(r--)delete f[u][i[r]];return f()};t.exports=Object.create||function(t,e){var n;return null!==t?(c[u]=r(t),n=new c,c[u]=null,n[a]=t):n=f(),void 0===e?n:o(n,e)}},a3c3:function(t,e,n){var r=n(\"63b6\");r(r.S+r.F,\"Object\",{assign:n(\"9306\")})},a5b2:function(t,e,n){t.exports=n(\"aa28\")},a745:function(t,e,n){t.exports=n(\"f410\")},aa28:function(t,e,n){n(\"733c\"),t.exports=n(\"584a\").Reflect.construct},aa77:function(t,e,n){var r=n(\"5ca1\"),o=n(\"be13\"),i=n(\"79e5\"),a=n(\"fdef\"),c=\"[\"+a+\"]\",u=\"​…\",f=RegExp(\"^\"+c+c+\"*\"),s=RegExp(c+c+\"*$\"),l=function(t,e,n){var o={},c=i((function(){return!!a[t]()||u[t]()!=u})),f=o[t]=c?e(d):a[t];n&&(o[n]=f),r(r.P+r.F*c,\"String\",o)},d=l.trim=function(t,e){return t=String(o(t)),1&e&&(t=t.replace(f,\"\")),2&e&&(t=t.replace(s,\"\")),t};t.exports=l},aebd:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},b0dc:function(t,e,n){var r=n(\"e4ae\");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t[\"return\"];throw void 0!==i&&r(i.call(t)),a}}},b447:function(t,e,n){var r=n(\"3a38\"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},b8e3:function(t,e){t.exports=!0},be13:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},bf0b:function(t,e,n){var r=n(\"355d\"),o=n(\"aebd\"),i=n(\"36c3\"),a=n(\"1bc3\"),c=n(\"07e3\"),u=n(\"794b\"),f=Object.getOwnPropertyDescriptor;e.f=n(\"8e60\")?f:function(t,e){if(t=i(t),e=a(e,!0),u)try{return f(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},c189:function(t,e,n){\"use strict\";var r=n(\"79aa\"),o=n(\"f772\"),i=n(\"3024\"),a=[].slice,c={},u=function(t,e,n){if(!(e in c)){for(var r=[],o=0;os)if(c=u[s++],c!=c)return!0}else for(;f>s;s++)if((t||s in u)&&u[s]===n)return t||s||0;return!t&&-1}}},c367:function(t,e,n){\"use strict\";var r=n(\"8436\"),o=n(\"50ed\"),i=n(\"481b\"),a=n(\"36c3\");t.exports=n(\"30f1\")(Array,\"Array\",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,\"keys\"==e?n:\"values\"==e?t[n]:[n,t[n]])}),\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},c3a1:function(t,e,n){var r=n(\"e6f3\"),o=n(\"1691\");t.exports=Object.keys||function(t){return r(t,o)}},c5f6:function(t,e,n){\"use strict\";var r=n(\"7726\"),o=n(\"69a8\"),i=n(\"2d95\"),a=n(\"5dbc\"),c=n(\"6a99\"),u=n(\"79e5\"),f=n(\"9093\").f,s=n(\"11e9\").f,l=n(\"86cc\").f,d=n(\"aa77\").trim,p=\"Number\",y=r[p],v=y,h=y.prototype,g=i(n(\"2aeb\")(h))==p,b=\"trim\"in String.prototype,x=function(t){var e=c(t,!1);if(\"string\"==typeof e&&e.length>2){e=b?e.trim():d(e,3);var n,r,o,i=e.charCodeAt(0);if(43===i||45===i){if(n=e.charCodeAt(2),88===n||120===n)return NaN}else if(48===i){switch(e.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+e}for(var a,u=e.slice(2),f=0,s=u.length;fo)return NaN;return parseInt(u,r)}}return+e};if(!y(\" 0o1\")||!y(\"0b1\")||y(\"+0x1\")){y=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof y&&(g?u((function(){h.valueOf.call(n)})):i(n)!=p)?a(new v(x(e)),n,y):x(e)};for(var m,_=n(\"9e1e\")?f(v):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),w=0;_.length>w;w++)o(v,m=_[w])&&!o(y,m)&&l(y,m,s(v,m));y.prototype=h,h.constructor=y,n(\"2aba\")(r,p,y)}},c69a:function(t,e,n){t.exports=!n(\"9e1e\")&&!n(\"79e5\")((function(){return 7!=Object.defineProperty(n(\"230e\")(\"div\"),\"a\",{get:function(){return 7}}).a}))},c8bb:function(t,e,n){t.exports=n(\"54a1\")},ca5a:function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},cb7c:function(t,e,n){var r=n(\"d3f4\");t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},cd1c:function(t,e,n){var r=n(\"e853\");t.exports=function(t,e){return new(r(t))(e)}},ce10:function(t,e,n){var r=n(\"69a8\"),o=n(\"6821\"),i=n(\"c366\")(!1),a=n(\"613b\")(\"IE_PROTO\");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)n!=a&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},d2d5:function(t,e,n){n(\"1654\"),n(\"549b\"),t.exports=n(\"584a\").Array.from},d3f4:function(t,e){t.exports=function(t){return\"object\"===typeof t?null!==t:\"function\"===typeof t}},d864:function(t,e,n){var r=n(\"79aa\");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},d8e8:function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},d9f6:function(t,e,n){var r=n(\"e4ae\"),o=n(\"794b\"),i=n(\"1bc3\"),a=Object.defineProperty;e.f=n(\"8e60\")?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(c){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},dbdb:function(t,e,n){var r=n(\"584a\"),o=n(\"e53d\"),i=\"__core-js_shared__\",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:r.version,mode:n(\"b8e3\")?\"pure\":\"global\",copyright:\"© 2019 Denis Pushkarev (zloirock.ru)\"})},e11e:function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},e472:function(t,e,n){\"use strict\";n(\"64fe\")},e4ae:function(t,e,n){var r=n(\"f772\");t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},e53d:function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},e6f3:function(t,e,n){var r=n(\"07e3\"),o=n(\"36c3\"),i=n(\"5b4e\")(!1),a=n(\"5559\")(\"IE_PROTO\");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)n!=a&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},e853:function(t,e,n){var r=n(\"d3f4\"),o=n(\"1169\"),i=n(\"2b4c\")(\"species\");t.exports=function(t){var e;return o(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&(e=e[i],null===e&&(e=void 0))),void 0===e?Array:e}},ead6:function(t,e,n){var r=n(\"f772\"),o=n(\"e4ae\"),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,r){try{r=n(\"d864\")(Function.call,n(\"bf0b\").f(Object.prototype,\"__proto__\").set,2),r(t,[]),e=!(t instanceof Array)}catch(o){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},f410:function(t,e,n){n(\"1af6\"),t.exports=n(\"584a\").Array.isArray},f772:function(t,e){t.exports=function(t){return\"object\"===typeof t?null!==t:\"function\"===typeof t}},fa5b:function(t,e,n){t.exports=n(\"5537\")(\"native-function-to-string\",Function.toString)},fab2:function(t,e,n){var r=n(\"7726\").document;t.exports=r&&r.documentElement},fae3:function(t,e,n){\"use strict\";var r;(n.r(e),\"undefined\"!==typeof window)&&((r=window.document.currentScript)&&(r=r.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))&&(n.p=r[1]));var o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{attrs:{id:\"sweetCalendar\"}},[n(\"div\",{staticClass:\"container calendar\"},[n(\"div\",{staticClass:\"header\"},[n(\"div\",{staticClass:\"left-arrow\",on:{click:t.prevMonth}},[n(\"span\",[t._v(\"<\")])]),n(\"div\",{staticClass:\"month\"},[t._v(t._s(t.selectedMonthName)+\" \"+t._s(t.selectedYear))]),n(\"div\",{staticClass:\"right-arrow\",on:{click:t.nextMonth}},[n(\"span\",[t._v(\">\")])])]),n(\"div\",{staticClass:\"body\"},[t._l(t.weekdays,(function(e,r){return n(\"div\",{key:\"day-name-\"+(r+1),staticClass:\"day-name\",attrs:{title:e}},[t._v(\"\\n \"+t._s(e[0])+\"\\n \")])})),t._l(t.days,(function(e,r){return n(\"div\",{key:r,staticClass:\"day-container\"},[e?n(\"div\",{staticClass:\"before\",style:t.generateBeforeStyle(e)},[t._v(\" \")]):t._e(),e?n(\"div\",{class:[\"day\",\"day-\"+e.getDate()+\",\\n weekday-\"+e.getDay(),t.offDays.includes(e.getDay())?\"off-day\":null,e.toDateString()===t.today.toDateString()?\"today\":null],style:t.generateDayStyle(e)},[n(\"span\",[t._v(t._s(e.getDate()))])]):t._e(),e?n(\"div\",{staticClass:\"after\",style:t.generateAfterStyle(e)},[t._v(\" \")]):t._e()])}))],2)])])},i=[],a=(n(\"c5f6\"),n(\"5176\")),c=n.n(a),u=(n(\"7514\"),n(\"14b9\"),n(\"5d73\")),f=n.n(u),s=(n(\"6c7b\"),n(\"a5b2\")),l=n.n(s),d=n(\"4d16\"),p=n.n(d);function y(t,e){return y=p.a||function(t,e){return t.__proto__=e,t},y(t,e)}function v(){if(\"undefined\"===typeof Reflect||!l.a)return!1;if(l.a.sham)return!1;if(\"function\"===typeof Proxy)return!0;try{return Date.prototype.toString.call(l()(Date,[],(function(){}))),!0}catch(t){return!1}}function h(t,e,n){return h=v()?l.a:function(t,e,n){var r=[null];r.push.apply(r,e);var o=Function.bind.apply(t,r),i=new o;return n&&y(i,n.prototype),i},h.apply(null,arguments)}var g=n(\"a745\"),b=n.n(g);function x(t){if(b()(t)){for(var e=0,n=new Array(t.length);e1){var i=r[0],a=r[1],c=r.slice(2);e=h(Date,[i,a-1].concat(k(c)))}else e=h(Date,r);e.setHours(0,0,0,0),this._date=e}return C(t,[{key:\"getMonth\",value:function(){return this._date.getMonth()+1}},{key:\"getDay\",value:function(){return this._date.getDay()+1}},{key:\"getMonthName\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"long\";return this._date.toLocaleString(\"en-US\",{month:t})}},{key:\"getFullYear\",value:function(){return this._date.getFullYear()}},{key:\"getDate\",value:function(){return this._date.getDate()}},{key:\"getTime\",value:function(){return this._date.getTime()}},{key:\"getDayName\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"long\";return this._date.toLocaleString(\"en-US\",{weekday:t})}},{key:\"getNextDay\",value:function(){var t=new this.constructor(this.getTime());return t.setDate(t.getDate()+1),t}},{key:\"getPrevDay\",value:function(){var t=new this.constructor(this.getTime());return t.setDate(t.getDate()-1),t}},{key:\"setDate\",value:function(t){return this._date.setDate(t),this.getTime()}},{key:\"isInRange\",value:function(t,e){var n,r,o,i,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"never\",c=new this.constructor(t),u=new this.constructor(e),f=this.getTime();switch(a){case\"weekly\":return n=c.getDay(),r=u.getDay(),o=this.getDay()>=n,i=this.getDay()<=r,o&&i;case\"monthly\":return n=new this.constructor(this.getFullYear(),this.getMonth(),c.getDate()).getTime(),r=new this.constructor(this.getFullYear(),this.getMonth(),u.getDate()).getTime(),o=f>=n,i=f<=r,o&&i;case\"yearly\":return n=new this.constructor(this.getFullYear(),c.getMonth(),c.getDate()).getTime(),r=new this.constructor(this.getFullYear(),u.getMonth(),u.getDate()).getTime(),o=f>=n,i=f<=r,o&&i;case\"never\":return o=f>=c.getTime(),i=f<=u.getTime(),o&&i;default:return o=f>=c.getTime(),i=f<=u.getTime(),o&&i}}},{key:\"toDateString\",value:function(){return this._date.toDateString()}},{key:\"toISOString\",value:function(){return this._date.toISOString()}},{key:\"getTimezoneOffset\",value:function(){return this._date.getTimezoneOffset()}},{key:\"getNumberOfDaysInMonth\",value:function(){return new this.constructor(this.getFullYear(),this.getMonth()+1,0).getDate()}},{key:\"getFirstWeekdayOfMonth\",value:function(){return new this.constructor(this.getFullYear(),this.getMonth(),1).getDay()}}]),t}(),E={name:\"Calendar\",data:function(){return{today:new P,date:null,weekdays:null}},computed:{days:function(){var t=this,e=Array((this.startWeekDayOfMonth-this.firstDayOfWeek+7)%7).fill(null),n=Array(this.numberOfDays).fill().map((function(e,n){return new P(t.selectedYear,t.selectedMonth,n+1)}));return e.concat(n)},startWeekDayOfMonth:function(){return this.date.getFirstWeekdayOfMonth()},numberOfDays:function(){return this.date.getNumberOfDaysInMonth()},selectedMonth:function(){return this.date.getMonth()},selectedMonthName:function(){return this.date.getMonthName()},selectedYear:function(){return this.date.getFullYear()}},methods:{prevMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth-1,1)},nextMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth+1,1)},generateWeekdayNames:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],n=2;n<=t;n++){var r=e.shift();e.push(r)}return e},generateDayStyle:function(t){var e=this,n={},r=!0,o=!1,i=void 0;try{for(var a,u=function(){var r=a.value;if(t.isInRange(r.start,r.end,r.repeat)){var o=e.eventCategories.find((function(t){return t.id===r.categoryId}))||{};c()(n,{color:o.id?o.textColor:null,backgroundColor:o.id?o.backgroundColor:null,fontWeight:o.id?\"bold\":\"normal\"})}},s=f()(this.events);!(r=(a=s.next()).done);r=!0)u()}catch(l){o=!0,i=l}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n},generateBeforeStyle:function(t){var e=this,n={},r=!0,o=!1,i=void 0;try{for(var a,u=function(){var r=a.value;if(t.isInRange(r.start,r.end,r.repeat)&&t.getPrevDay().isInRange(r.start,r.end,r.repeat)){var o=e.eventCategories.find((function(t){return t.id===r.categoryId}))||{};c()(n,{backgroundColor:o.backgroundColor})}},s=f()(this.events);!(r=(a=s.next()).done);r=!0)u()}catch(l){o=!0,i=l}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n},generateAfterStyle:function(t){var e=this,n={},r=!0,o=!1,i=void 0;try{for(var a,u=function(){var r=a.value;if(t.isInRange(r.start,r.end,r.repeat)&&t.getNextDay().isInRange(r.start,r.end,r.repeat)){var o=e.eventCategories.find((function(t){return t.id===r.categoryId}))||{};c()(n,{backgroundColor:o.backgroundColor})}},s=f()(this.events);!(r=(a=s.next()).done);r=!0)u()}catch(l){o=!0,i=l}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n},goToday:function(){this.date=this.today}},props:{initialDate:{type:String,default:null},firstDayOfWeek:{type:Number,default:1},eventCategories:{type:Array,default:function(){return[]}},events:{type:Array,default:function(){return[]}},offDays:{type:Array,default:function(){return[1,7]}}},beforeMount:function(){this.date=Date.parse(this.initialDate)?new P(this.initialDate):new P,this.weekdays=this.generateWeekdayNames(this.firstDayOfWeek)}},F=E;n(\"e472\");function I(t,e,n,r,o,i,a,c){var u,f=\"function\"===typeof t?t.options:t;if(e&&(f.render=e,f.staticRenderFns=n,f._compiled=!0),r&&(f.functional=!0),i&&(f._scopeId=\"data-v-\"+i),a?(u=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},f._ssrRegister=u):o&&(u=c?function(){o.call(this,(f.functional?this.parent:this).$root.$options.shadowRoot)}:o),u)if(f.functional){f._injectStyles=u;var s=f.render;f.render=function(t,e){return u.call(e),s(t,e)}}else{var l=f.beforeCreate;f.beforeCreate=l?[].concat(l,u):[u]}return{exports:t,options:f}}var N=I(F,o,i,!1,null,\"22807381\",null),L=N.exports,R=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{attrs:{id:\"sweetCalendar\"}},[n(\"div\",{staticClass:\"container date-picker\"},[n(\"div\",{staticClass:\"header\"},[n(\"div\",{staticClass:\"left-arrow\",on:{click:t.prevMonth}},[n(\"span\",[t._v(\"<\")])]),n(\"div\",{staticClass:\"month\"},[t._v(t._s(t.selectedMonthName)+\" \"+t._s(t.selectedYear))]),n(\"div\",{staticClass:\"right-arrow\",on:{click:t.nextMonth}},[n(\"span\",[t._v(\">\")])])]),n(\"div\",{staticClass:\"body\"},[t._l(t.weekdays,(function(e,r){return n(\"div\",{key:\"day-name-\"+(r+1),staticClass:\"day-name\",attrs:{title:e}},[t._v(\"\\n \"+t._s(e[0])+\"\\n \")])})),t._l(t.days,(function(e,r){return n(\"div\",{key:r,staticClass:\"day-container\"},[e?n(\"div\",{class:[\"day\",\"day-\"+e.getDate()+\",\\n weekday-\"+e.getDay(),t.offDays.includes(e.getDay())?\"off-day\":null,e.toDateString()===t.today.toDateString()?\"today\":null,t.isSelected(e)?\"selected\":null],on:{click:function(n){return t.selectDay(e)}}},[n(\"span\",[t._v(t._s(e.getDate()))])]):t._e()])}))],2)])])},W=[],Y={name:\"DatePicker\",data:function(){return{today:new P,date:null,weekdays:null}},computed:{days:function(){var t=this,e=Array((this.startWeekDayOfMonth-this.firstDayOfWeek+7)%7).fill(null),n=Array(this.numberOfDays).fill().map((function(e,n){return new P(t.selectedYear,t.selectedMonth,n+1)}));return e.concat(n)},startWeekDayOfMonth:function(){return this.date.getFirstWeekdayOfMonth()},numberOfDays:function(){return this.date.getNumberOfDaysInMonth()},selectedMonth:function(){return this.date.getMonth()},selectedMonthName:function(){return this.date.getMonthName()},selectedYear:function(){return this.date.getFullYear()}},methods:{prevMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth-1,1)},nextMonth:function(){this.date=new P(this.selectedYear,this.selectedMonth+1,1)},generateWeekdayNames:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],n=2;n<=t;n++){var r=e.shift();e.push(r)}return e},selectDay:function(t){this.$emit(\"setDate\",{iso:t.toISOString(),timeZoneOffset:t.getTimezoneOffset()})},isSelected:function(t){return!!this.selectedDate&&t.toDateString()===new P(this.selectedDate).toDateString()}},props:{initialDate:{type:String,default:null},selectedDate:{type:String,default:null},firstDayOfWeek:{type:Number,default:1},offDays:{type:Array,default:function(){return[1,7]}}},beforeMount:function(){this.date=Date.parse(this.initialDate)?new P(this.initialDate):new P,this.weekdays=this.generateWeekdayNames(this.firstDayOfWeek)}},G=Y,V=(n(\"5f00\"),I(G,R,W,!1,null,\"0e5943d9\",null)),$=V.exports;n.d(e,\"Calendar\",(function(){return L})),n.d(e,\"DatePicker\",(function(){return $}))},fdef:function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"}})}));\n//# sourceMappingURL=SweetCalendar.umd.min.js.map","/*!\n * FullCalendar v3.10.1\n * Docs & License: https://fullcalendar.io/\n * (c) 2019 Adam Shaw\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"moment\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"moment\", \"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"FullCalendar\"] = factory(require(\"moment\"), require(\"jquery\"));\n\telse\n\t\troot[\"FullCalendar\"] = factory(root[\"moment\"], root[\"jQuery\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_3__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 256);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_0__;\n\n/***/ }),\n/* 1 */,\n/* 2 */\n/***/ (function(module, exports) {\n\n/*\r\nderived from:\r\nhttps://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js\r\n\nonly include the helpers we need, to keep down filesize\r\n*/\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b)\r\n if (b.hasOwnProperty(p))\r\n d[p] = b[p]; };\r\nexports.__extends = function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\n/* FullCalendar-specific DOM Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left\r\n// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.\r\nfunction compensateScroll(rowEls, scrollbarWidths) {\r\n if (scrollbarWidths.left) {\r\n rowEls.css({\r\n 'border-left-width': 1,\r\n 'margin-left': scrollbarWidths.left - 1\r\n });\r\n }\r\n if (scrollbarWidths.right) {\r\n rowEls.css({\r\n 'border-right-width': 1,\r\n 'margin-right': scrollbarWidths.right - 1\r\n });\r\n }\r\n}\r\nexports.compensateScroll = compensateScroll;\r\n// Undoes compensateScroll and restores all borders/margins\r\nfunction uncompensateScroll(rowEls) {\r\n rowEls.css({\r\n 'margin-left': '',\r\n 'margin-right': '',\r\n 'border-left-width': '',\r\n 'border-right-width': ''\r\n });\r\n}\r\nexports.uncompensateScroll = uncompensateScroll;\r\n// Make the mouse cursor express that an event is not allowed in the current area\r\nfunction disableCursor() {\r\n $('body').addClass('fc-not-allowed');\r\n}\r\nexports.disableCursor = disableCursor;\r\n// Returns the mouse cursor to its original look\r\nfunction enableCursor() {\r\n $('body').removeClass('fc-not-allowed');\r\n}\r\nexports.enableCursor = enableCursor;\r\n// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.\r\n// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering\r\n// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and\r\n// reduces the available height.\r\nfunction distributeHeight(els, availableHeight, shouldRedistribute) {\r\n // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,\r\n // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.\r\n var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element\r\n var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*\r\n var flexEls = []; // elements that are allowed to expand. array of DOM nodes\r\n var flexOffsets = []; // amount of vertical space it takes up\r\n var flexHeights = []; // actual css height\r\n var usedHeight = 0;\r\n undistributeHeight(els); // give all elements their natural height\r\n // find elements that are below the recommended height (expandable).\r\n // important to query for heights in a single first pass (to avoid reflow oscillation).\r\n els.each(function (i, el) {\r\n var minOffset = i === els.length - 1 ? minOffset2 : minOffset1;\r\n var naturalOffset = $(el).outerHeight(true);\r\n if (naturalOffset < minOffset) {\r\n flexEls.push(el);\r\n flexOffsets.push(naturalOffset);\r\n flexHeights.push($(el).height());\r\n }\r\n else {\r\n // this element stretches past recommended height (non-expandable). mark the space as occupied.\r\n usedHeight += naturalOffset;\r\n }\r\n });\r\n // readjust the recommended height to only consider the height available to non-maxed-out rows.\r\n if (shouldRedistribute) {\r\n availableHeight -= usedHeight;\r\n minOffset1 = Math.floor(availableHeight / flexEls.length);\r\n minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*\r\n }\r\n // assign heights to all expandable elements\r\n $(flexEls).each(function (i, el) {\r\n var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;\r\n var naturalOffset = flexOffsets[i];\r\n var naturalHeight = flexHeights[i];\r\n var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding\r\n if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things\r\n $(el).height(newHeight);\r\n }\r\n });\r\n}\r\nexports.distributeHeight = distributeHeight;\r\n// Undoes distrubuteHeight, restoring all els to their natural height\r\nfunction undistributeHeight(els) {\r\n els.height('');\r\n}\r\nexports.undistributeHeight = undistributeHeight;\r\n// Given `els`, a jQuery set of cells, find the cell with the largest natural width and set the widths of all the\r\n// cells to be that width.\r\n// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline\r\nfunction matchCellWidths(els) {\r\n var maxInnerWidth = 0;\r\n els.find('> *').each(function (i, innerEl) {\r\n var innerWidth = $(innerEl).outerWidth();\r\n if (innerWidth > maxInnerWidth) {\r\n maxInnerWidth = innerWidth;\r\n }\r\n });\r\n maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance\r\n els.width(maxInnerWidth);\r\n return maxInnerWidth;\r\n}\r\nexports.matchCellWidths = matchCellWidths;\r\n// Given one element that resides inside another,\r\n// Subtracts the height of the inner element from the outer element.\r\nfunction subtractInnerElHeight(outerEl, innerEl) {\r\n var both = outerEl.add(innerEl);\r\n var diff;\r\n // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked\r\n both.css({\r\n position: 'relative',\r\n left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll\r\n });\r\n diff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions\r\n both.css({ position: '', left: '' }); // undo hack\r\n return diff;\r\n}\r\nexports.subtractInnerElHeight = subtractInnerElHeight;\r\n/* Element Geom Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51\r\nfunction getScrollParent(el) {\r\n var position = el.css('position');\r\n var scrollParent = el.parents().filter(function () {\r\n var parent = $(this);\r\n return (/(auto|scroll)/).test(parent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x'));\r\n }).eq(0);\r\n return position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent;\r\n}\r\nexports.getScrollParent = getScrollParent;\r\n// Queries the outer bounding area of a jQuery element.\r\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\r\n// Origin is optional.\r\nfunction getOuterRect(el, origin) {\r\n var offset = el.offset();\r\n var left = offset.left - (origin ? origin.left : 0);\r\n var top = offset.top - (origin ? origin.top : 0);\r\n return {\r\n left: left,\r\n right: left + el.outerWidth(),\r\n top: top,\r\n bottom: top + el.outerHeight()\r\n };\r\n}\r\nexports.getOuterRect = getOuterRect;\r\n// Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding.\r\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\r\n// Origin is optional.\r\n// WARNING: given element can't have borders\r\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\r\nfunction getClientRect(el, origin) {\r\n var offset = el.offset();\r\n var scrollbarWidths = getScrollbarWidths(el);\r\n var left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0);\r\n var top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0);\r\n return {\r\n left: left,\r\n right: left + el[0].clientWidth,\r\n top: top,\r\n bottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars\r\n };\r\n}\r\nexports.getClientRect = getClientRect;\r\n// Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars.\r\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\r\n// Origin is optional.\r\nfunction getContentRect(el, origin) {\r\n var offset = el.offset(); // just outside of border, margin not included\r\n var left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') -\r\n (origin ? origin.left : 0);\r\n var top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') -\r\n (origin ? origin.top : 0);\r\n return {\r\n left: left,\r\n right: left + el.width(),\r\n top: top,\r\n bottom: top + el.height()\r\n };\r\n}\r\nexports.getContentRect = getContentRect;\r\n// Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element.\r\n// WARNING: given element can't have borders (which will cause offsetWidth/offsetHeight to be larger).\r\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\r\nfunction getScrollbarWidths(el) {\r\n var leftRightWidth = el[0].offsetWidth - el[0].clientWidth;\r\n var bottomWidth = el[0].offsetHeight - el[0].clientHeight;\r\n var widths;\r\n leftRightWidth = sanitizeScrollbarWidth(leftRightWidth);\r\n bottomWidth = sanitizeScrollbarWidth(bottomWidth);\r\n widths = { left: 0, right: 0, top: 0, bottom: bottomWidth };\r\n if (getIsLeftRtlScrollbars() && el.css('direction') === 'rtl') { // is the scrollbar on the left side?\r\n widths.left = leftRightWidth;\r\n }\r\n else {\r\n widths.right = leftRightWidth;\r\n }\r\n return widths;\r\n}\r\nexports.getScrollbarWidths = getScrollbarWidths;\r\n// The scrollbar width computations in getScrollbarWidths are sometimes flawed when it comes to\r\n// retina displays, rounding, and IE11. Massage them into a usable value.\r\nfunction sanitizeScrollbarWidth(width) {\r\n width = Math.max(0, width); // no negatives\r\n width = Math.round(width);\r\n return width;\r\n}\r\n// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\r\nvar _isLeftRtlScrollbars = null;\r\nfunction getIsLeftRtlScrollbars() {\r\n if (_isLeftRtlScrollbars === null) {\r\n _isLeftRtlScrollbars = computeIsLeftRtlScrollbars();\r\n }\r\n return _isLeftRtlScrollbars;\r\n}\r\nfunction computeIsLeftRtlScrollbars() {\r\n var el = $('
')\r\n .css({\r\n position: 'absolute',\r\n top: -1000,\r\n left: 0,\r\n border: 0,\r\n padding: 0,\r\n overflow: 'scroll',\r\n direction: 'rtl'\r\n })\r\n .appendTo('body');\r\n var innerEl = el.children();\r\n var res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar?\r\n el.remove();\r\n return res;\r\n}\r\n// Retrieves a jQuery element's computed CSS value as a floating-point number.\r\n// If the queried value is non-numeric (ex: IE can return \"medium\" for border width), will just return zero.\r\nfunction getCssFloat(el, prop) {\r\n return parseFloat(el.css(prop)) || 0;\r\n}\r\n/* Mouse / Touch Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\r\nfunction isPrimaryMouseButton(ev) {\r\n return ev.which === 1 && !ev.ctrlKey;\r\n}\r\nexports.isPrimaryMouseButton = isPrimaryMouseButton;\r\nfunction getEvX(ev) {\r\n var touches = ev.originalEvent.touches;\r\n // on mobile FF, pageX for touch events is present, but incorrect,\r\n // so, look at touch coordinates first.\r\n if (touches && touches.length) {\r\n return touches[0].pageX;\r\n }\r\n return ev.pageX;\r\n}\r\nexports.getEvX = getEvX;\r\nfunction getEvY(ev) {\r\n var touches = ev.originalEvent.touches;\r\n // on mobile FF, pageX for touch events is present, but incorrect,\r\n // so, look at touch coordinates first.\r\n if (touches && touches.length) {\r\n return touches[0].pageY;\r\n }\r\n return ev.pageY;\r\n}\r\nexports.getEvY = getEvY;\r\nfunction getEvIsTouch(ev) {\r\n return /^touch/.test(ev.type);\r\n}\r\nexports.getEvIsTouch = getEvIsTouch;\r\nfunction preventSelection(el) {\r\n el.addClass('fc-unselectable')\r\n .on('selectstart', preventDefault);\r\n}\r\nexports.preventSelection = preventSelection;\r\nfunction allowSelection(el) {\r\n el.removeClass('fc-unselectable')\r\n .off('selectstart', preventDefault);\r\n}\r\nexports.allowSelection = allowSelection;\r\n// Stops a mouse/touch event from doing it's native browser action\r\nfunction preventDefault(ev) {\r\n ev.preventDefault();\r\n}\r\nexports.preventDefault = preventDefault;\r\n/* General Geometry Utils\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\r\nfunction intersectRects(rect1, rect2) {\r\n var res = {\r\n left: Math.max(rect1.left, rect2.left),\r\n right: Math.min(rect1.right, rect2.right),\r\n top: Math.max(rect1.top, rect2.top),\r\n bottom: Math.min(rect1.bottom, rect2.bottom)\r\n };\r\n if (res.left < res.right && res.top < res.bottom) {\r\n return res;\r\n }\r\n return false;\r\n}\r\nexports.intersectRects = intersectRects;\r\n// Returns a new point that will have been moved to reside within the given rectangle\r\nfunction constrainPoint(point, rect) {\r\n return {\r\n left: Math.min(Math.max(point.left, rect.left), rect.right),\r\n top: Math.min(Math.max(point.top, rect.top), rect.bottom)\r\n };\r\n}\r\nexports.constrainPoint = constrainPoint;\r\n// Returns a point that is the center of the given rectangle\r\nfunction getRectCenter(rect) {\r\n return {\r\n left: (rect.left + rect.right) / 2,\r\n top: (rect.top + rect.bottom) / 2\r\n };\r\n}\r\nexports.getRectCenter = getRectCenter;\r\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\r\nfunction diffPoints(point1, point2) {\r\n return {\r\n left: point1.left - point2.left,\r\n top: point1.top - point2.top\r\n };\r\n}\r\nexports.diffPoints = diffPoints;\r\n/* Object Ordering by Field\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nfunction parseFieldSpecs(input) {\r\n var specs = [];\r\n var tokens = [];\r\n var i;\r\n var token;\r\n if (typeof input === 'string') {\r\n tokens = input.split(/\\s*,\\s*/);\r\n }\r\n else if (typeof input === 'function') {\r\n tokens = [input];\r\n }\r\n else if ($.isArray(input)) {\r\n tokens = input;\r\n }\r\n for (i = 0; i < tokens.length; i++) {\r\n token = tokens[i];\r\n if (typeof token === 'string') {\r\n specs.push(token.charAt(0) === '-' ?\r\n { field: token.substring(1), order: -1 } :\r\n { field: token, order: 1 });\r\n }\r\n else if (typeof token === 'function') {\r\n specs.push({ func: token });\r\n }\r\n }\r\n return specs;\r\n}\r\nexports.parseFieldSpecs = parseFieldSpecs;\r\nfunction compareByFieldSpecs(obj1, obj2, fieldSpecs, obj1fallback, obj2fallback) {\r\n var i;\r\n var cmp;\r\n for (i = 0; i < fieldSpecs.length; i++) {\r\n cmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i], obj1fallback, obj2fallback);\r\n if (cmp) {\r\n return cmp;\r\n }\r\n }\r\n return 0;\r\n}\r\nexports.compareByFieldSpecs = compareByFieldSpecs;\r\nfunction compareByFieldSpec(obj1, obj2, fieldSpec, obj1fallback, obj2fallback) {\r\n if (fieldSpec.func) {\r\n return fieldSpec.func(obj1, obj2);\r\n }\r\n var val1 = obj1[fieldSpec.field];\r\n var val2 = obj2[fieldSpec.field];\r\n if (val1 == null && obj1fallback) {\r\n val1 = obj1fallback[fieldSpec.field];\r\n }\r\n if (val2 == null && obj2fallback) {\r\n val2 = obj2fallback[fieldSpec.field];\r\n }\r\n return flexibleCompare(val1, val2) * (fieldSpec.order || 1);\r\n}\r\nexports.compareByFieldSpec = compareByFieldSpec;\r\nfunction flexibleCompare(a, b) {\r\n if (!a && !b) {\r\n return 0;\r\n }\r\n if (b == null) {\r\n return -1;\r\n }\r\n if (a == null) {\r\n return 1;\r\n }\r\n if ($.type(a) === 'string' || $.type(b) === 'string') {\r\n return String(a).localeCompare(String(b));\r\n }\r\n return a - b;\r\n}\r\nexports.flexibleCompare = flexibleCompare;\r\n/* Date Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nexports.dayIDs = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\r\nexports.unitsDesc = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; // descending\r\n// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time.\r\n// Moments will have their timezones normalized.\r\nfunction diffDayTime(a, b) {\r\n return moment.duration({\r\n days: a.clone().stripTime().diff(b.clone().stripTime(), 'days'),\r\n ms: a.time() - b.time() // time-of-day from day start. disregards timezone\r\n });\r\n}\r\nexports.diffDayTime = diffDayTime;\r\n// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations.\r\nfunction diffDay(a, b) {\r\n return moment.duration({\r\n days: a.clone().stripTime().diff(b.clone().stripTime(), 'days')\r\n });\r\n}\r\nexports.diffDay = diffDay;\r\n// Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding.\r\nfunction diffByUnit(a, b, unit) {\r\n return moment.duration(Math.round(a.diff(b, unit, true)), // returnFloat=true\r\n unit);\r\n}\r\nexports.diffByUnit = diffByUnit;\r\n// Computes the unit name of the largest whole-unit period of time.\r\n// For example, 48 hours will be \"days\" whereas 49 hours will be \"hours\".\r\n// Accepts start/end, a range object, or an original duration object.\r\nfunction computeGreatestUnit(start, end) {\r\n var i;\r\n var unit;\r\n var val;\r\n for (i = 0; i < exports.unitsDesc.length; i++) {\r\n unit = exports.unitsDesc[i];\r\n val = computeRangeAs(unit, start, end);\r\n if (val >= 1 && isInt(val)) {\r\n break;\r\n }\r\n }\r\n return unit; // will be \"milliseconds\" if nothing else matches\r\n}\r\nexports.computeGreatestUnit = computeGreatestUnit;\r\n// like computeGreatestUnit, but has special abilities to interpret the source input for clues\r\nfunction computeDurationGreatestUnit(duration, durationInput) {\r\n var unit = computeGreatestUnit(duration);\r\n // prevent days:7 from being interpreted as a week\r\n if (unit === 'week' && typeof durationInput === 'object' && durationInput.days) {\r\n unit = 'day';\r\n }\r\n return unit;\r\n}\r\nexports.computeDurationGreatestUnit = computeDurationGreatestUnit;\r\n// Computes the number of units (like \"hours\") in the given range.\r\n// Range can be a {start,end} object, separate start/end args, or a Duration.\r\n// Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling\r\n// of month-diffing logic (which tends to vary from version to version).\r\nfunction computeRangeAs(unit, start, end) {\r\n if (end != null) { // given start, end\r\n return end.diff(start, unit, true);\r\n }\r\n else if (moment.isDuration(start)) { // given duration\r\n return start.as(unit);\r\n }\r\n else { // given { start, end } range object\r\n return start.end.diff(start.start, unit, true);\r\n }\r\n}\r\n// Intelligently divides a range (specified by a start/end params) by a duration\r\nfunction divideRangeByDuration(start, end, dur) {\r\n var months;\r\n if (durationHasTime(dur)) {\r\n return (end - start) / dur;\r\n }\r\n months = dur.asMonths();\r\n if (Math.abs(months) >= 1 && isInt(months)) {\r\n return end.diff(start, 'months', true) / months;\r\n }\r\n return end.diff(start, 'days', true) / dur.asDays();\r\n}\r\nexports.divideRangeByDuration = divideRangeByDuration;\r\n// Intelligently divides one duration by another\r\nfunction divideDurationByDuration(dur1, dur2) {\r\n var months1;\r\n var months2;\r\n if (durationHasTime(dur1) || durationHasTime(dur2)) {\r\n return dur1 / dur2;\r\n }\r\n months1 = dur1.asMonths();\r\n months2 = dur2.asMonths();\r\n if (Math.abs(months1) >= 1 && isInt(months1) &&\r\n Math.abs(months2) >= 1 && isInt(months2)) {\r\n return months1 / months2;\r\n }\r\n return dur1.asDays() / dur2.asDays();\r\n}\r\nexports.divideDurationByDuration = divideDurationByDuration;\r\n// Intelligently multiplies a duration by a number\r\nfunction multiplyDuration(dur, n) {\r\n var months;\r\n if (durationHasTime(dur)) {\r\n return moment.duration(dur * n);\r\n }\r\n months = dur.asMonths();\r\n if (Math.abs(months) >= 1 && isInt(months)) {\r\n return moment.duration({ months: months * n });\r\n }\r\n return moment.duration({ days: dur.asDays() * n });\r\n}\r\nexports.multiplyDuration = multiplyDuration;\r\n// Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms)\r\nfunction durationHasTime(dur) {\r\n return Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds());\r\n}\r\nexports.durationHasTime = durationHasTime;\r\nfunction isNativeDate(input) {\r\n return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date;\r\n}\r\nexports.isNativeDate = isNativeDate;\r\n// Returns a boolean about whether the given input is a time string, like \"06:40:00\" or \"06:00\"\r\nfunction isTimeString(str) {\r\n return typeof str === 'string' &&\r\n /^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(str);\r\n}\r\nexports.isTimeString = isTimeString;\r\n/* Logging and Debug\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nfunction log() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var console = window.console;\r\n if (console && console.log) {\r\n return console.log.apply(console, args);\r\n }\r\n}\r\nexports.log = log;\r\nfunction warn() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var console = window.console;\r\n if (console && console.warn) {\r\n return console.warn.apply(console, args);\r\n }\r\n else {\r\n return log.apply(null, args);\r\n }\r\n}\r\nexports.warn = warn;\r\n/* General Utilities\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar hasOwnPropMethod = {}.hasOwnProperty;\r\n// Merges an array of objects into a single object.\r\n// The second argument allows for an array of property names who's object values will be merged together.\r\nfunction mergeProps(propObjs, complexProps) {\r\n var dest = {};\r\n var i;\r\n var name;\r\n var complexObjs;\r\n var j;\r\n var val;\r\n var props;\r\n if (complexProps) {\r\n for (i = 0; i < complexProps.length; i++) {\r\n name = complexProps[i];\r\n complexObjs = [];\r\n // collect the trailing object values, stopping when a non-object is discovered\r\n for (j = propObjs.length - 1; j >= 0; j--) {\r\n val = propObjs[j][name];\r\n if (typeof val === 'object') {\r\n complexObjs.unshift(val);\r\n }\r\n else if (val !== undefined) {\r\n dest[name] = val; // if there were no objects, this value will be used\r\n break;\r\n }\r\n }\r\n // if the trailing values were objects, use the merged value\r\n if (complexObjs.length) {\r\n dest[name] = mergeProps(complexObjs);\r\n }\r\n }\r\n }\r\n // copy values into the destination, going from last to first\r\n for (i = propObjs.length - 1; i >= 0; i--) {\r\n props = propObjs[i];\r\n for (name in props) {\r\n if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\r\n dest[name] = props[name];\r\n }\r\n }\r\n }\r\n return dest;\r\n}\r\nexports.mergeProps = mergeProps;\r\nfunction copyOwnProps(src, dest) {\r\n for (var name_1 in src) {\r\n if (hasOwnProp(src, name_1)) {\r\n dest[name_1] = src[name_1];\r\n }\r\n }\r\n}\r\nexports.copyOwnProps = copyOwnProps;\r\nfunction hasOwnProp(obj, name) {\r\n return hasOwnPropMethod.call(obj, name);\r\n}\r\nexports.hasOwnProp = hasOwnProp;\r\nfunction applyAll(functions, thisObj, args) {\r\n if ($.isFunction(functions)) {\r\n functions = [functions];\r\n }\r\n if (functions) {\r\n var i = void 0;\r\n var ret = void 0;\r\n for (i = 0; i < functions.length; i++) {\r\n ret = functions[i].apply(thisObj, args) || ret;\r\n }\r\n return ret;\r\n }\r\n}\r\nexports.applyAll = applyAll;\r\nfunction removeMatching(array, testFunc) {\r\n var removeCnt = 0;\r\n var i = 0;\r\n while (i < array.length) {\r\n if (testFunc(array[i])) { // truthy value means *remove*\r\n array.splice(i, 1);\r\n removeCnt++;\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n return removeCnt;\r\n}\r\nexports.removeMatching = removeMatching;\r\nfunction removeExact(array, exactVal) {\r\n var removeCnt = 0;\r\n var i = 0;\r\n while (i < array.length) {\r\n if (array[i] === exactVal) {\r\n array.splice(i, 1);\r\n removeCnt++;\r\n }\r\n else {\r\n i++;\r\n }\r\n }\r\n return removeCnt;\r\n}\r\nexports.removeExact = removeExact;\r\nfunction isArraysEqual(a0, a1) {\r\n var len = a0.length;\r\n var i;\r\n if (len == null || len !== a1.length) { // not array? or not same length?\r\n return false;\r\n }\r\n for (i = 0; i < len; i++) {\r\n if (a0[i] !== a1[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.isArraysEqual = isArraysEqual;\r\nfunction firstDefined() {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n for (var i = 0; i < args.length; i++) {\r\n if (args[i] !== undefined) {\r\n return args[i];\r\n }\r\n }\r\n}\r\nexports.firstDefined = firstDefined;\r\nfunction htmlEscape(s) {\r\n return (s + '').replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/'/g, ''')\r\n .replace(/\"/g, '"')\r\n .replace(/\\n/g, '
');\r\n}\r\nexports.htmlEscape = htmlEscape;\r\nfunction stripHtmlEntities(text) {\r\n return text.replace(/&.*?;/g, '');\r\n}\r\nexports.stripHtmlEntities = stripHtmlEntities;\r\n// Given a hash of CSS properties, returns a string of CSS.\r\n// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.\r\nfunction cssToStr(cssProps) {\r\n var statements = [];\r\n $.each(cssProps, function (name, val) {\r\n if (val != null) {\r\n statements.push(name + ':' + val);\r\n }\r\n });\r\n return statements.join(';');\r\n}\r\nexports.cssToStr = cssToStr;\r\n// Given an object hash of HTML attribute names to values,\r\n// generates a string that can be injected between < > in HTML\r\nfunction attrsToStr(attrs) {\r\n var parts = [];\r\n $.each(attrs, function (name, val) {\r\n if (val != null) {\r\n parts.push(name + '=\"' + htmlEscape(val) + '\"');\r\n }\r\n });\r\n return parts.join(' ');\r\n}\r\nexports.attrsToStr = attrsToStr;\r\nfunction capitaliseFirstLetter(str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\nexports.capitaliseFirstLetter = capitaliseFirstLetter;\r\nfunction compareNumbers(a, b) {\r\n return a - b;\r\n}\r\nexports.compareNumbers = compareNumbers;\r\nfunction isInt(n) {\r\n return n % 1 === 0;\r\n}\r\nexports.isInt = isInt;\r\n// Returns a method bound to the given object context.\r\n// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with\r\n// different contexts as identical when binding/unbinding events.\r\nfunction proxy(obj, methodName) {\r\n var method = obj[methodName];\r\n return function () {\r\n return method.apply(obj, arguments);\r\n };\r\n}\r\nexports.proxy = proxy;\r\n// Returns a function, that, as long as it continues to be invoked, will not\r\n// be triggered. The function will be called after it stops being called for\r\n// N milliseconds. If `immediate` is passed, trigger the function on the\r\n// leading edge, instead of the trailing.\r\n// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714\r\nfunction debounce(func, wait, immediate) {\r\n if (immediate === void 0) { immediate = false; }\r\n var timeout;\r\n var args;\r\n var context;\r\n var timestamp;\r\n var result;\r\n var later = function () {\r\n var last = +new Date() - timestamp;\r\n if (last < wait) {\r\n timeout = setTimeout(later, wait - last);\r\n }\r\n else {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n }\r\n }\r\n };\r\n return function () {\r\n context = this;\r\n args = arguments;\r\n timestamp = +new Date();\r\n var callNow = immediate && !timeout;\r\n if (!timeout) {\r\n timeout = setTimeout(later, wait);\r\n }\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n }\r\n return result;\r\n };\r\n}\r\nexports.debounce = debounce;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar UnzonedRange = /** @class */ (function () {\r\n function UnzonedRange(startInput, endInput) {\r\n // TODO: move these into footprint.\r\n // Especially, doesn't make sense for null startMs/endMs.\r\n this.isStart = true;\r\n this.isEnd = true;\r\n if (moment.isMoment(startInput)) {\r\n startInput = startInput.clone().stripZone();\r\n }\r\n if (moment.isMoment(endInput)) {\r\n endInput = endInput.clone().stripZone();\r\n }\r\n if (startInput) {\r\n this.startMs = startInput.valueOf();\r\n }\r\n if (endInput) {\r\n this.endMs = endInput.valueOf();\r\n }\r\n }\r\n /*\r\n SIDEEFFECT: will mutate eventRanges.\r\n Will return a new array result.\r\n Only works for non-open-ended ranges.\r\n */\r\n UnzonedRange.invertRanges = function (ranges, constraintRange) {\r\n var invertedRanges = [];\r\n var startMs = constraintRange.startMs; // the end of the previous range. the start of the new range\r\n var i;\r\n var dateRange;\r\n // ranges need to be in order. required for our date-walking algorithm\r\n ranges.sort(compareUnzonedRanges);\r\n for (i = 0; i < ranges.length; i++) {\r\n dateRange = ranges[i];\r\n // add the span of time before the event (if there is any)\r\n if (dateRange.startMs > startMs) { // compare millisecond time (skip any ambig logic)\r\n invertedRanges.push(new UnzonedRange(startMs, dateRange.startMs));\r\n }\r\n if (dateRange.endMs > startMs) {\r\n startMs = dateRange.endMs;\r\n }\r\n }\r\n // add the span of time after the last event (if there is any)\r\n if (startMs < constraintRange.endMs) { // compare millisecond time (skip any ambig logic)\r\n invertedRanges.push(new UnzonedRange(startMs, constraintRange.endMs));\r\n }\r\n return invertedRanges;\r\n };\r\n UnzonedRange.prototype.intersect = function (otherRange) {\r\n var startMs = this.startMs;\r\n var endMs = this.endMs;\r\n var newRange = null;\r\n if (otherRange.startMs != null) {\r\n if (startMs == null) {\r\n startMs = otherRange.startMs;\r\n }\r\n else {\r\n startMs = Math.max(startMs, otherRange.startMs);\r\n }\r\n }\r\n if (otherRange.endMs != null) {\r\n if (endMs == null) {\r\n endMs = otherRange.endMs;\r\n }\r\n else {\r\n endMs = Math.min(endMs, otherRange.endMs);\r\n }\r\n }\r\n if (startMs == null || endMs == null || startMs < endMs) {\r\n newRange = new UnzonedRange(startMs, endMs);\r\n newRange.isStart = this.isStart && startMs === this.startMs;\r\n newRange.isEnd = this.isEnd && endMs === this.endMs;\r\n }\r\n return newRange;\r\n };\r\n UnzonedRange.prototype.intersectsWith = function (otherRange) {\r\n return (this.endMs == null || otherRange.startMs == null || this.endMs > otherRange.startMs) &&\r\n (this.startMs == null || otherRange.endMs == null || this.startMs < otherRange.endMs);\r\n };\r\n UnzonedRange.prototype.containsRange = function (innerRange) {\r\n return (this.startMs == null || (innerRange.startMs != null && innerRange.startMs >= this.startMs)) &&\r\n (this.endMs == null || (innerRange.endMs != null && innerRange.endMs <= this.endMs));\r\n };\r\n // `date` can be a moment, a Date, or a millisecond time.\r\n UnzonedRange.prototype.containsDate = function (date) {\r\n var ms = date.valueOf();\r\n return (this.startMs == null || ms >= this.startMs) &&\r\n (this.endMs == null || ms < this.endMs);\r\n };\r\n // If the given date is not within the given range, move it inside.\r\n // (If it's past the end, make it one millisecond before the end).\r\n // `date` can be a moment, a Date, or a millisecond time.\r\n // Returns a MS-time.\r\n UnzonedRange.prototype.constrainDate = function (date) {\r\n var ms = date.valueOf();\r\n if (this.startMs != null && ms < this.startMs) {\r\n ms = this.startMs;\r\n }\r\n if (this.endMs != null && ms >= this.endMs) {\r\n ms = this.endMs - 1;\r\n }\r\n return ms;\r\n };\r\n UnzonedRange.prototype.equals = function (otherRange) {\r\n return this.startMs === otherRange.startMs && this.endMs === otherRange.endMs;\r\n };\r\n UnzonedRange.prototype.clone = function () {\r\n var range = new UnzonedRange(this.startMs, this.endMs);\r\n range.isStart = this.isStart;\r\n range.isEnd = this.isEnd;\r\n return range;\r\n };\r\n // Returns an ambig-zoned moment from startMs.\r\n // BEWARE: returned moment is not localized.\r\n // Formatting and start-of-week will be default.\r\n UnzonedRange.prototype.getStart = function () {\r\n if (this.startMs != null) {\r\n return moment_ext_1.default.utc(this.startMs).stripZone();\r\n }\r\n return null;\r\n };\r\n // Returns an ambig-zoned moment from startMs.\r\n // BEWARE: returned moment is not localized.\r\n // Formatting and start-of-week will be default.\r\n UnzonedRange.prototype.getEnd = function () {\r\n if (this.endMs != null) {\r\n return moment_ext_1.default.utc(this.endMs).stripZone();\r\n }\r\n return null;\r\n };\r\n UnzonedRange.prototype.as = function (unit) {\r\n return moment.utc(this.endMs).diff(moment.utc(this.startMs), unit, true);\r\n };\r\n return UnzonedRange;\r\n}());\r\nexports.default = UnzonedRange;\r\n/*\r\nOnly works for non-open-ended ranges.\r\n*/\r\nfunction compareUnzonedRanges(range1, range2) {\r\n return range1.startMs - range2.startMs; // earlier ranges go first\r\n}\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar ParsableModelMixin_1 = __webpack_require__(52);\r\nvar Class_1 = __webpack_require__(35);\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nvar EventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventSource, _super);\r\n // can we do away with calendar? at least for the abstract?\r\n // useful for buildEventDef\r\n function EventSource(calendar) {\r\n var _this = _super.call(this) || this;\r\n _this.calendar = calendar;\r\n _this.className = [];\r\n _this.uid = String(EventSource.uuid++);\r\n return _this;\r\n }\r\n /*\r\n rawInput can be any data type!\r\n */\r\n EventSource.parse = function (rawInput, calendar) {\r\n var source = new this(calendar);\r\n if (typeof rawInput === 'object') {\r\n if (source.applyProps(rawInput)) {\r\n return source;\r\n }\r\n }\r\n return false;\r\n };\r\n EventSource.normalizeId = function (id) {\r\n if (id) {\r\n return String(id);\r\n }\r\n return null;\r\n };\r\n EventSource.prototype.fetch = function (start, end, timezone) {\r\n // subclasses must implement. must return a promise.\r\n };\r\n EventSource.prototype.removeEventDefsById = function (eventDefId) {\r\n // optional for subclasses to implement\r\n };\r\n EventSource.prototype.removeAllEventDefs = function () {\r\n // optional for subclasses to implement\r\n };\r\n /*\r\n For compairing/matching\r\n */\r\n EventSource.prototype.getPrimitive = function (otherSource) {\r\n // subclasses must implement\r\n };\r\n EventSource.prototype.parseEventDefs = function (rawEventDefs) {\r\n var i;\r\n var eventDef;\r\n var eventDefs = [];\r\n for (i = 0; i < rawEventDefs.length; i++) {\r\n eventDef = this.parseEventDef(rawEventDefs[i]);\r\n if (eventDef) {\r\n eventDefs.push(eventDef);\r\n }\r\n }\r\n return eventDefs;\r\n };\r\n EventSource.prototype.parseEventDef = function (rawInput) {\r\n var calendarTransform = this.calendar.opt('eventDataTransform');\r\n var sourceTransform = this.eventDataTransform;\r\n if (calendarTransform) {\r\n rawInput = calendarTransform(rawInput, this.calendar);\r\n }\r\n if (sourceTransform) {\r\n rawInput = sourceTransform(rawInput, this.calendar);\r\n }\r\n return EventDefParser_1.default.parse(rawInput, this);\r\n };\r\n EventSource.prototype.applyManualStandardProps = function (rawProps) {\r\n if (rawProps.id != null) {\r\n this.id = EventSource.normalizeId(rawProps.id);\r\n }\r\n // TODO: converge with EventDef\r\n if ($.isArray(rawProps.className)) {\r\n this.className = rawProps.className;\r\n }\r\n else if (typeof rawProps.className === 'string') {\r\n this.className = rawProps.className.split(/\\s+/);\r\n }\r\n return true;\r\n };\r\n EventSource.uuid = 0;\r\n EventSource.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps;\r\n EventSource.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps;\r\n return EventSource;\r\n}(Class_1.default));\r\nexports.default = EventSource;\r\nParsableModelMixin_1.default.mixInto(EventSource);\r\n// Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nEventSource.defineStandardProps({\r\n // manually process...\r\n id: false,\r\n className: false,\r\n // automatically transfer...\r\n color: true,\r\n backgroundColor: true,\r\n borderColor: true,\r\n textColor: true,\r\n editable: true,\r\n startEditable: true,\r\n durationEditable: true,\r\n rendering: true,\r\n overlap: true,\r\n constraint: true,\r\n allDayDefault: true,\r\n eventDataTransform: true\r\n});\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\r\nUtility methods for easily listening to events on another object,\r\nand more importantly, easily unlistening from them.\r\n\nUSAGE:\r\n import { default as ListenerMixin, ListenerInterface } from './ListenerMixin'\r\nin class:\r\n listenTo: ListenerInterface['listenTo']\r\n stopListeningTo: ListenerInterface['stopListeningTo']\r\nafter class:\r\n ListenerMixin.mixInto(TheClass)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar guid = 0;\r\nvar ListenerMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListenerMixin, _super);\r\n function ListenerMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /*\r\n Given an `other` object that has on/off methods, bind the given `callback` to an event by the given name.\r\n The `callback` will be called with the `this` context of the object that .listenTo is being called on.\r\n Can be called:\r\n .listenTo(other, eventName, callback)\r\n OR\r\n .listenTo(other, {\r\n eventName1: callback1,\r\n eventName2: callback2\r\n })\r\n */\r\n ListenerMixin.prototype.listenTo = function (other, arg, callback) {\r\n if (typeof arg === 'object') { // given dictionary of callbacks\r\n for (var eventName in arg) {\r\n if (arg.hasOwnProperty(eventName)) {\r\n this.listenTo(other, eventName, arg[eventName]);\r\n }\r\n }\r\n }\r\n else if (typeof arg === 'string') {\r\n other.on(arg + '.' + this.getListenerNamespace(), // use event namespacing to identify this object\r\n $.proxy(callback, this) // always use `this` context\r\n // the usually-undesired jQuery guid behavior doesn't matter,\r\n // because we always unbind via namespace\r\n );\r\n }\r\n };\r\n /*\r\n Causes the current object to stop listening to events on the `other` object.\r\n `eventName` is optional. If omitted, will stop listening to ALL events on `other`.\r\n */\r\n ListenerMixin.prototype.stopListeningTo = function (other, eventName) {\r\n other.off((eventName || '') + '.' + this.getListenerNamespace());\r\n };\r\n /*\r\n Returns a string, unique to this object, to be used for event namespacing\r\n */\r\n ListenerMixin.prototype.getListenerNamespace = function () {\r\n if (this.listenerId == null) {\r\n this.listenerId = guid++;\r\n }\r\n return '_listener' + this.listenerId;\r\n };\r\n return ListenerMixin;\r\n}(Mixin_1.default));\r\nexports.default = ListenerMixin;\r\n\n\n/***/ }),\n/* 8 */,\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar EventDef_1 = __webpack_require__(37);\r\nvar EventInstance_1 = __webpack_require__(53);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar SingleEventDef = /** @class */ (function (_super) {\r\n tslib_1.__extends(SingleEventDef, _super);\r\n function SingleEventDef() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /*\r\n Will receive start/end params, but will be ignored.\r\n */\r\n SingleEventDef.prototype.buildInstances = function () {\r\n return [this.buildInstance()];\r\n };\r\n SingleEventDef.prototype.buildInstance = function () {\r\n return new EventInstance_1.default(this, // definition\r\n this.dateProfile);\r\n };\r\n SingleEventDef.prototype.isAllDay = function () {\r\n return this.dateProfile.isAllDay();\r\n };\r\n SingleEventDef.prototype.clone = function () {\r\n var def = _super.prototype.clone.call(this);\r\n def.dateProfile = this.dateProfile;\r\n return def;\r\n };\r\n SingleEventDef.prototype.rezone = function () {\r\n var calendar = this.source.calendar;\r\n var dateProfile = this.dateProfile;\r\n this.dateProfile = new EventDateProfile_1.default(calendar.moment(dateProfile.start), dateProfile.end ? calendar.moment(dateProfile.end) : null, calendar);\r\n };\r\n /*\r\n NOTE: if super-method fails, should still attempt to apply\r\n */\r\n SingleEventDef.prototype.applyManualStandardProps = function (rawProps) {\r\n var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);\r\n var dateProfile = EventDateProfile_1.default.parse(rawProps, this.source); // returns null on failure\r\n if (dateProfile) {\r\n this.dateProfile = dateProfile;\r\n // make sure `date` shows up in the legacy event objects as-is\r\n if (rawProps.date != null) {\r\n this.miscProps.date = rawProps.date;\r\n }\r\n return superSuccess;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n return SingleEventDef;\r\n}(EventDef_1.default));\r\nexports.default = SingleEventDef;\r\n// Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nSingleEventDef.defineStandardProps({\r\n start: false,\r\n date: false,\r\n end: false,\r\n allDay: false\r\n});\r\n\n\n/***/ }),\n/* 10 */,\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ambigDateOfMonthRegex = /^\\s*\\d{4}-\\d\\d$/;\r\nvar ambigTimeOrZoneRegex = /^\\s*\\d{4}-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?)?$/;\r\nvar newMomentProto = moment.fn; // where we will attach our new methods\r\nexports.newMomentProto = newMomentProto;\r\nvar oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods\r\nexports.oldMomentProto = oldMomentProto;\r\n// tell momentjs to transfer these properties upon clone\r\nvar momentProperties = moment.momentProperties;\r\nmomentProperties.push('_fullCalendar');\r\nmomentProperties.push('_ambigTime');\r\nmomentProperties.push('_ambigZone');\r\n/*\r\nCall this if you want Moment's original format method to be used\r\n*/\r\nfunction oldMomentFormat(mom, formatStr) {\r\n return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js\r\n}\r\nexports.oldMomentFormat = oldMomentFormat;\r\n// Creating\r\n// -------------------------------------------------------------------------------------------------\r\n// Creates a new moment, similar to the vanilla moment(...) constructor, but with\r\n// extra features (ambiguous time, enhanced formatting). When given an existing moment,\r\n// it will function as a clone (and retain the zone of the moment). Anything else will\r\n// result in a moment in the local zone.\r\nvar momentExt = function () {\r\n return makeMoment(arguments);\r\n};\r\nexports.default = momentExt;\r\n// Sames as momentExt, but forces the resulting moment to be in the UTC timezone.\r\nmomentExt.utc = function () {\r\n var mom = makeMoment(arguments, true);\r\n // Force it into UTC because makeMoment doesn't guarantee it\r\n // (if given a pre-existing moment for example)\r\n if (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone\r\n mom.utc();\r\n }\r\n return mom;\r\n};\r\n// Same as momentExt, but when given an ISO8601 string, the timezone offset is preserved.\r\n// ISO8601 strings with no timezone offset will become ambiguously zoned.\r\nmomentExt.parseZone = function () {\r\n return makeMoment(arguments, true, true);\r\n};\r\n// Builds an enhanced moment from args. When given an existing moment, it clones. When given a\r\n// native Date, or called with no arguments (the current time), the resulting moment will be local.\r\n// Anything else needs to be \"parsed\" (a string or an array), and will be affected by:\r\n// parseAsUTC - if there is no zone information, should we parse the input in UTC?\r\n// parseZone - if there is zone information, should we force the zone of the moment?\r\nfunction makeMoment(args, parseAsUTC, parseZone) {\r\n if (parseAsUTC === void 0) { parseAsUTC = false; }\r\n if (parseZone === void 0) { parseZone = false; }\r\n var input = args[0];\r\n var isSingleString = args.length === 1 && typeof input === 'string';\r\n var isAmbigTime;\r\n var isAmbigZone;\r\n var ambigMatch;\r\n var mom;\r\n if (moment.isMoment(input) || util_1.isNativeDate(input) || input === undefined) {\r\n mom = moment.apply(null, args);\r\n }\r\n else { // \"parsing\" is required\r\n isAmbigTime = false;\r\n isAmbigZone = false;\r\n if (isSingleString) {\r\n if (ambigDateOfMonthRegex.test(input)) {\r\n // accept strings like '2014-05', but convert to the first of the month\r\n input += '-01';\r\n args = [input]; // for when we pass it on to moment's constructor\r\n isAmbigTime = true;\r\n isAmbigZone = true;\r\n }\r\n else if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) {\r\n isAmbigTime = !ambigMatch[5]; // no time part?\r\n isAmbigZone = true;\r\n }\r\n }\r\n else if ($.isArray(input)) {\r\n // arrays have no timezone information, so assume ambiguous zone\r\n isAmbigZone = true;\r\n }\r\n // otherwise, probably a string with a format\r\n if (parseAsUTC || isAmbigTime) {\r\n mom = moment.utc.apply(moment, args);\r\n }\r\n else {\r\n mom = moment.apply(null, args);\r\n }\r\n if (isAmbigTime) {\r\n mom._ambigTime = true;\r\n mom._ambigZone = true; // ambiguous time always means ambiguous zone\r\n }\r\n else if (parseZone) { // let's record the inputted zone somehow\r\n if (isAmbigZone) {\r\n mom._ambigZone = true;\r\n }\r\n else if (isSingleString) {\r\n mom.utcOffset(input); // if not a valid zone, will assign UTC\r\n }\r\n }\r\n }\r\n mom._fullCalendar = true; // flag for extended functionality\r\n return mom;\r\n}\r\n// Week Number\r\n// -------------------------------------------------------------------------------------------------\r\n// Returns the week number, considering the locale's custom week number calcuation\r\n// `weeks` is an alias for `week`\r\nnewMomentProto.week = newMomentProto.weeks = function (input) {\r\n var weekCalc = this._locale._fullCalendar_weekCalc;\r\n if (input == null && typeof weekCalc === 'function') { // custom function only works for getter\r\n return weekCalc(this);\r\n }\r\n else if (weekCalc === 'ISO') {\r\n return oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter\r\n }\r\n return oldMomentProto.week.apply(this, arguments); // local getter/setter\r\n};\r\n// Time-of-day\r\n// -------------------------------------------------------------------------------------------------\r\n// GETTER\r\n// Returns a Duration with the hours/minutes/seconds/ms values of the moment.\r\n// If the moment has an ambiguous time, a duration of 00:00 will be returned.\r\n//\r\n// SETTER\r\n// You can supply a Duration, a Moment, or a Duration-like argument.\r\n// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous.\r\nnewMomentProto.time = function (time) {\r\n // Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar.\r\n // `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins.\r\n if (!this._fullCalendar) {\r\n return oldMomentProto.time.apply(this, arguments);\r\n }\r\n if (time == null) { // getter\r\n return moment.duration({\r\n hours: this.hours(),\r\n minutes: this.minutes(),\r\n seconds: this.seconds(),\r\n milliseconds: this.milliseconds()\r\n });\r\n }\r\n else { // setter\r\n this._ambigTime = false; // mark that the moment now has a time\r\n if (!moment.isDuration(time) && !moment.isMoment(time)) {\r\n time = moment.duration(time);\r\n }\r\n // The day value should cause overflow (so 24 hours becomes 00:00:00 of next day).\r\n // Only for Duration times, not Moment times.\r\n var dayHours = 0;\r\n if (moment.isDuration(time)) {\r\n dayHours = Math.floor(time.asDays()) * 24;\r\n }\r\n // We need to set the individual fields.\r\n // Can't use startOf('day') then add duration. In case of DST at start of day.\r\n return this.hours(dayHours + time.hours())\r\n .minutes(time.minutes())\r\n .seconds(time.seconds())\r\n .milliseconds(time.milliseconds());\r\n }\r\n};\r\n// Converts the moment to UTC, stripping out its time-of-day and timezone offset,\r\n// but preserving its YMD. A moment with a stripped time will display no time\r\n// nor timezone offset when .format() is called.\r\nnewMomentProto.stripTime = function () {\r\n if (!this._ambigTime) {\r\n this.utc(true); // keepLocalTime=true (for keeping *date* value)\r\n // set time to zero\r\n this.set({\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0,\r\n ms: 0\r\n });\r\n // Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\r\n // which clears all ambig flags.\r\n this._ambigTime = true;\r\n this._ambigZone = true; // if ambiguous time, also ambiguous timezone offset\r\n }\r\n return this; // for chaining\r\n};\r\n// Returns if the moment has a non-ambiguous time (boolean)\r\nnewMomentProto.hasTime = function () {\r\n return !this._ambigTime;\r\n};\r\n// Timezone\r\n// -------------------------------------------------------------------------------------------------\r\n// Converts the moment to UTC, stripping out its timezone offset, but preserving its\r\n// YMD and time-of-day. A moment with a stripped timezone offset will display no\r\n// timezone offset when .format() is called.\r\nnewMomentProto.stripZone = function () {\r\n var wasAmbigTime;\r\n if (!this._ambigZone) {\r\n wasAmbigTime = this._ambigTime;\r\n this.utc(true); // keepLocalTime=true (for keeping date and time values)\r\n // the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore\r\n this._ambigTime = wasAmbigTime || false;\r\n // Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\r\n // which clears the ambig flags.\r\n this._ambigZone = true;\r\n }\r\n return this; // for chaining\r\n};\r\n// Returns of the moment has a non-ambiguous timezone offset (boolean)\r\nnewMomentProto.hasZone = function () {\r\n return !this._ambigZone;\r\n};\r\n// implicitly marks a zone\r\nnewMomentProto.local = function (keepLocalTime) {\r\n // for when converting from ambiguously-zoned to local,\r\n // keep the time values when converting from UTC -> local\r\n oldMomentProto.local.call(this, this._ambigZone || keepLocalTime);\r\n // ensure non-ambiguous\r\n // this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals\r\n this._ambigTime = false;\r\n this._ambigZone = false;\r\n return this; // for chaining\r\n};\r\n// implicitly marks a zone\r\nnewMomentProto.utc = function (keepLocalTime) {\r\n oldMomentProto.utc.call(this, keepLocalTime);\r\n // ensure non-ambiguous\r\n // this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals\r\n this._ambigTime = false;\r\n this._ambigZone = false;\r\n return this;\r\n};\r\n// implicitly marks a zone (will probably get called upon .utc() and .local())\r\nnewMomentProto.utcOffset = function (tzo) {\r\n if (tzo != null) { // setter\r\n // these assignments needs to happen before the original zone method is called.\r\n // I forget why, something to do with a browser crash.\r\n this._ambigTime = false;\r\n this._ambigZone = false;\r\n }\r\n return oldMomentProto.utcOffset.apply(this, arguments);\r\n};\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\nMeant to be immutable\r\n*/\r\nvar ComponentFootprint = /** @class */ (function () {\r\n function ComponentFootprint(unzonedRange, isAllDay) {\r\n this.isAllDay = false; // component can choose to ignore this\r\n this.unzonedRange = unzonedRange;\r\n this.isAllDay = isAllDay;\r\n }\r\n /*\r\n Only works for non-open-ended ranges.\r\n */\r\n ComponentFootprint.prototype.toLegacy = function (calendar) {\r\n return {\r\n start: calendar.msToMoment(this.unzonedRange.startMs, this.isAllDay),\r\n end: calendar.msToMoment(this.unzonedRange.endMs, this.isAllDay)\r\n };\r\n };\r\n return ComponentFootprint;\r\n}());\r\nexports.default = ComponentFootprint;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\r\nUSAGE:\r\n import { default as EmitterMixin, EmitterInterface } from './EmitterMixin'\r\nin class:\r\n on: EmitterInterface['on']\r\n one: EmitterInterface['one']\r\n off: EmitterInterface['off']\r\n trigger: EmitterInterface['trigger']\r\n triggerWith: EmitterInterface['triggerWith']\r\n hasHandlers: EmitterInterface['hasHandlers']\r\nafter class:\r\n EmitterMixin.mixInto(TheClass)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar EmitterMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(EmitterMixin, _super);\r\n function EmitterMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // jQuery-ification via $(this) allows a non-DOM object to have\r\n // the same event handling capabilities (including namespaces).\r\n EmitterMixin.prototype.on = function (types, handler) {\r\n $(this).on(types, this._prepareIntercept(handler));\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.one = function (types, handler) {\r\n $(this).one(types, this._prepareIntercept(handler));\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype._prepareIntercept = function (handler) {\r\n // handlers are always called with an \"event\" object as their first param.\r\n // sneak the `this` context and arguments into the extra parameter object\r\n // and forward them on to the original handler.\r\n var intercept = function (ev, extra) {\r\n return handler.apply(extra.context || this, extra.args || []);\r\n };\r\n // mimick jQuery's internal \"proxy\" system (risky, I know)\r\n // causing all functions with the same .guid to appear to be the same.\r\n // https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448\r\n // this is needed for calling .off with the original non-intercept handler.\r\n if (!handler.guid) {\r\n handler.guid = $.guid++;\r\n }\r\n intercept.guid = handler.guid;\r\n return intercept;\r\n };\r\n EmitterMixin.prototype.off = function (types, handler) {\r\n $(this).off(types, handler);\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.trigger = function (types) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n // pass in \"extra\" info to the intercept\r\n $(this).triggerHandler(types, { args: args });\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.triggerWith = function (types, context, args) {\r\n // `triggerHandler` is less reliant on the DOM compared to `trigger`.\r\n // pass in \"extra\" info to the intercept.\r\n $(this).triggerHandler(types, { context: context, args: args });\r\n return this; // for chaining\r\n };\r\n EmitterMixin.prototype.hasHandlers = function (type) {\r\n var hash = $._data(this, 'events'); // http://blog.jquery.com/2012/08/09/jquery-1-8-released/\r\n return hash && hash[type] && hash[type].length > 0;\r\n };\r\n return EmitterMixin;\r\n}(Mixin_1.default));\r\nexports.default = EmitterMixin;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Interaction = /** @class */ (function () {\r\n function Interaction(component) {\r\n this.view = component._getView();\r\n this.component = component;\r\n }\r\n Interaction.prototype.opt = function (name) {\r\n return this.view.opt(name);\r\n };\r\n Interaction.prototype.end = function () {\r\n // subclasses can implement\r\n };\r\n return Interaction;\r\n}());\r\nexports.default = Interaction;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Mixin = /** @class */ (function () {\r\n function Mixin() {\r\n }\r\n Mixin.mixInto = function (destClass) {\r\n var _this = this;\r\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\r\n if (!destClass.prototype[name]) { // if destination class doesn't already define it\r\n destClass.prototype[name] = _this.prototype[name];\r\n }\r\n });\r\n };\r\n /*\r\n will override existing methods\r\n TODO: remove! not used anymore\r\n */\r\n Mixin.mixOver = function (destClass) {\r\n var _this = this;\r\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\r\n destClass.prototype[name] = _this.prototype[name];\r\n });\r\n };\r\n return Mixin;\r\n}());\r\nexports.default = Mixin;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\n/*\r\nMeant to be immutable\r\n*/\r\nvar EventDateProfile = /** @class */ (function () {\r\n function EventDateProfile(start, end, calendar) {\r\n this.start = start;\r\n this.end = end || null;\r\n this.unzonedRange = this.buildUnzonedRange(calendar);\r\n }\r\n /*\r\n Needs an EventSource object\r\n */\r\n EventDateProfile.parse = function (rawProps, source) {\r\n var startInput = rawProps.start || rawProps.date;\r\n var endInput = rawProps.end;\r\n if (!startInput) {\r\n return false;\r\n }\r\n var calendar = source.calendar;\r\n var start = calendar.moment(startInput);\r\n var end = endInput ? calendar.moment(endInput) : null;\r\n var forcedAllDay = rawProps.allDay;\r\n var forceEventDuration = calendar.opt('forceEventDuration');\r\n if (!start.isValid()) {\r\n return false;\r\n }\r\n if (forcedAllDay == null) {\r\n forcedAllDay = source.allDayDefault;\r\n if (forcedAllDay == null) {\r\n forcedAllDay = calendar.opt('allDayDefault');\r\n }\r\n }\r\n if (forcedAllDay === true) {\r\n start.stripTime();\r\n if (end) {\r\n end.stripTime();\r\n }\r\n }\r\n else if (forcedAllDay === false) {\r\n if (!start.hasTime()) {\r\n start.time(0);\r\n }\r\n if (end && !end.hasTime()) {\r\n end.time(0);\r\n }\r\n }\r\n if (end && (!end.isValid() || !end.isAfter(start))) {\r\n end = null;\r\n }\r\n if (!end && forceEventDuration) {\r\n end = calendar.getDefaultEventEnd(!start.hasTime(), start);\r\n }\r\n return new EventDateProfile(start, end, calendar);\r\n };\r\n EventDateProfile.isStandardProp = function (propName) {\r\n return propName === 'start' || propName === 'date' || propName === 'end' || propName === 'allDay';\r\n };\r\n EventDateProfile.prototype.isAllDay = function () {\r\n return !(this.start.hasTime() || (this.end && this.end.hasTime()));\r\n };\r\n /*\r\n Needs a Calendar object\r\n */\r\n EventDateProfile.prototype.buildUnzonedRange = function (calendar) {\r\n var startMs = this.start.clone().stripZone().valueOf();\r\n var endMs = this.getEnd(calendar).stripZone().valueOf();\r\n return new UnzonedRange_1.default(startMs, endMs);\r\n };\r\n /*\r\n Needs a Calendar object\r\n */\r\n EventDateProfile.prototype.getEnd = function (calendar) {\r\n return this.end ?\r\n this.end.clone() :\r\n // derive the end from the start and allDay. compute allDay if necessary\r\n calendar.getDefaultEventEnd(this.isAllDay(), this.start);\r\n };\r\n return EventDateProfile;\r\n}());\r\nexports.default = EventDateProfile;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar DragListener_1 = __webpack_require__(59);\r\n/* Tracks mouse movements over a component and raises events about which hit the mouse is over.\r\n------------------------------------------------------------------------------------------------------------------------\r\noptions:\r\n- subjectEl\r\n- subjectCenter\r\n*/\r\nvar HitDragListener = /** @class */ (function (_super) {\r\n tslib_1.__extends(HitDragListener, _super);\r\n function HitDragListener(component, options) {\r\n var _this = _super.call(this, options) || this;\r\n _this.component = component;\r\n return _this;\r\n }\r\n // Called when drag listening starts (but a real drag has not necessarily began).\r\n // ev might be undefined if dragging was started manually.\r\n HitDragListener.prototype.handleInteractionStart = function (ev) {\r\n var subjectEl = this.subjectEl;\r\n var subjectRect;\r\n var origPoint;\r\n var point;\r\n this.component.hitsNeeded();\r\n this.computeScrollBounds(); // for autoscroll\r\n if (ev) {\r\n origPoint = { left: util_1.getEvX(ev), top: util_1.getEvY(ev) };\r\n point = origPoint;\r\n // constrain the point to bounds of the element being dragged\r\n if (subjectEl) {\r\n subjectRect = util_1.getOuterRect(subjectEl); // used for centering as well\r\n point = util_1.constrainPoint(point, subjectRect);\r\n }\r\n this.origHit = this.queryHit(point.left, point.top);\r\n // treat the center of the subject as the collision point?\r\n if (subjectEl && this.options.subjectCenter) {\r\n // only consider the area the subject overlaps the hit. best for large subjects.\r\n // TODO: skip this if hit didn't supply left/right/top/bottom\r\n if (this.origHit) {\r\n subjectRect = util_1.intersectRects(this.origHit, subjectRect) ||\r\n subjectRect; // in case there is no intersection\r\n }\r\n point = util_1.getRectCenter(subjectRect);\r\n }\r\n this.coordAdjust = util_1.diffPoints(point, origPoint); // point - origPoint\r\n }\r\n else {\r\n this.origHit = null;\r\n this.coordAdjust = null;\r\n }\r\n // call the super-method. do it after origHit has been computed\r\n _super.prototype.handleInteractionStart.call(this, ev);\r\n };\r\n // Called when the actual drag has started\r\n HitDragListener.prototype.handleDragStart = function (ev) {\r\n var hit;\r\n _super.prototype.handleDragStart.call(this, ev);\r\n // might be different from this.origHit if the min-distance is large\r\n hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev));\r\n // report the initial hit the mouse is over\r\n // especially important if no min-distance and drag starts immediately\r\n if (hit) {\r\n this.handleHitOver(hit);\r\n }\r\n };\r\n // Called when the drag moves\r\n HitDragListener.prototype.handleDrag = function (dx, dy, ev) {\r\n var hit;\r\n _super.prototype.handleDrag.call(this, dx, dy, ev);\r\n hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev));\r\n if (!isHitsEqual(hit, this.hit)) { // a different hit than before?\r\n if (this.hit) {\r\n this.handleHitOut();\r\n }\r\n if (hit) {\r\n this.handleHitOver(hit);\r\n }\r\n }\r\n };\r\n // Called when dragging has been stopped\r\n HitDragListener.prototype.handleDragEnd = function (ev) {\r\n this.handleHitDone();\r\n _super.prototype.handleDragEnd.call(this, ev);\r\n };\r\n // Called when a the mouse has just moved over a new hit\r\n HitDragListener.prototype.handleHitOver = function (hit) {\r\n var isOrig = isHitsEqual(hit, this.origHit);\r\n this.hit = hit;\r\n this.trigger('hitOver', this.hit, isOrig, this.origHit);\r\n };\r\n // Called when the mouse has just moved out of a hit\r\n HitDragListener.prototype.handleHitOut = function () {\r\n if (this.hit) {\r\n this.trigger('hitOut', this.hit);\r\n this.handleHitDone();\r\n this.hit = null;\r\n }\r\n };\r\n // Called after a hitOut. Also called before a dragStop\r\n HitDragListener.prototype.handleHitDone = function () {\r\n if (this.hit) {\r\n this.trigger('hitDone', this.hit);\r\n }\r\n };\r\n // Called when the interaction ends, whether there was a real drag or not\r\n HitDragListener.prototype.handleInteractionEnd = function (ev, isCancelled) {\r\n _super.prototype.handleInteractionEnd.call(this, ev, isCancelled);\r\n this.origHit = null;\r\n this.hit = null;\r\n this.component.hitsNotNeeded();\r\n };\r\n // Called when scrolling has stopped, whether through auto scroll, or the user scrolling\r\n HitDragListener.prototype.handleScrollEnd = function () {\r\n _super.prototype.handleScrollEnd.call(this);\r\n // hits' absolute positions will be in new places after a user's scroll.\r\n // HACK for recomputing.\r\n if (this.isDragging) {\r\n this.component.releaseHits();\r\n this.component.prepareHits();\r\n }\r\n };\r\n // Gets the hit underneath the coordinates for the given mouse event\r\n HitDragListener.prototype.queryHit = function (left, top) {\r\n if (this.coordAdjust) {\r\n left += this.coordAdjust.left;\r\n top += this.coordAdjust.top;\r\n }\r\n return this.component.queryHit(left, top);\r\n };\r\n return HitDragListener;\r\n}(DragListener_1.default));\r\nexports.default = HitDragListener;\r\n// Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component.\r\n// Two null values will be considered equal, as two \"out of the component\" states are the same.\r\nfunction isHitsEqual(hit0, hit1) {\r\n if (!hit0 && !hit1) {\r\n return true;\r\n }\r\n if (hit0 && hit1) {\r\n return hit0.component === hit1.component &&\r\n isHitPropsWithin(hit0, hit1) &&\r\n isHitPropsWithin(hit1, hit0); // ensures all props are identical\r\n }\r\n return false;\r\n}\r\n// Returns true if all of subHit's non-standard properties are within superHit\r\nfunction isHitPropsWithin(subHit, superHit) {\r\n for (var propName in subHit) {\r\n if (!/^(component|left|right|top|bottom)$/.test(propName)) {\r\n if (subHit[propName] !== superHit[propName]) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.version = '3.10.1';\r\n// When introducing internal API incompatibilities (where fullcalendar plugins would break),\r\n// the minor version of the calendar should be upped (ex: 2.7.2 -> 2.8.0)\r\n// and the below integer should be incremented.\r\nexports.internalApiVersion = 12;\r\nvar util_1 = __webpack_require__(4);\r\nexports.applyAll = util_1.applyAll;\r\nexports.debounce = util_1.debounce;\r\nexports.isInt = util_1.isInt;\r\nexports.htmlEscape = util_1.htmlEscape;\r\nexports.cssToStr = util_1.cssToStr;\r\nexports.proxy = util_1.proxy;\r\nexports.capitaliseFirstLetter = util_1.capitaliseFirstLetter;\r\nexports.getOuterRect = util_1.getOuterRect;\r\nexports.getClientRect = util_1.getClientRect;\r\nexports.getContentRect = util_1.getContentRect;\r\nexports.getScrollbarWidths = util_1.getScrollbarWidths;\r\nexports.preventDefault = util_1.preventDefault;\r\nexports.parseFieldSpecs = util_1.parseFieldSpecs;\r\nexports.compareByFieldSpecs = util_1.compareByFieldSpecs;\r\nexports.compareByFieldSpec = util_1.compareByFieldSpec;\r\nexports.flexibleCompare = util_1.flexibleCompare;\r\nexports.computeGreatestUnit = util_1.computeGreatestUnit;\r\nexports.divideRangeByDuration = util_1.divideRangeByDuration;\r\nexports.divideDurationByDuration = util_1.divideDurationByDuration;\r\nexports.multiplyDuration = util_1.multiplyDuration;\r\nexports.durationHasTime = util_1.durationHasTime;\r\nexports.log = util_1.log;\r\nexports.warn = util_1.warn;\r\nexports.removeExact = util_1.removeExact;\r\nexports.intersectRects = util_1.intersectRects;\r\nexports.allowSelection = util_1.allowSelection;\r\nexports.attrsToStr = util_1.attrsToStr;\r\nexports.compareNumbers = util_1.compareNumbers;\r\nexports.compensateScroll = util_1.compensateScroll;\r\nexports.computeDurationGreatestUnit = util_1.computeDurationGreatestUnit;\r\nexports.constrainPoint = util_1.constrainPoint;\r\nexports.copyOwnProps = util_1.copyOwnProps;\r\nexports.diffByUnit = util_1.diffByUnit;\r\nexports.diffDay = util_1.diffDay;\r\nexports.diffDayTime = util_1.diffDayTime;\r\nexports.diffPoints = util_1.diffPoints;\r\nexports.disableCursor = util_1.disableCursor;\r\nexports.distributeHeight = util_1.distributeHeight;\r\nexports.enableCursor = util_1.enableCursor;\r\nexports.firstDefined = util_1.firstDefined;\r\nexports.getEvIsTouch = util_1.getEvIsTouch;\r\nexports.getEvX = util_1.getEvX;\r\nexports.getEvY = util_1.getEvY;\r\nexports.getRectCenter = util_1.getRectCenter;\r\nexports.getScrollParent = util_1.getScrollParent;\r\nexports.hasOwnProp = util_1.hasOwnProp;\r\nexports.isArraysEqual = util_1.isArraysEqual;\r\nexports.isNativeDate = util_1.isNativeDate;\r\nexports.isPrimaryMouseButton = util_1.isPrimaryMouseButton;\r\nexports.isTimeString = util_1.isTimeString;\r\nexports.matchCellWidths = util_1.matchCellWidths;\r\nexports.mergeProps = util_1.mergeProps;\r\nexports.preventSelection = util_1.preventSelection;\r\nexports.removeMatching = util_1.removeMatching;\r\nexports.stripHtmlEntities = util_1.stripHtmlEntities;\r\nexports.subtractInnerElHeight = util_1.subtractInnerElHeight;\r\nexports.uncompensateScroll = util_1.uncompensateScroll;\r\nexports.undistributeHeight = util_1.undistributeHeight;\r\nexports.dayIDs = util_1.dayIDs;\r\nexports.unitsDesc = util_1.unitsDesc;\r\nvar date_formatting_1 = __webpack_require__(49);\r\nexports.formatDate = date_formatting_1.formatDate;\r\nexports.formatRange = date_formatting_1.formatRange;\r\nexports.queryMostGranularFormatUnit = date_formatting_1.queryMostGranularFormatUnit;\r\nvar locale_1 = __webpack_require__(32);\r\nexports.datepickerLocale = locale_1.datepickerLocale;\r\nexports.locale = locale_1.locale;\r\nexports.getMomentLocaleData = locale_1.getMomentLocaleData;\r\nexports.populateInstanceComputableOptions = locale_1.populateInstanceComputableOptions;\r\nvar util_2 = __webpack_require__(19);\r\nexports.eventDefsToEventInstances = util_2.eventDefsToEventInstances;\r\nexports.eventFootprintToComponentFootprint = util_2.eventFootprintToComponentFootprint;\r\nexports.eventInstanceToEventRange = util_2.eventInstanceToEventRange;\r\nexports.eventInstanceToUnzonedRange = util_2.eventInstanceToUnzonedRange;\r\nexports.eventRangeToEventFootprint = util_2.eventRangeToEventFootprint;\r\nvar moment_ext_1 = __webpack_require__(11);\r\nexports.moment = moment_ext_1.default;\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nexports.EmitterMixin = EmitterMixin_1.default;\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nexports.ListenerMixin = ListenerMixin_1.default;\r\nvar Model_1 = __webpack_require__(51);\r\nexports.Model = Model_1.default;\r\nvar Constraints_1 = __webpack_require__(217);\r\nexports.Constraints = Constraints_1.default;\r\nvar DateProfileGenerator_1 = __webpack_require__(55);\r\nexports.DateProfileGenerator = DateProfileGenerator_1.default;\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nexports.UnzonedRange = UnzonedRange_1.default;\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nexports.ComponentFootprint = ComponentFootprint_1.default;\r\nvar BusinessHourGenerator_1 = __webpack_require__(218);\r\nexports.BusinessHourGenerator = BusinessHourGenerator_1.default;\r\nvar EventPeriod_1 = __webpack_require__(219);\r\nexports.EventPeriod = EventPeriod_1.default;\r\nvar EventManager_1 = __webpack_require__(220);\r\nexports.EventManager = EventManager_1.default;\r\nvar EventDef_1 = __webpack_require__(37);\r\nexports.EventDef = EventDef_1.default;\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nexports.EventDefMutation = EventDefMutation_1.default;\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nexports.EventDefParser = EventDefParser_1.default;\r\nvar EventInstance_1 = __webpack_require__(53);\r\nexports.EventInstance = EventInstance_1.default;\r\nvar EventRange_1 = __webpack_require__(50);\r\nexports.EventRange = EventRange_1.default;\r\nvar RecurringEventDef_1 = __webpack_require__(54);\r\nexports.RecurringEventDef = RecurringEventDef_1.default;\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nexports.SingleEventDef = SingleEventDef_1.default;\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nexports.EventDefDateMutation = EventDefDateMutation_1.default;\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nexports.EventDateProfile = EventDateProfile_1.default;\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nexports.EventSourceParser = EventSourceParser_1.default;\r\nvar EventSource_1 = __webpack_require__(6);\r\nexports.EventSource = EventSource_1.default;\r\nvar ThemeRegistry_1 = __webpack_require__(57);\r\nexports.defineThemeSystem = ThemeRegistry_1.defineThemeSystem;\r\nexports.getThemeSystemClass = ThemeRegistry_1.getThemeSystemClass;\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nexports.EventInstanceGroup = EventInstanceGroup_1.default;\r\nvar ArrayEventSource_1 = __webpack_require__(56);\r\nexports.ArrayEventSource = ArrayEventSource_1.default;\r\nvar FuncEventSource_1 = __webpack_require__(223);\r\nexports.FuncEventSource = FuncEventSource_1.default;\r\nvar JsonFeedEventSource_1 = __webpack_require__(224);\r\nexports.JsonFeedEventSource = JsonFeedEventSource_1.default;\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nexports.EventFootprint = EventFootprint_1.default;\r\nvar Class_1 = __webpack_require__(35);\r\nexports.Class = Class_1.default;\r\nvar Mixin_1 = __webpack_require__(15);\r\nexports.Mixin = Mixin_1.default;\r\nvar CoordCache_1 = __webpack_require__(58);\r\nexports.CoordCache = CoordCache_1.default;\r\nvar Iterator_1 = __webpack_require__(225);\r\nexports.Iterator = Iterator_1.default;\r\nvar DragListener_1 = __webpack_require__(59);\r\nexports.DragListener = DragListener_1.default;\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nexports.HitDragListener = HitDragListener_1.default;\r\nvar MouseFollower_1 = __webpack_require__(226);\r\nexports.MouseFollower = MouseFollower_1.default;\r\nvar ParsableModelMixin_1 = __webpack_require__(52);\r\nexports.ParsableModelMixin = ParsableModelMixin_1.default;\r\nvar Popover_1 = __webpack_require__(227);\r\nexports.Popover = Popover_1.default;\r\nvar Promise_1 = __webpack_require__(21);\r\nexports.Promise = Promise_1.default;\r\nvar TaskQueue_1 = __webpack_require__(228);\r\nexports.TaskQueue = TaskQueue_1.default;\r\nvar RenderQueue_1 = __webpack_require__(229);\r\nexports.RenderQueue = RenderQueue_1.default;\r\nvar Scroller_1 = __webpack_require__(41);\r\nexports.Scroller = Scroller_1.default;\r\nvar Theme_1 = __webpack_require__(22);\r\nexports.Theme = Theme_1.default;\r\nvar Component_1 = __webpack_require__(230);\r\nexports.Component = Component_1.default;\r\nvar DateComponent_1 = __webpack_require__(231);\r\nexports.DateComponent = DateComponent_1.default;\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nexports.InteractiveDateComponent = InteractiveDateComponent_1.default;\r\nvar Calendar_1 = __webpack_require__(232);\r\nexports.Calendar = Calendar_1.default;\r\nvar View_1 = __webpack_require__(43);\r\nexports.View = View_1.default;\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nexports.defineView = ViewRegistry_1.defineView;\r\nexports.getViewConfig = ViewRegistry_1.getViewConfig;\r\nvar DayTableMixin_1 = __webpack_require__(60);\r\nexports.DayTableMixin = DayTableMixin_1.default;\r\nvar BusinessHourRenderer_1 = __webpack_require__(61);\r\nexports.BusinessHourRenderer = BusinessHourRenderer_1.default;\r\nvar EventRenderer_1 = __webpack_require__(44);\r\nexports.EventRenderer = EventRenderer_1.default;\r\nvar FillRenderer_1 = __webpack_require__(62);\r\nexports.FillRenderer = FillRenderer_1.default;\r\nvar HelperRenderer_1 = __webpack_require__(63);\r\nexports.HelperRenderer = HelperRenderer_1.default;\r\nvar ExternalDropping_1 = __webpack_require__(233);\r\nexports.ExternalDropping = ExternalDropping_1.default;\r\nvar EventResizing_1 = __webpack_require__(234);\r\nexports.EventResizing = EventResizing_1.default;\r\nvar EventPointing_1 = __webpack_require__(64);\r\nexports.EventPointing = EventPointing_1.default;\r\nvar EventDragging_1 = __webpack_require__(235);\r\nexports.EventDragging = EventDragging_1.default;\r\nvar DateSelecting_1 = __webpack_require__(236);\r\nexports.DateSelecting = DateSelecting_1.default;\r\nvar DateClicking_1 = __webpack_require__(237);\r\nexports.DateClicking = DateClicking_1.default;\r\nvar Interaction_1 = __webpack_require__(14);\r\nexports.Interaction = Interaction_1.default;\r\nvar StandardInteractionsMixin_1 = __webpack_require__(65);\r\nexports.StandardInteractionsMixin = StandardInteractionsMixin_1.default;\r\nvar AgendaView_1 = __webpack_require__(238);\r\nexports.AgendaView = AgendaView_1.default;\r\nvar TimeGrid_1 = __webpack_require__(239);\r\nexports.TimeGrid = TimeGrid_1.default;\r\nvar TimeGridEventRenderer_1 = __webpack_require__(240);\r\nexports.TimeGridEventRenderer = TimeGridEventRenderer_1.default;\r\nvar TimeGridFillRenderer_1 = __webpack_require__(242);\r\nexports.TimeGridFillRenderer = TimeGridFillRenderer_1.default;\r\nvar TimeGridHelperRenderer_1 = __webpack_require__(241);\r\nexports.TimeGridHelperRenderer = TimeGridHelperRenderer_1.default;\r\nvar DayGrid_1 = __webpack_require__(66);\r\nexports.DayGrid = DayGrid_1.default;\r\nvar DayGridEventRenderer_1 = __webpack_require__(243);\r\nexports.DayGridEventRenderer = DayGridEventRenderer_1.default;\r\nvar DayGridFillRenderer_1 = __webpack_require__(245);\r\nexports.DayGridFillRenderer = DayGridFillRenderer_1.default;\r\nvar DayGridHelperRenderer_1 = __webpack_require__(244);\r\nexports.DayGridHelperRenderer = DayGridHelperRenderer_1.default;\r\nvar BasicView_1 = __webpack_require__(67);\r\nexports.BasicView = BasicView_1.default;\r\nvar BasicViewDateProfileGenerator_1 = __webpack_require__(68);\r\nexports.BasicViewDateProfileGenerator = BasicViewDateProfileGenerator_1.default;\r\nvar MonthView_1 = __webpack_require__(246);\r\nexports.MonthView = MonthView_1.default;\r\nvar MonthViewDateProfileGenerator_1 = __webpack_require__(247);\r\nexports.MonthViewDateProfileGenerator = MonthViewDateProfileGenerator_1.default;\r\nvar ListView_1 = __webpack_require__(248);\r\nexports.ListView = ListView_1.default;\r\nvar ListEventPointing_1 = __webpack_require__(250);\r\nexports.ListEventPointing = ListEventPointing_1.default;\r\nvar ListEventRenderer_1 = __webpack_require__(249);\r\nexports.ListEventRenderer = ListEventRenderer_1.default;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventRange_1 = __webpack_require__(50);\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nfunction eventDefsToEventInstances(eventDefs, unzonedRange) {\r\n var eventInstances = [];\r\n var i;\r\n for (i = 0; i < eventDefs.length; i++) {\r\n eventInstances.push.apply(eventInstances, // append\r\n eventDefs[i].buildInstances(unzonedRange));\r\n }\r\n return eventInstances;\r\n}\r\nexports.eventDefsToEventInstances = eventDefsToEventInstances;\r\nfunction eventInstanceToEventRange(eventInstance) {\r\n return new EventRange_1.default(eventInstance.dateProfile.unzonedRange, eventInstance.def, eventInstance);\r\n}\r\nexports.eventInstanceToEventRange = eventInstanceToEventRange;\r\nfunction eventRangeToEventFootprint(eventRange) {\r\n return new EventFootprint_1.default(new ComponentFootprint_1.default(eventRange.unzonedRange, eventRange.eventDef.isAllDay()), eventRange.eventDef, eventRange.eventInstance // might not exist\r\n );\r\n}\r\nexports.eventRangeToEventFootprint = eventRangeToEventFootprint;\r\nfunction eventInstanceToUnzonedRange(eventInstance) {\r\n return eventInstance.dateProfile.unzonedRange;\r\n}\r\nexports.eventInstanceToUnzonedRange = eventInstanceToUnzonedRange;\r\nfunction eventFootprintToComponentFootprint(eventFootprint) {\r\n return eventFootprint.componentFootprint;\r\n}\r\nexports.eventFootprintToComponentFootprint = eventFootprintToComponentFootprint;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar util_1 = __webpack_require__(19);\r\nvar EventRange_1 = __webpack_require__(50);\r\n/*\r\nIt's expected that there will be at least one EventInstance,\r\nOR that an explicitEventDef is assigned.\r\n*/\r\nvar EventInstanceGroup = /** @class */ (function () {\r\n function EventInstanceGroup(eventInstances) {\r\n this.eventInstances = eventInstances || [];\r\n }\r\n EventInstanceGroup.prototype.getAllEventRanges = function (constraintRange) {\r\n if (constraintRange) {\r\n return this.sliceNormalRenderRanges(constraintRange);\r\n }\r\n else {\r\n return this.eventInstances.map(util_1.eventInstanceToEventRange);\r\n }\r\n };\r\n EventInstanceGroup.prototype.sliceRenderRanges = function (constraintRange) {\r\n if (this.isInverse()) {\r\n return this.sliceInverseRenderRanges(constraintRange);\r\n }\r\n else {\r\n return this.sliceNormalRenderRanges(constraintRange);\r\n }\r\n };\r\n EventInstanceGroup.prototype.sliceNormalRenderRanges = function (constraintRange) {\r\n var eventInstances = this.eventInstances;\r\n var i;\r\n var eventInstance;\r\n var slicedRange;\r\n var slicedEventRanges = [];\r\n for (i = 0; i < eventInstances.length; i++) {\r\n eventInstance = eventInstances[i];\r\n slicedRange = eventInstance.dateProfile.unzonedRange.intersect(constraintRange);\r\n if (slicedRange) {\r\n slicedEventRanges.push(new EventRange_1.default(slicedRange, eventInstance.def, eventInstance));\r\n }\r\n }\r\n return slicedEventRanges;\r\n };\r\n EventInstanceGroup.prototype.sliceInverseRenderRanges = function (constraintRange) {\r\n var unzonedRanges = this.eventInstances.map(util_1.eventInstanceToUnzonedRange);\r\n var ownerDef = this.getEventDef();\r\n unzonedRanges = UnzonedRange_1.default.invertRanges(unzonedRanges, constraintRange);\r\n return unzonedRanges.map(function (unzonedRange) {\r\n return new EventRange_1.default(unzonedRange, ownerDef); // don't give an EventInstance\r\n });\r\n };\r\n EventInstanceGroup.prototype.isInverse = function () {\r\n return this.getEventDef().hasInverseRendering();\r\n };\r\n EventInstanceGroup.prototype.getEventDef = function () {\r\n return this.explicitEventDef || this.eventInstances[0].def;\r\n };\r\n return EventInstanceGroup;\r\n}());\r\nexports.default = EventInstanceGroup;\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar PromiseStub = {\r\n construct: function (executor) {\r\n var deferred = $.Deferred();\r\n var promise = deferred.promise();\r\n if (typeof executor === 'function') {\r\n executor(function (val) {\r\n deferred.resolve(val);\r\n attachImmediatelyResolvingThen(promise, val);\r\n }, function () {\r\n deferred.reject();\r\n attachImmediatelyRejectingThen(promise);\r\n });\r\n }\r\n return promise;\r\n },\r\n resolve: function (val) {\r\n var deferred = $.Deferred().resolve(val);\r\n var promise = deferred.promise();\r\n attachImmediatelyResolvingThen(promise, val);\r\n return promise;\r\n },\r\n reject: function () {\r\n var deferred = $.Deferred().reject();\r\n var promise = deferred.promise();\r\n attachImmediatelyRejectingThen(promise);\r\n return promise;\r\n }\r\n};\r\nexports.default = PromiseStub;\r\nfunction attachImmediatelyResolvingThen(promise, val) {\r\n promise.then = function (onResolve) {\r\n if (typeof onResolve === 'function') {\r\n return PromiseStub.resolve(onResolve(val));\r\n }\r\n return promise;\r\n };\r\n}\r\nfunction attachImmediatelyRejectingThen(promise) {\r\n promise.then = function (onResolve, onReject) {\r\n if (typeof onReject === 'function') {\r\n onReject();\r\n }\r\n return promise;\r\n };\r\n}\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar Theme = /** @class */ (function () {\r\n function Theme(optionsManager) {\r\n this.optionsManager = optionsManager;\r\n this.processIconOverride();\r\n }\r\n Theme.prototype.processIconOverride = function () {\r\n if (this.iconOverrideOption) {\r\n this.setIconOverride(this.optionsManager.get(this.iconOverrideOption));\r\n }\r\n };\r\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\r\n var iconClassesCopy;\r\n var buttonName;\r\n if ($.isPlainObject(iconOverrideHash)) {\r\n iconClassesCopy = $.extend({}, this.iconClasses);\r\n for (buttonName in iconOverrideHash) {\r\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\r\n }\r\n this.iconClasses = iconClassesCopy;\r\n }\r\n else if (iconOverrideHash === false) {\r\n this.iconClasses = {};\r\n }\r\n };\r\n Theme.prototype.applyIconOverridePrefix = function (className) {\r\n var prefix = this.iconOverridePrefix;\r\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\r\n className = prefix + className;\r\n }\r\n return className;\r\n };\r\n Theme.prototype.getClass = function (key) {\r\n return this.classes[key] || '';\r\n };\r\n Theme.prototype.getIconClass = function (buttonName) {\r\n var className = this.iconClasses[buttonName];\r\n if (className) {\r\n return this.baseIconClass + ' ' + className;\r\n }\r\n return '';\r\n };\r\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\r\n var className;\r\n if (this.iconOverrideCustomButtonOption) {\r\n className = customButtonProps[this.iconOverrideCustomButtonOption];\r\n if (className) {\r\n return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);\r\n }\r\n }\r\n return '';\r\n };\r\n return Theme;\r\n}());\r\nexports.default = Theme;\r\nTheme.prototype.classes = {};\r\nTheme.prototype.iconClasses = {};\r\nTheme.prototype.baseIconClass = '';\r\nTheme.prototype.iconOverridePrefix = '';\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar exportHooks = __webpack_require__(18);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nexportHooks.touchMouseIgnoreWait = 500;\r\nvar globalEmitter = null;\r\nvar neededCount = 0;\r\n/*\r\nListens to document and window-level user-interaction events, like touch events and mouse events,\r\nand fires these events as-is to whoever is observing a GlobalEmitter.\r\nBest when used as a singleton via GlobalEmitter.get()\r\n\nNormalizes mouse/touch events. For examples:\r\n- ignores the the simulated mouse events that happen after a quick tap: mousemove+mousedown+mouseup+click\r\n- compensates for various buggy scenarios where a touchend does not fire\r\n*/\r\nvar GlobalEmitter = /** @class */ (function () {\r\n function GlobalEmitter() {\r\n this.isTouching = false;\r\n this.mouseIgnoreDepth = 0;\r\n }\r\n // gets the singleton\r\n GlobalEmitter.get = function () {\r\n if (!globalEmitter) {\r\n globalEmitter = new GlobalEmitter();\r\n globalEmitter.bind();\r\n }\r\n return globalEmitter;\r\n };\r\n // called when an object knows it will need a GlobalEmitter in the near future.\r\n GlobalEmitter.needed = function () {\r\n GlobalEmitter.get(); // ensures globalEmitter\r\n neededCount++;\r\n };\r\n // called when the object that originally called needed() doesn't need a GlobalEmitter anymore.\r\n GlobalEmitter.unneeded = function () {\r\n neededCount--;\r\n if (!neededCount) { // nobody else needs it\r\n globalEmitter.unbind();\r\n globalEmitter = null;\r\n }\r\n };\r\n GlobalEmitter.prototype.bind = function () {\r\n var _this = this;\r\n this.listenTo($(document), {\r\n touchstart: this.handleTouchStart,\r\n touchcancel: this.handleTouchCancel,\r\n touchend: this.handleTouchEnd,\r\n mousedown: this.handleMouseDown,\r\n mousemove: this.handleMouseMove,\r\n mouseup: this.handleMouseUp,\r\n click: this.handleClick,\r\n selectstart: this.handleSelectStart,\r\n contextmenu: this.handleContextMenu\r\n });\r\n // because we need to call preventDefault\r\n // because https://www.chromestatus.com/features/5093566007214080\r\n // TODO: investigate performance because this is a global handler\r\n window.addEventListener('touchmove', this.handleTouchMoveProxy = function (ev) {\r\n _this.handleTouchMove($.Event(ev));\r\n }, { passive: false } // allows preventDefault()\r\n );\r\n // attach a handler to get called when ANY scroll action happens on the page.\r\n // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\r\n // http://stackoverflow.com/a/32954565/96342\r\n window.addEventListener('scroll', this.handleScrollProxy = function (ev) {\r\n _this.handleScroll($.Event(ev));\r\n }, true // useCapture\r\n );\r\n };\r\n GlobalEmitter.prototype.unbind = function () {\r\n this.stopListeningTo($(document));\r\n window.removeEventListener('touchmove', this.handleTouchMoveProxy, { passive: false } // use same options as addEventListener\r\n );\r\n window.removeEventListener('scroll', this.handleScrollProxy, true // useCapture\r\n );\r\n };\r\n // Touch Handlers\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.handleTouchStart = function (ev) {\r\n // if a previous touch interaction never ended with a touchend, then implicitly end it,\r\n // but since a new touch interaction is about to begin, don't start the mouse ignore period.\r\n this.stopTouch(ev, true); // skipMouseIgnore=true\r\n this.isTouching = true;\r\n this.trigger('touchstart', ev);\r\n };\r\n GlobalEmitter.prototype.handleTouchMove = function (ev) {\r\n if (this.isTouching) {\r\n this.trigger('touchmove', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleTouchCancel = function (ev) {\r\n if (this.isTouching) {\r\n this.trigger('touchcancel', ev);\r\n // Have touchcancel fire an artificial touchend. That way, handlers won't need to listen to both.\r\n // If touchend fires later, it won't have any effect b/c isTouching will be false.\r\n this.stopTouch(ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleTouchEnd = function (ev) {\r\n this.stopTouch(ev);\r\n };\r\n // Mouse Handlers\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.handleMouseDown = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('mousedown', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleMouseMove = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('mousemove', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleMouseUp = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('mouseup', ev);\r\n }\r\n };\r\n GlobalEmitter.prototype.handleClick = function (ev) {\r\n if (!this.shouldIgnoreMouse()) {\r\n this.trigger('click', ev);\r\n }\r\n };\r\n // Misc Handlers\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.handleSelectStart = function (ev) {\r\n this.trigger('selectstart', ev);\r\n };\r\n GlobalEmitter.prototype.handleContextMenu = function (ev) {\r\n this.trigger('contextmenu', ev);\r\n };\r\n GlobalEmitter.prototype.handleScroll = function (ev) {\r\n this.trigger('scroll', ev);\r\n };\r\n // Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n GlobalEmitter.prototype.stopTouch = function (ev, skipMouseIgnore) {\r\n if (skipMouseIgnore === void 0) { skipMouseIgnore = false; }\r\n if (this.isTouching) {\r\n this.isTouching = false;\r\n this.trigger('touchend', ev);\r\n if (!skipMouseIgnore) {\r\n this.startTouchMouseIgnore();\r\n }\r\n }\r\n };\r\n GlobalEmitter.prototype.startTouchMouseIgnore = function () {\r\n var _this = this;\r\n var wait = exportHooks.touchMouseIgnoreWait;\r\n if (wait) {\r\n this.mouseIgnoreDepth++;\r\n setTimeout(function () {\r\n _this.mouseIgnoreDepth--;\r\n }, wait);\r\n }\r\n };\r\n GlobalEmitter.prototype.shouldIgnoreMouse = function () {\r\n return this.isTouching || Boolean(this.mouseIgnoreDepth);\r\n };\r\n return GlobalEmitter;\r\n}());\r\nexports.default = GlobalEmitter;\r\nListenerMixin_1.default.mixInto(GlobalEmitter);\r\nEmitterMixin_1.default.mixInto(GlobalEmitter);\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar exportHooks = __webpack_require__(18);\r\nexports.viewHash = {};\r\nexportHooks.views = exports.viewHash;\r\nfunction defineView(viewName, viewConfig) {\r\n exports.viewHash[viewName] = viewConfig;\r\n}\r\nexports.defineView = defineView;\r\nfunction getViewConfig(viewName) {\r\n return exports.viewHash[viewName];\r\n}\r\nexports.getViewConfig = getViewConfig;\r\n\n\n/***/ }),\n/* 25 */,\n/* 26 */,\n/* 27 */,\n/* 28 */,\n/* 29 */,\n/* 30 */,\n/* 31 */,\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar exportHooks = __webpack_require__(18);\r\nvar options_1 = __webpack_require__(33);\r\nvar util_1 = __webpack_require__(4);\r\nexports.localeOptionHash = {};\r\nexportHooks.locales = exports.localeOptionHash;\r\n// NOTE: can't guarantee any of these computations will run because not every locale has datepicker\r\n// configs, so make sure there are English fallbacks for these in the defaults file.\r\nvar dpComputableOptions = {\r\n buttonText: function (dpOptions) {\r\n return {\r\n // the translations sometimes wrongly contain HTML entities\r\n prev: util_1.stripHtmlEntities(dpOptions.prevText),\r\n next: util_1.stripHtmlEntities(dpOptions.nextText),\r\n today: util_1.stripHtmlEntities(dpOptions.currentText)\r\n };\r\n },\r\n // Produces format strings like \"MMMM YYYY\" -> \"September 2014\"\r\n monthYearFormat: function (dpOptions) {\r\n return dpOptions.showMonthAfterYear ?\r\n 'YYYY[' + dpOptions.yearSuffix + '] MMMM' :\r\n 'MMMM YYYY[' + dpOptions.yearSuffix + ']';\r\n }\r\n};\r\nvar momComputableOptions = {\r\n // Produces format strings like \"ddd M/D\" -> \"Fri 9/15\"\r\n dayOfMonthFormat: function (momOptions, fcOptions) {\r\n var format = momOptions.longDateFormat('l'); // for the format like \"M/D/YYYY\"\r\n // strip the year off the edge, as well as other misc non-whitespace chars\r\n format = format.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g, '');\r\n if (fcOptions.isRTL) {\r\n format += ' ddd'; // for RTL, add day-of-week to end\r\n }\r\n else {\r\n format = 'ddd ' + format; // for LTR, add day-of-week to beginning\r\n }\r\n return format;\r\n },\r\n // Produces format strings like \"h:mma\" -> \"6:00pm\"\r\n mediumTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"h(:mm)a\" -> \"6pm\" / \"6:30pm\"\r\n smallTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(':mm', '(:mm)')\r\n .replace(/(\\Wmm)$/, '($1)') // like above, but for foreign locales\r\n .replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"h(:mm)t\" -> \"6p\" / \"6:30p\"\r\n extraSmallTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(':mm', '(:mm)')\r\n .replace(/(\\Wmm)$/, '($1)') // like above, but for foreign locales\r\n .replace(/\\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"ha\" / \"H\" -> \"6pm\" / \"18\"\r\n hourFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(':mm', '')\r\n .replace(/(\\Wmm)$/, '') // like above, but for foreign locales\r\n .replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\r\n },\r\n // Produces format strings like \"h:mm\" -> \"6:30\" (with no AM/PM)\r\n noMeridiemTimeFormat: function (momOptions) {\r\n return momOptions.longDateFormat('LT')\r\n .replace(/\\s*a$/i, ''); // remove trailing AM/PM\r\n }\r\n};\r\n// options that should be computed off live calendar options (considers override options)\r\n// TODO: best place for this? related to locale?\r\n// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it\r\nvar instanceComputableOptions = {\r\n // Produces format strings for results like \"Mo 16\"\r\n smallDayDateFormat: function (options) {\r\n return options.isRTL ?\r\n 'D dd' :\r\n 'dd D';\r\n },\r\n // Produces format strings for results like \"Wk 5\"\r\n weekFormat: function (options) {\r\n return options.isRTL ?\r\n 'w[ ' + options.weekNumberTitle + ']' :\r\n '[' + options.weekNumberTitle + ' ]w';\r\n },\r\n // Produces format strings for results like \"Wk5\"\r\n smallWeekFormat: function (options) {\r\n return options.isRTL ?\r\n 'w[' + options.weekNumberTitle + ']' :\r\n '[' + options.weekNumberTitle + ']w';\r\n }\r\n};\r\n// TODO: make these computable properties in optionsManager\r\nfunction populateInstanceComputableOptions(options) {\r\n $.each(instanceComputableOptions, function (name, func) {\r\n if (options[name] == null) {\r\n options[name] = func(options);\r\n }\r\n });\r\n}\r\nexports.populateInstanceComputableOptions = populateInstanceComputableOptions;\r\n// Initialize jQuery UI datepicker translations while using some of the translations\r\n// Will set this as the default locales for datepicker.\r\nfunction datepickerLocale(localeCode, dpLocaleCode, dpOptions) {\r\n // get the FullCalendar internal option hash for this locale. create if necessary\r\n var fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {});\r\n // transfer some simple options from datepicker to fc\r\n fcOptions.isRTL = dpOptions.isRTL;\r\n fcOptions.weekNumberTitle = dpOptions.weekHeader;\r\n // compute some more complex options from datepicker\r\n $.each(dpComputableOptions, function (name, func) {\r\n fcOptions[name] = func(dpOptions);\r\n });\r\n var jqDatePicker = $.datepicker;\r\n // is jQuery UI Datepicker is on the page?\r\n if (jqDatePicker) {\r\n // Register the locale data.\r\n // FullCalendar and MomentJS use locale codes like \"pt-br\" but Datepicker\r\n // does it like \"pt-BR\" or if it doesn't have the locale, maybe just \"pt\".\r\n // Make an alias so the locale can be referenced either way.\r\n jqDatePicker.regional[dpLocaleCode] =\r\n jqDatePicker.regional[localeCode] = // alias\r\n dpOptions;\r\n // Alias 'en' to the default locale data. Do this every time.\r\n jqDatePicker.regional.en = jqDatePicker.regional[''];\r\n // Set as Datepicker's global defaults.\r\n jqDatePicker.setDefaults(dpOptions);\r\n }\r\n}\r\nexports.datepickerLocale = datepickerLocale;\r\n// Sets FullCalendar-specific translations. Will set the locales as the global default.\r\nfunction locale(localeCode, newFcOptions) {\r\n var fcOptions;\r\n var momOptions;\r\n // get the FullCalendar internal option hash for this locale. create if necessary\r\n fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {});\r\n // provided new options for this locales? merge them in\r\n if (newFcOptions) {\r\n fcOptions = exports.localeOptionHash[localeCode] = options_1.mergeOptions([fcOptions, newFcOptions]);\r\n }\r\n // compute locale options that weren't defined.\r\n // always do this. newFcOptions can be undefined when initializing from i18n file,\r\n // so no way to tell if this is an initialization or a default-setting.\r\n momOptions = getMomentLocaleData(localeCode); // will fall back to en\r\n $.each(momComputableOptions, function (name, func) {\r\n if (fcOptions[name] == null) {\r\n fcOptions[name] = (func)(momOptions, fcOptions);\r\n }\r\n });\r\n // set it as the default locale for FullCalendar\r\n options_1.globalDefaults.locale = localeCode;\r\n}\r\nexports.locale = locale;\r\n// Returns moment's internal locale data. If doesn't exist, returns English.\r\nfunction getMomentLocaleData(localeCode) {\r\n return moment.localeData(localeCode) || moment.localeData('en');\r\n}\r\nexports.getMomentLocaleData = getMomentLocaleData;\r\n// Initialize English by forcing computation of moment-derived options.\r\n// Also, sets it as the default.\r\nlocale('en', options_1.englishDefaults);\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(4);\r\nexports.globalDefaults = {\r\n titleRangeSeparator: ' \\u2013 ',\r\n monthYearFormat: 'MMMM YYYY',\r\n defaultTimedEventDuration: '02:00:00',\r\n defaultAllDayEventDuration: { days: 1 },\r\n forceEventDuration: false,\r\n nextDayThreshold: '09:00:00',\r\n // display\r\n columnHeader: true,\r\n defaultView: 'month',\r\n aspectRatio: 1.35,\r\n header: {\r\n left: 'title',\r\n center: '',\r\n right: 'today prev,next'\r\n },\r\n weekends: true,\r\n weekNumbers: false,\r\n weekNumberTitle: 'W',\r\n weekNumberCalculation: 'local',\r\n // editable: false,\r\n // nowIndicator: false,\r\n scrollTime: '06:00:00',\r\n minTime: '00:00:00',\r\n maxTime: '24:00:00',\r\n showNonCurrentDates: true,\r\n // event ajax\r\n lazyFetching: true,\r\n startParam: 'start',\r\n endParam: 'end',\r\n timezoneParam: 'timezone',\r\n timezone: false,\r\n // allDayDefault: undefined,\r\n // locale\r\n locale: null,\r\n isRTL: false,\r\n buttonText: {\r\n prev: 'prev',\r\n next: 'next',\r\n prevYear: 'prev year',\r\n nextYear: 'next year',\r\n year: 'year',\r\n today: 'today',\r\n month: 'month',\r\n week: 'week',\r\n day: 'day'\r\n },\r\n // buttonIcons: null,\r\n allDayText: 'all-day',\r\n // allows setting a min-height to the event segment to prevent short events overlapping each other\r\n agendaEventMinHeight: 0,\r\n // jquery-ui theming\r\n theme: false,\r\n // themeButtonIcons: null,\r\n // eventResizableFromStart: false,\r\n dragOpacity: .75,\r\n dragRevertDuration: 500,\r\n dragScroll: true,\r\n // selectable: false,\r\n unselectAuto: true,\r\n // selectMinDistance: 0,\r\n dropAccept: '*',\r\n eventOrder: 'title',\r\n // eventRenderWait: null,\r\n eventLimit: false,\r\n eventLimitText: 'more',\r\n eventLimitClick: 'popover',\r\n dayPopoverFormat: 'LL',\r\n handleWindowResize: true,\r\n windowResizeDelay: 100,\r\n longPressDelay: 1000\r\n};\r\nexports.englishDefaults = {\r\n dayPopoverFormat: 'dddd, MMMM D'\r\n};\r\nexports.rtlDefaults = {\r\n header: {\r\n left: 'next,prev today',\r\n center: '',\r\n right: 'title'\r\n },\r\n buttonIcons: {\r\n prev: 'right-single-arrow',\r\n next: 'left-single-arrow',\r\n prevYear: 'right-double-arrow',\r\n nextYear: 'left-double-arrow'\r\n },\r\n themeButtonIcons: {\r\n prev: 'circle-triangle-e',\r\n next: 'circle-triangle-w',\r\n nextYear: 'seek-prev',\r\n prevYear: 'seek-next'\r\n }\r\n};\r\nvar complexOptions = [\r\n 'header',\r\n 'footer',\r\n 'buttonText',\r\n 'buttonIcons',\r\n 'themeButtonIcons'\r\n];\r\n// Merges an array of option objects into a single object\r\nfunction mergeOptions(optionObjs) {\r\n return util_1.mergeProps(optionObjs, complexOptions);\r\n}\r\nexports.mergeOptions = mergeOptions;\r\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventFootprint = /** @class */ (function () {\r\n function EventFootprint(componentFootprint, eventDef, eventInstance) {\r\n this.componentFootprint = componentFootprint;\r\n this.eventDef = eventDef;\r\n if (eventInstance) {\r\n this.eventInstance = eventInstance;\r\n }\r\n }\r\n EventFootprint.prototype.getEventLegacy = function () {\r\n return (this.eventInstance || this.eventDef).toLegacy();\r\n };\r\n return EventFootprint;\r\n}());\r\nexports.default = EventFootprint;\r\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\n// Class that all other classes will inherit from\r\nvar Class = /** @class */ (function () {\r\n function Class() {\r\n }\r\n // Called on a class to create a subclass.\r\n // LIMITATION: cannot provide a constructor!\r\n Class.extend = function (members) {\r\n var SubClass = /** @class */ (function (_super) {\r\n tslib_1.__extends(SubClass, _super);\r\n function SubClass() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return SubClass;\r\n }(this));\r\n util_1.copyOwnProps(members, SubClass.prototype);\r\n return SubClass;\r\n };\r\n // Adds new member variables/methods to the class's prototype.\r\n // Can be called with another class, or a plain object hash containing new members.\r\n Class.mixin = function (members) {\r\n util_1.copyOwnProps(members, this.prototype);\r\n };\r\n return Class;\r\n}());\r\nexports.default = Class;\r\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar RecurringEventDef_1 = __webpack_require__(54);\r\nexports.default = {\r\n parse: function (eventInput, source) {\r\n if (util_1.isTimeString(eventInput.start) || moment.isDuration(eventInput.start) ||\r\n util_1.isTimeString(eventInput.end) || moment.isDuration(eventInput.end)) {\r\n return RecurringEventDef_1.default.parse(eventInput, source);\r\n }\r\n else {\r\n return SingleEventDef_1.default.parse(eventInput, source);\r\n }\r\n }\r\n};\r\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar ParsableModelMixin_1 = __webpack_require__(52);\r\nvar EventDef = /** @class */ (function () {\r\n function EventDef(source) {\r\n this.source = source;\r\n this.className = [];\r\n this.miscProps = {};\r\n }\r\n EventDef.parse = function (rawInput, source) {\r\n var def = new this(source);\r\n if (def.applyProps(rawInput)) {\r\n return def;\r\n }\r\n return false;\r\n };\r\n EventDef.normalizeId = function (id) {\r\n return String(id);\r\n };\r\n EventDef.generateId = function () {\r\n return '_fc' + (EventDef.uuid++);\r\n };\r\n EventDef.prototype.clone = function () {\r\n var copy = new this.constructor(this.source);\r\n copy.id = this.id;\r\n copy.rawId = this.rawId;\r\n copy.uid = this.uid; // not really unique anymore :(\r\n EventDef.copyVerbatimStandardProps(this, copy);\r\n copy.className = this.className.slice(); // copy\r\n copy.miscProps = $.extend({}, this.miscProps);\r\n return copy;\r\n };\r\n EventDef.prototype.hasInverseRendering = function () {\r\n return this.getRendering() === 'inverse-background';\r\n };\r\n EventDef.prototype.hasBgRendering = function () {\r\n var rendering = this.getRendering();\r\n return rendering === 'inverse-background' || rendering === 'background';\r\n };\r\n EventDef.prototype.getRendering = function () {\r\n if (this.rendering != null) {\r\n return this.rendering;\r\n }\r\n return this.source.rendering;\r\n };\r\n EventDef.prototype.getConstraint = function () {\r\n if (this.constraint != null) {\r\n return this.constraint;\r\n }\r\n if (this.source.constraint != null) {\r\n return this.source.constraint;\r\n }\r\n return this.source.calendar.opt('eventConstraint'); // what about View option?\r\n };\r\n EventDef.prototype.getOverlap = function () {\r\n if (this.overlap != null) {\r\n return this.overlap;\r\n }\r\n if (this.source.overlap != null) {\r\n return this.source.overlap;\r\n }\r\n return this.source.calendar.opt('eventOverlap'); // what about View option?\r\n };\r\n EventDef.prototype.isStartExplicitlyEditable = function () {\r\n if (this.startEditable != null) {\r\n return this.startEditable;\r\n }\r\n return this.source.startEditable;\r\n };\r\n EventDef.prototype.isDurationExplicitlyEditable = function () {\r\n if (this.durationEditable != null) {\r\n return this.durationEditable;\r\n }\r\n return this.source.durationEditable;\r\n };\r\n EventDef.prototype.isExplicitlyEditable = function () {\r\n if (this.editable != null) {\r\n return this.editable;\r\n }\r\n return this.source.editable;\r\n };\r\n EventDef.prototype.toLegacy = function () {\r\n var obj = $.extend({}, this.miscProps);\r\n obj._id = this.uid;\r\n obj.source = this.source;\r\n obj.className = this.className.slice(); // copy\r\n obj.allDay = this.isAllDay();\r\n if (this.rawId != null) {\r\n obj.id = this.rawId;\r\n }\r\n EventDef.copyVerbatimStandardProps(this, obj);\r\n return obj;\r\n };\r\n EventDef.prototype.applyManualStandardProps = function (rawProps) {\r\n if (rawProps.id != null) {\r\n this.id = EventDef.normalizeId((this.rawId = rawProps.id));\r\n }\r\n else {\r\n this.id = EventDef.generateId();\r\n }\r\n if (rawProps._id != null) { // accept this prop, even tho somewhat internal\r\n this.uid = String(rawProps._id);\r\n }\r\n else {\r\n this.uid = EventDef.generateId();\r\n }\r\n // TODO: converge with EventSource\r\n if ($.isArray(rawProps.className)) {\r\n this.className = rawProps.className;\r\n }\r\n if (typeof rawProps.className === 'string') {\r\n this.className = rawProps.className.split(/\\s+/);\r\n }\r\n return true;\r\n };\r\n EventDef.prototype.applyMiscProps = function (rawProps) {\r\n $.extend(this.miscProps, rawProps);\r\n };\r\n EventDef.uuid = 0;\r\n EventDef.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps;\r\n EventDef.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps;\r\n return EventDef;\r\n}());\r\nexports.default = EventDef;\r\nParsableModelMixin_1.default.mixInto(EventDef);\r\nEventDef.defineStandardProps({\r\n // not automatically assigned (`false`)\r\n _id: false,\r\n id: false,\r\n className: false,\r\n source: false,\r\n // automatically assigned (`true`)\r\n title: true,\r\n url: true,\r\n rendering: true,\r\n constraint: true,\r\n overlap: true,\r\n editable: true,\r\n startEditable: true,\r\n durationEditable: true,\r\n color: true,\r\n backgroundColor: true,\r\n borderColor: true,\r\n textColor: true\r\n});\r\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.default = {\r\n sourceClasses: [],\r\n registerClass: function (EventSourceClass) {\r\n this.sourceClasses.unshift(EventSourceClass); // give highest priority\r\n },\r\n parse: function (rawInput, calendar) {\r\n var sourceClasses = this.sourceClasses;\r\n var i;\r\n var eventSource;\r\n for (i = 0; i < sourceClasses.length; i++) {\r\n eventSource = sourceClasses[i].parse(rawInput, calendar);\r\n if (eventSource) {\r\n return eventSource;\r\n }\r\n }\r\n }\r\n};\r\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar EventDef_1 = __webpack_require__(37);\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventDefMutation = /** @class */ (function () {\r\n function EventDefMutation() {\r\n }\r\n EventDefMutation.createFromRawProps = function (eventInstance, rawProps, largeUnit) {\r\n var eventDef = eventInstance.def;\r\n var dateProps = {};\r\n var standardProps = {};\r\n var miscProps = {};\r\n var verbatimStandardProps = {};\r\n var eventDefId = null;\r\n var className = null;\r\n var propName;\r\n var dateProfile;\r\n var dateMutation;\r\n var defMutation;\r\n for (propName in rawProps) {\r\n if (EventDateProfile_1.default.isStandardProp(propName)) {\r\n dateProps[propName] = rawProps[propName];\r\n }\r\n else if (eventDef.isStandardProp(propName)) {\r\n standardProps[propName] = rawProps[propName];\r\n }\r\n else if (eventDef.miscProps[propName] !== rawProps[propName]) { // only if changed\r\n miscProps[propName] = rawProps[propName];\r\n }\r\n }\r\n dateProfile = EventDateProfile_1.default.parse(dateProps, eventDef.source);\r\n if (dateProfile) { // no failure?\r\n dateMutation = EventDefDateMutation_1.default.createFromDiff(eventInstance.dateProfile, dateProfile, largeUnit);\r\n }\r\n if (standardProps.id !== eventDef.id) {\r\n eventDefId = standardProps.id; // only apply if there's a change\r\n }\r\n if (!util_1.isArraysEqual(standardProps.className, eventDef.className)) {\r\n className = standardProps.className; // only apply if there's a change\r\n }\r\n EventDef_1.default.copyVerbatimStandardProps(standardProps, // src\r\n verbatimStandardProps // dest\r\n );\r\n defMutation = new EventDefMutation();\r\n defMutation.eventDefId = eventDefId;\r\n defMutation.className = className;\r\n defMutation.verbatimStandardProps = verbatimStandardProps;\r\n defMutation.miscProps = miscProps;\r\n if (dateMutation) {\r\n defMutation.dateMutation = dateMutation;\r\n }\r\n return defMutation;\r\n };\r\n /*\r\n eventDef assumed to be a SingleEventDef.\r\n returns an undo function.\r\n */\r\n EventDefMutation.prototype.mutateSingle = function (eventDef) {\r\n var origDateProfile;\r\n if (this.dateMutation) {\r\n origDateProfile = eventDef.dateProfile;\r\n eventDef.dateProfile = this.dateMutation.buildNewDateProfile(origDateProfile, eventDef.source.calendar);\r\n }\r\n // can't undo\r\n // TODO: more DRY with EventDef::applyManualStandardProps\r\n if (this.eventDefId != null) {\r\n eventDef.id = EventDef_1.default.normalizeId((eventDef.rawId = this.eventDefId));\r\n }\r\n // can't undo\r\n // TODO: more DRY with EventDef::applyManualStandardProps\r\n if (this.className) {\r\n eventDef.className = this.className;\r\n }\r\n // can't undo\r\n if (this.verbatimStandardProps) {\r\n SingleEventDef_1.default.copyVerbatimStandardProps(this.verbatimStandardProps, // src\r\n eventDef // dest\r\n );\r\n }\r\n // can't undo\r\n if (this.miscProps) {\r\n eventDef.applyMiscProps(this.miscProps);\r\n }\r\n if (origDateProfile) {\r\n return function () {\r\n eventDef.dateProfile = origDateProfile;\r\n };\r\n }\r\n else {\r\n return function () { };\r\n }\r\n };\r\n EventDefMutation.prototype.setDateMutation = function (dateMutation) {\r\n if (dateMutation && !dateMutation.isEmpty()) {\r\n this.dateMutation = dateMutation;\r\n }\r\n else {\r\n this.dateMutation = null;\r\n }\r\n };\r\n EventDefMutation.prototype.isEmpty = function () {\r\n return !this.dateMutation;\r\n };\r\n return EventDefMutation;\r\n}());\r\nexports.default = EventDefMutation;\r\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar EventDefDateMutation = /** @class */ (function () {\r\n function EventDefDateMutation() {\r\n this.clearEnd = false;\r\n this.forceTimed = false;\r\n this.forceAllDay = false;\r\n }\r\n EventDefDateMutation.createFromDiff = function (dateProfile0, dateProfile1, largeUnit) {\r\n var clearEnd = dateProfile0.end && !dateProfile1.end;\r\n var forceTimed = dateProfile0.isAllDay() && !dateProfile1.isAllDay();\r\n var forceAllDay = !dateProfile0.isAllDay() && dateProfile1.isAllDay();\r\n var dateDelta;\r\n var endDiff;\r\n var endDelta;\r\n var mutation;\r\n // subtracts the dates in the appropriate way, returning a duration\r\n function subtractDates(date1, date0) {\r\n if (largeUnit) {\r\n return util_1.diffByUnit(date1, date0, largeUnit); // poorly named\r\n }\r\n else if (dateProfile1.isAllDay()) {\r\n return util_1.diffDay(date1, date0); // poorly named\r\n }\r\n else {\r\n return util_1.diffDayTime(date1, date0); // poorly named\r\n }\r\n }\r\n dateDelta = subtractDates(dateProfile1.start, dateProfile0.start);\r\n if (dateProfile1.end) {\r\n // use unzonedRanges because dateProfile0.end might be null\r\n endDiff = subtractDates(dateProfile1.unzonedRange.getEnd(), dateProfile0.unzonedRange.getEnd());\r\n endDelta = endDiff.subtract(dateDelta);\r\n }\r\n mutation = new EventDefDateMutation();\r\n mutation.clearEnd = clearEnd;\r\n mutation.forceTimed = forceTimed;\r\n mutation.forceAllDay = forceAllDay;\r\n mutation.setDateDelta(dateDelta);\r\n mutation.setEndDelta(endDelta);\r\n return mutation;\r\n };\r\n /*\r\n returns an undo function.\r\n */\r\n EventDefDateMutation.prototype.buildNewDateProfile = function (eventDateProfile, calendar) {\r\n var start = eventDateProfile.start.clone();\r\n var end = null;\r\n var shouldRezone = false;\r\n if (eventDateProfile.end && !this.clearEnd) {\r\n end = eventDateProfile.end.clone();\r\n }\r\n else if (this.endDelta && !end) {\r\n end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start);\r\n }\r\n if (this.forceTimed) {\r\n shouldRezone = true;\r\n if (!start.hasTime()) {\r\n start.time(0);\r\n }\r\n if (end && !end.hasTime()) {\r\n end.time(0);\r\n }\r\n }\r\n else if (this.forceAllDay) {\r\n if (start.hasTime()) {\r\n start.stripTime();\r\n }\r\n if (end && end.hasTime()) {\r\n end.stripTime();\r\n }\r\n }\r\n if (this.dateDelta) {\r\n shouldRezone = true;\r\n start.add(this.dateDelta);\r\n if (end) {\r\n end.add(this.dateDelta);\r\n }\r\n }\r\n // do this before adding startDelta to start, so we can work off of start\r\n if (this.endDelta) {\r\n shouldRezone = true;\r\n end.add(this.endDelta);\r\n }\r\n if (this.startDelta) {\r\n shouldRezone = true;\r\n start.add(this.startDelta);\r\n }\r\n if (shouldRezone) {\r\n start = calendar.applyTimezone(start);\r\n if (end) {\r\n end = calendar.applyTimezone(end);\r\n }\r\n }\r\n // TODO: okay to access calendar option?\r\n if (!end && calendar.opt('forceEventDuration')) {\r\n end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start);\r\n }\r\n return new EventDateProfile_1.default(start, end, calendar);\r\n };\r\n EventDefDateMutation.prototype.setDateDelta = function (dateDelta) {\r\n if (dateDelta && dateDelta.valueOf()) {\r\n this.dateDelta = dateDelta;\r\n }\r\n else {\r\n this.dateDelta = null;\r\n }\r\n };\r\n EventDefDateMutation.prototype.setStartDelta = function (startDelta) {\r\n if (startDelta && startDelta.valueOf()) {\r\n this.startDelta = startDelta;\r\n }\r\n else {\r\n this.startDelta = null;\r\n }\r\n };\r\n EventDefDateMutation.prototype.setEndDelta = function (endDelta) {\r\n if (endDelta && endDelta.valueOf()) {\r\n this.endDelta = endDelta;\r\n }\r\n else {\r\n this.endDelta = null;\r\n }\r\n };\r\n EventDefDateMutation.prototype.isEmpty = function () {\r\n return !this.clearEnd && !this.forceTimed && !this.forceAllDay &&\r\n !this.dateDelta && !this.startDelta && !this.endDelta;\r\n };\r\n return EventDefDateMutation;\r\n}());\r\nexports.default = EventDefDateMutation;\r\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Class_1 = __webpack_require__(35);\r\n/*\r\nEmbodies a div that has potential scrollbars\r\n*/\r\nvar Scroller = /** @class */ (function (_super) {\r\n tslib_1.__extends(Scroller, _super);\r\n function Scroller(options) {\r\n var _this = _super.call(this) || this;\r\n options = options || {};\r\n _this.overflowX = options.overflowX || options.overflow || 'auto';\r\n _this.overflowY = options.overflowY || options.overflow || 'auto';\r\n return _this;\r\n }\r\n Scroller.prototype.render = function () {\r\n this.el = this.renderEl();\r\n this.applyOverflow();\r\n };\r\n Scroller.prototype.renderEl = function () {\r\n return (this.scrollEl = $('
'));\r\n };\r\n // sets to natural height, unlocks overflow\r\n Scroller.prototype.clear = function () {\r\n this.setHeight('auto');\r\n this.applyOverflow();\r\n };\r\n Scroller.prototype.destroy = function () {\r\n this.el.remove();\r\n };\r\n // Overflow\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Scroller.prototype.applyOverflow = function () {\r\n this.scrollEl.css({\r\n 'overflow-x': this.overflowX,\r\n 'overflow-y': this.overflowY\r\n });\r\n };\r\n // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.\r\n // Useful for preserving scrollbar widths regardless of future resizes.\r\n // Can pass in scrollbarWidths for optimization.\r\n Scroller.prototype.lockOverflow = function (scrollbarWidths) {\r\n var overflowX = this.overflowX;\r\n var overflowY = this.overflowY;\r\n scrollbarWidths = scrollbarWidths || this.getScrollbarWidths();\r\n if (overflowX === 'auto') {\r\n overflowX = (scrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars?\r\n // OR scrolling pane with massless scrollbars?\r\n this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth\r\n // subtract 1 because of IE off-by-one issue\r\n ) ? 'scroll' : 'hidden';\r\n }\r\n if (overflowY === 'auto') {\r\n overflowY = (scrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars?\r\n // OR scrolling pane with massless scrollbars?\r\n this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight\r\n // subtract 1 because of IE off-by-one issue\r\n ) ? 'scroll' : 'hidden';\r\n }\r\n this.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY });\r\n };\r\n // Getters / Setters\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Scroller.prototype.setHeight = function (height) {\r\n this.scrollEl.height(height);\r\n };\r\n Scroller.prototype.getScrollTop = function () {\r\n return this.scrollEl.scrollTop();\r\n };\r\n Scroller.prototype.setScrollTop = function (top) {\r\n this.scrollEl.scrollTop(top);\r\n };\r\n Scroller.prototype.getClientWidth = function () {\r\n return this.scrollEl[0].clientWidth;\r\n };\r\n Scroller.prototype.getClientHeight = function () {\r\n return this.scrollEl[0].clientHeight;\r\n };\r\n Scroller.prototype.getScrollbarWidths = function () {\r\n return util_1.getScrollbarWidths(this.scrollEl);\r\n };\r\n return Scroller;\r\n}(Class_1.default));\r\nexports.default = Scroller;\r\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar DateComponent_1 = __webpack_require__(231);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar InteractiveDateComponent = /** @class */ (function (_super) {\r\n tslib_1.__extends(InteractiveDateComponent, _super);\r\n function InteractiveDateComponent(_view, _options) {\r\n var _this = _super.call(this, _view, _options) || this;\r\n // self-config, overridable by subclasses\r\n _this.segSelector = '.fc-event-container > *'; // what constitutes an event element?\r\n if (_this.dateSelectingClass) {\r\n _this.dateClicking = new _this.dateClickingClass(_this);\r\n }\r\n if (_this.dateSelectingClass) {\r\n _this.dateSelecting = new _this.dateSelectingClass(_this);\r\n }\r\n if (_this.eventPointingClass) {\r\n _this.eventPointing = new _this.eventPointingClass(_this);\r\n }\r\n if (_this.eventDraggingClass && _this.eventPointing) {\r\n _this.eventDragging = new _this.eventDraggingClass(_this, _this.eventPointing);\r\n }\r\n if (_this.eventResizingClass && _this.eventPointing) {\r\n _this.eventResizing = new _this.eventResizingClass(_this, _this.eventPointing);\r\n }\r\n if (_this.externalDroppingClass) {\r\n _this.externalDropping = new _this.externalDroppingClass(_this);\r\n }\r\n return _this;\r\n }\r\n // Sets the container element that the view should render inside of, does global DOM-related initializations,\r\n // and renders all the non-date-related content inside.\r\n InteractiveDateComponent.prototype.setElement = function (el) {\r\n _super.prototype.setElement.call(this, el);\r\n if (this.dateClicking) {\r\n this.dateClicking.bindToEl(el);\r\n }\r\n if (this.dateSelecting) {\r\n this.dateSelecting.bindToEl(el);\r\n }\r\n this.bindAllSegHandlersToEl(el);\r\n };\r\n InteractiveDateComponent.prototype.removeElement = function () {\r\n this.endInteractions();\r\n _super.prototype.removeElement.call(this);\r\n };\r\n InteractiveDateComponent.prototype.executeEventUnrender = function () {\r\n this.endInteractions();\r\n _super.prototype.executeEventUnrender.call(this);\r\n };\r\n InteractiveDateComponent.prototype.bindGlobalHandlers = function () {\r\n _super.prototype.bindGlobalHandlers.call(this);\r\n if (this.externalDropping) {\r\n this.externalDropping.bindToDocument();\r\n }\r\n };\r\n InteractiveDateComponent.prototype.unbindGlobalHandlers = function () {\r\n _super.prototype.unbindGlobalHandlers.call(this);\r\n if (this.externalDropping) {\r\n this.externalDropping.unbindFromDocument();\r\n }\r\n };\r\n InteractiveDateComponent.prototype.bindDateHandlerToEl = function (el, name, handler) {\r\n var _this = this;\r\n // attach a handler to the grid's root element.\r\n // jQuery will take care of unregistering them when removeElement gets called.\r\n this.el.on(name, function (ev) {\r\n if (!$(ev.target).is(_this.segSelector + ':not(.fc-helper),' + // directly on an event element\r\n _this.segSelector + ':not(.fc-helper) *,' + // within an event element\r\n '.fc-more,' + // a \"more..\" link\r\n 'a[data-goto]' // a clickable nav link\r\n )) {\r\n return handler.call(_this, ev);\r\n }\r\n });\r\n };\r\n InteractiveDateComponent.prototype.bindAllSegHandlersToEl = function (el) {\r\n [\r\n this.eventPointing,\r\n this.eventDragging,\r\n this.eventResizing\r\n ].forEach(function (eventInteraction) {\r\n if (eventInteraction) {\r\n eventInteraction.bindToEl(el);\r\n }\r\n });\r\n };\r\n InteractiveDateComponent.prototype.bindSegHandlerToEl = function (el, name, handler) {\r\n var _this = this;\r\n el.on(name, this.segSelector, function (ev) {\r\n var segEl = $(ev.currentTarget);\r\n if (!segEl.is('.fc-helper')) {\r\n var seg = segEl.data('fc-seg'); // grab segment data. put there by View::renderEventsPayload\r\n if (seg && !_this.shouldIgnoreEventPointing()) {\r\n return handler.call(_this, seg, ev); // context will be the Grid\r\n }\r\n }\r\n });\r\n };\r\n InteractiveDateComponent.prototype.shouldIgnoreMouse = function () {\r\n // HACK\r\n // This will still work even though bindDateHandlerToEl doesn't use GlobalEmitter.\r\n return GlobalEmitter_1.default.get().shouldIgnoreMouse();\r\n };\r\n InteractiveDateComponent.prototype.shouldIgnoreTouch = function () {\r\n var view = this._getView();\r\n // On iOS (and Android?) when a new selection is initiated overtop another selection,\r\n // the touchend never fires because the elements gets removed mid-touch-interaction (my theory).\r\n // HACK: simply don't allow this to happen.\r\n // ALSO: prevent selection when an *event* is already raised.\r\n return view.isSelected || view.selectedEvent;\r\n };\r\n InteractiveDateComponent.prototype.shouldIgnoreEventPointing = function () {\r\n // only call the handlers if there is not a drag/resize in progress\r\n return (this.eventDragging && this.eventDragging.isDragging) ||\r\n (this.eventResizing && this.eventResizing.isResizing);\r\n };\r\n InteractiveDateComponent.prototype.canStartSelection = function (seg, ev) {\r\n return util_1.getEvIsTouch(ev) &&\r\n !this.canStartResize(seg, ev) &&\r\n (this.isEventDefDraggable(seg.footprint.eventDef) ||\r\n this.isEventDefResizable(seg.footprint.eventDef));\r\n };\r\n InteractiveDateComponent.prototype.canStartDrag = function (seg, ev) {\r\n return !this.canStartResize(seg, ev) &&\r\n this.isEventDefDraggable(seg.footprint.eventDef);\r\n };\r\n InteractiveDateComponent.prototype.canStartResize = function (seg, ev) {\r\n var view = this._getView();\r\n var eventDef = seg.footprint.eventDef;\r\n return (!util_1.getEvIsTouch(ev) || view.isEventDefSelected(eventDef)) &&\r\n this.isEventDefResizable(eventDef) &&\r\n $(ev.target).is('.fc-resizer');\r\n };\r\n // Kills all in-progress dragging.\r\n // Useful for when public API methods that result in re-rendering are invoked during a drag.\r\n // Also useful for when touch devices misbehave and don't fire their touchend.\r\n InteractiveDateComponent.prototype.endInteractions = function () {\r\n [\r\n this.dateClicking,\r\n this.dateSelecting,\r\n this.eventPointing,\r\n this.eventDragging,\r\n this.eventResizing\r\n ].forEach(function (interaction) {\r\n if (interaction) {\r\n interaction.end();\r\n }\r\n });\r\n };\r\n // Event Drag-n-Drop\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Computes if the given event is allowed to be dragged by the user\r\n InteractiveDateComponent.prototype.isEventDefDraggable = function (eventDef) {\r\n return this.isEventDefStartEditable(eventDef);\r\n };\r\n InteractiveDateComponent.prototype.isEventDefStartEditable = function (eventDef) {\r\n var isEditable = eventDef.isStartExplicitlyEditable();\r\n if (isEditable == null) {\r\n isEditable = this.opt('eventStartEditable');\r\n if (isEditable == null) {\r\n isEditable = this.isEventDefGenerallyEditable(eventDef);\r\n }\r\n }\r\n return isEditable;\r\n };\r\n InteractiveDateComponent.prototype.isEventDefGenerallyEditable = function (eventDef) {\r\n var isEditable = eventDef.isExplicitlyEditable();\r\n if (isEditable == null) {\r\n isEditable = this.opt('editable');\r\n }\r\n return isEditable;\r\n };\r\n // Event Resizing\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Computes if the given event is allowed to be resized from its starting edge\r\n InteractiveDateComponent.prototype.isEventDefResizableFromStart = function (eventDef) {\r\n return this.opt('eventResizableFromStart') && this.isEventDefResizable(eventDef);\r\n };\r\n // Computes if the given event is allowed to be resized from its ending edge\r\n InteractiveDateComponent.prototype.isEventDefResizableFromEnd = function (eventDef) {\r\n return this.isEventDefResizable(eventDef);\r\n };\r\n // Computes if the given event is allowed to be resized by the user at all\r\n InteractiveDateComponent.prototype.isEventDefResizable = function (eventDef) {\r\n var isResizable = eventDef.isDurationExplicitlyEditable();\r\n if (isResizable == null) {\r\n isResizable = this.opt('eventDurationEditable');\r\n if (isResizable == null) {\r\n isResizable = this.isEventDefGenerallyEditable(eventDef);\r\n }\r\n }\r\n return isResizable;\r\n };\r\n // Event Mutation / Constraints\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Diffs the two dates, returning a duration, based on granularity of the grid\r\n // TODO: port isTimeScale into this system?\r\n InteractiveDateComponent.prototype.diffDates = function (a, b) {\r\n if (this.largeUnit) {\r\n return util_1.diffByUnit(a, b, this.largeUnit);\r\n }\r\n else {\r\n return util_1.diffDayTime(a, b);\r\n }\r\n };\r\n // is it allowed, in relation to the view's validRange?\r\n // NOTE: very similar to isExternalInstanceGroupAllowed\r\n InteractiveDateComponent.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) {\r\n var view = this._getView();\r\n var dateProfile = this.dateProfile;\r\n var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n // TODO: just use getAllEventRanges directly\r\n if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) {\r\n return false;\r\n }\r\n }\r\n return view.calendar.constraints.isEventInstanceGroupAllowed(eventInstanceGroup);\r\n };\r\n // NOTE: very similar to isEventInstanceGroupAllowed\r\n // when it's a completely anonymous external drag, no event.\r\n InteractiveDateComponent.prototype.isExternalInstanceGroupAllowed = function (eventInstanceGroup) {\r\n var view = this._getView();\r\n var dateProfile = this.dateProfile;\r\n var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) {\r\n return false;\r\n }\r\n }\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n // treat it as a selection\r\n // TODO: pass in eventInstanceGroup instead\r\n // because we don't want calendar's constraint system to depend on a component's\r\n // determination of footprints.\r\n if (!view.calendar.constraints.isSelectionFootprintAllowed(eventFootprints[i].componentFootprint)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return InteractiveDateComponent;\r\n}(DateComponent_1.default));\r\nexports.default = InteractiveDateComponent;\r\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar RenderQueue_1 = __webpack_require__(229);\r\nvar DateProfileGenerator_1 = __webpack_require__(55);\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\n/* An abstract class from which other views inherit from\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar View = /** @class */ (function (_super) {\r\n tslib_1.__extends(View, _super);\r\n function View(calendar, viewSpec) {\r\n var _this = _super.call(this, null, viewSpec.options) || this;\r\n _this.batchRenderDepth = 0;\r\n _this.isSelected = false; // boolean whether a range of time is user-selected or not\r\n _this.calendar = calendar;\r\n _this.viewSpec = viewSpec;\r\n // shortcuts\r\n _this.type = viewSpec.type;\r\n // .name is deprecated\r\n _this.name = _this.type;\r\n _this.initRenderQueue();\r\n _this.initHiddenDays();\r\n _this.dateProfileGenerator = new _this.dateProfileGeneratorClass(_this);\r\n _this.bindBaseRenderHandlers();\r\n _this.eventOrderSpecs = util_1.parseFieldSpecs(_this.opt('eventOrder'));\r\n // legacy\r\n if (_this['initialize']) {\r\n _this['initialize']();\r\n }\r\n return _this;\r\n }\r\n View.prototype._getView = function () {\r\n return this;\r\n };\r\n // Retrieves an option with the given name\r\n View.prototype.opt = function (name) {\r\n return this.options[name];\r\n };\r\n /* Render Queue\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.initRenderQueue = function () {\r\n this.renderQueue = new RenderQueue_1.default({\r\n event: this.opt('eventRenderWait')\r\n });\r\n this.renderQueue.on('start', this.onRenderQueueStart.bind(this));\r\n this.renderQueue.on('stop', this.onRenderQueueStop.bind(this));\r\n this.on('before:change', this.startBatchRender);\r\n this.on('change', this.stopBatchRender);\r\n };\r\n View.prototype.onRenderQueueStart = function () {\r\n this.calendar.freezeContentHeight();\r\n this.addScroll(this.queryScroll());\r\n };\r\n View.prototype.onRenderQueueStop = function () {\r\n if (this.calendar.updateViewSize()) { // success?\r\n this.popScroll();\r\n }\r\n this.calendar.thawContentHeight();\r\n };\r\n View.prototype.startBatchRender = function () {\r\n if (!(this.batchRenderDepth++)) {\r\n this.renderQueue.pause();\r\n }\r\n };\r\n View.prototype.stopBatchRender = function () {\r\n if (!(--this.batchRenderDepth)) {\r\n this.renderQueue.resume();\r\n }\r\n };\r\n View.prototype.requestRender = function (func, namespace, actionType) {\r\n this.renderQueue.queue(func, namespace, actionType);\r\n };\r\n // given func will auto-bind to `this`\r\n View.prototype.whenSizeUpdated = function (func) {\r\n if (this.renderQueue.isRunning) {\r\n this.renderQueue.one('stop', func.bind(this));\r\n }\r\n else {\r\n func.call(this);\r\n }\r\n };\r\n /* Title and Date Formatting\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Computes what the title at the top of the calendar should be for this view\r\n View.prototype.computeTitle = function (dateProfile) {\r\n var unzonedRange;\r\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\r\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\r\n unzonedRange = dateProfile.currentUnzonedRange;\r\n }\r\n else { // for day units or smaller, use the actual day range\r\n unzonedRange = dateProfile.activeUnzonedRange;\r\n }\r\n return this.formatRange({\r\n start: this.calendar.msToMoment(unzonedRange.startMs, dateProfile.isRangeAllDay),\r\n end: this.calendar.msToMoment(unzonedRange.endMs, dateProfile.isRangeAllDay)\r\n }, dateProfile.isRangeAllDay, this.opt('titleFormat') || this.computeTitleFormat(dateProfile), this.opt('titleRangeSeparator'));\r\n };\r\n // Generates the format string that should be used to generate the title for the current date range.\r\n // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\r\n View.prototype.computeTitleFormat = function (dateProfile) {\r\n var currentRangeUnit = dateProfile.currentRangeUnit;\r\n if (currentRangeUnit === 'year') {\r\n return 'YYYY';\r\n }\r\n else if (currentRangeUnit === 'month') {\r\n return this.opt('monthYearFormat'); // like \"September 2014\"\r\n }\r\n else if (dateProfile.currentUnzonedRange.as('days') > 1) {\r\n return 'll'; // multi-day range. shorter, like \"Sep 9 - 10 2014\"\r\n }\r\n else {\r\n return 'LL'; // one day. longer, like \"September 9 2014\"\r\n }\r\n };\r\n // Date Setting/Unsetting\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.setDate = function (date) {\r\n var currentDateProfile = this.get('dateProfile');\r\n var newDateProfile = this.dateProfileGenerator.build(date, undefined, true); // forceToValid=true\r\n if (!currentDateProfile ||\r\n !currentDateProfile.activeUnzonedRange.equals(newDateProfile.activeUnzonedRange)) {\r\n this.set('dateProfile', newDateProfile);\r\n }\r\n };\r\n View.prototype.unsetDate = function () {\r\n this.unset('dateProfile');\r\n };\r\n // Event Data\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.fetchInitialEvents = function (dateProfile) {\r\n var calendar = this.calendar;\r\n var forceAllDay = dateProfile.isRangeAllDay && !this.usesMinMaxTime;\r\n return calendar.requestEvents(calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, forceAllDay), calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, forceAllDay));\r\n };\r\n View.prototype.bindEventChanges = function () {\r\n this.listenTo(this.calendar, 'eventsReset', this.resetEvents); // TODO: make this a real event\r\n };\r\n View.prototype.unbindEventChanges = function () {\r\n this.stopListeningTo(this.calendar, 'eventsReset');\r\n };\r\n View.prototype.setEvents = function (eventsPayload) {\r\n this.set('currentEvents', eventsPayload);\r\n this.set('hasEvents', true);\r\n };\r\n View.prototype.unsetEvents = function () {\r\n this.unset('currentEvents');\r\n this.unset('hasEvents');\r\n };\r\n View.prototype.resetEvents = function (eventsPayload) {\r\n this.startBatchRender();\r\n this.unsetEvents();\r\n this.setEvents(eventsPayload);\r\n this.stopBatchRender();\r\n };\r\n // Date High-level Rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.requestDateRender = function (dateProfile) {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.executeDateRender(dateProfile);\r\n }, 'date', 'init');\r\n };\r\n View.prototype.requestDateUnrender = function () {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.executeDateUnrender();\r\n }, 'date', 'destroy');\r\n };\r\n // if dateProfile not specified, uses current\r\n View.prototype.executeDateRender = function (dateProfile) {\r\n _super.prototype.executeDateRender.call(this, dateProfile);\r\n if (this['render']) {\r\n this['render'](); // TODO: deprecate\r\n }\r\n this.trigger('datesRendered');\r\n this.addScroll({ isDateInit: true });\r\n this.startNowIndicator(); // shouldn't render yet because updateSize will be called soon\r\n };\r\n View.prototype.executeDateUnrender = function () {\r\n this.unselect();\r\n this.stopNowIndicator();\r\n this.trigger('before:datesUnrendered');\r\n if (this['destroy']) {\r\n this['destroy'](); // TODO: deprecate\r\n }\r\n _super.prototype.executeDateUnrender.call(this);\r\n };\r\n // \"Base\" rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.bindBaseRenderHandlers = function () {\r\n var _this = this;\r\n this.on('datesRendered', function () {\r\n _this.whenSizeUpdated(_this.triggerViewRender);\r\n });\r\n this.on('before:datesUnrendered', function () {\r\n _this.triggerViewDestroy();\r\n });\r\n };\r\n View.prototype.triggerViewRender = function () {\r\n this.publiclyTrigger('viewRender', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n View.prototype.triggerViewDestroy = function () {\r\n this.publiclyTrigger('viewDestroy', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n // Event High-level Rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.requestEventsRender = function (eventsPayload) {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.executeEventRender(eventsPayload);\r\n _this.whenSizeUpdated(_this.triggerAfterEventsRendered);\r\n }, 'event', 'init');\r\n };\r\n View.prototype.requestEventsUnrender = function () {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.triggerBeforeEventsDestroyed();\r\n _this.executeEventUnrender();\r\n }, 'event', 'destroy');\r\n };\r\n // Business Hour High-level Rendering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n View.prototype.requestBusinessHoursRender = function (businessHourGenerator) {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.renderBusinessHours(businessHourGenerator);\r\n }, 'businessHours', 'init');\r\n };\r\n View.prototype.requestBusinessHoursUnrender = function () {\r\n var _this = this;\r\n this.requestRender(function () {\r\n _this.unrenderBusinessHours();\r\n }, 'businessHours', 'destroy');\r\n };\r\n // Misc view rendering utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Binds DOM handlers to elements that reside outside the view container, such as the document\r\n View.prototype.bindGlobalHandlers = function () {\r\n _super.prototype.bindGlobalHandlers.call(this);\r\n this.listenTo(GlobalEmitter_1.default.get(), {\r\n touchstart: this.processUnselect,\r\n mousedown: this.handleDocumentMousedown\r\n });\r\n };\r\n // Unbinds DOM handlers from elements that reside outside the view container\r\n View.prototype.unbindGlobalHandlers = function () {\r\n _super.prototype.unbindGlobalHandlers.call(this);\r\n this.stopListeningTo(GlobalEmitter_1.default.get());\r\n };\r\n /* Now Indicator\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Immediately render the current time indicator and begins re-rendering it at an interval,\r\n // which is defined by this.getNowIndicatorUnit().\r\n // TODO: somehow do this for the current whole day's background too\r\n View.prototype.startNowIndicator = function () {\r\n var _this = this;\r\n var unit;\r\n var update;\r\n var delay; // ms wait value\r\n if (this.opt('nowIndicator')) {\r\n unit = this.getNowIndicatorUnit();\r\n if (unit) {\r\n update = util_1.proxy(this, 'updateNowIndicator'); // bind to `this`\r\n this.initialNowDate = this.calendar.getNow();\r\n this.initialNowQueriedMs = new Date().valueOf();\r\n // wait until the beginning of the next interval\r\n delay = this.initialNowDate.clone().startOf(unit).add(1, unit).valueOf() - this.initialNowDate.valueOf();\r\n this.nowIndicatorTimeoutID = setTimeout(function () {\r\n _this.nowIndicatorTimeoutID = null;\r\n update();\r\n delay = +moment.duration(1, unit);\r\n delay = Math.max(100, delay); // prevent too frequent\r\n _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval\r\n }, delay);\r\n }\r\n // rendering will be initiated in updateSize\r\n }\r\n };\r\n // rerenders the now indicator, computing the new current time from the amount of time that has passed\r\n // since the initial getNow call.\r\n View.prototype.updateNowIndicator = function () {\r\n if (this.isDatesRendered &&\r\n this.initialNowDate // activated before?\r\n ) {\r\n this.unrenderNowIndicator(); // won't unrender if unnecessary\r\n this.renderNowIndicator(this.initialNowDate.clone().add(new Date().valueOf() - this.initialNowQueriedMs) // add ms\r\n );\r\n this.isNowIndicatorRendered = true;\r\n }\r\n };\r\n // Immediately unrenders the view's current time indicator and stops any re-rendering timers.\r\n // Won't cause side effects if indicator isn't rendered.\r\n View.prototype.stopNowIndicator = function () {\r\n if (this.isNowIndicatorRendered) {\r\n if (this.nowIndicatorTimeoutID) {\r\n clearTimeout(this.nowIndicatorTimeoutID);\r\n this.nowIndicatorTimeoutID = null;\r\n }\r\n if (this.nowIndicatorIntervalID) {\r\n clearInterval(this.nowIndicatorIntervalID);\r\n this.nowIndicatorIntervalID = null;\r\n }\r\n this.unrenderNowIndicator();\r\n this.isNowIndicatorRendered = false;\r\n }\r\n };\r\n /* Dimensions\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n if (this['setHeight']) { // for legacy API\r\n this['setHeight'](totalHeight, isAuto);\r\n }\r\n else {\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n }\r\n this.updateNowIndicator();\r\n };\r\n /* Scroller\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.addScroll = function (scroll) {\r\n var queuedScroll = this.queuedScroll || (this.queuedScroll = {});\r\n $.extend(queuedScroll, scroll);\r\n };\r\n View.prototype.popScroll = function () {\r\n this.applyQueuedScroll();\r\n this.queuedScroll = null;\r\n };\r\n View.prototype.applyQueuedScroll = function () {\r\n if (this.queuedScroll) {\r\n this.applyScroll(this.queuedScroll);\r\n }\r\n };\r\n View.prototype.queryScroll = function () {\r\n var scroll = {};\r\n if (this.isDatesRendered) {\r\n $.extend(scroll, this.queryDateScroll());\r\n }\r\n return scroll;\r\n };\r\n View.prototype.applyScroll = function (scroll) {\r\n if (scroll.isDateInit && this.isDatesRendered) {\r\n $.extend(scroll, this.computeInitialDateScroll());\r\n }\r\n if (this.isDatesRendered) {\r\n this.applyDateScroll(scroll);\r\n }\r\n };\r\n View.prototype.computeInitialDateScroll = function () {\r\n return {}; // subclasses must implement\r\n };\r\n View.prototype.queryDateScroll = function () {\r\n return {}; // subclasses must implement\r\n };\r\n View.prototype.applyDateScroll = function (scroll) {\r\n // subclasses must implement\r\n };\r\n /* Event Drag-n-Drop\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.reportEventDrop = function (eventInstance, eventMutation, el, ev) {\r\n var eventManager = this.calendar.eventManager;\r\n var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation);\r\n var dateMutation = eventMutation.dateMutation;\r\n // update the EventInstance, for handlers\r\n if (dateMutation) {\r\n eventInstance.dateProfile = dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar);\r\n }\r\n this.triggerEventDrop(eventInstance, \r\n // a drop doesn't necessarily mean a date mutation (ex: resource change)\r\n (dateMutation && dateMutation.dateDelta) || moment.duration(), undoFunc, el, ev);\r\n };\r\n // Triggers event-drop handlers that have subscribed via the API\r\n View.prototype.triggerEventDrop = function (eventInstance, dateDelta, undoFunc, el, ev) {\r\n this.publiclyTrigger('eventDrop', {\r\n context: el[0],\r\n args: [\r\n eventInstance.toLegacy(),\r\n dateDelta,\r\n undoFunc,\r\n ev,\r\n {},\r\n this\r\n ]\r\n });\r\n };\r\n /* External Element Drag-n-Drop\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Must be called when an external element, via jQuery UI, has been dropped onto the calendar.\r\n // `meta` is the parsed data that has been embedded into the dragging event.\r\n // `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\r\n View.prototype.reportExternalDrop = function (singleEventDef, isEvent, isSticky, el, ev, ui) {\r\n if (isEvent) {\r\n this.calendar.eventManager.addEventDef(singleEventDef, isSticky);\r\n }\r\n this.triggerExternalDrop(singleEventDef, isEvent, el, ev, ui);\r\n };\r\n // Triggers external-drop handlers that have subscribed via the API\r\n View.prototype.triggerExternalDrop = function (singleEventDef, isEvent, el, ev, ui) {\r\n // trigger 'drop' regardless of whether element represents an event\r\n this.publiclyTrigger('drop', {\r\n context: el[0],\r\n args: [\r\n singleEventDef.dateProfile.start.clone(),\r\n ev,\r\n ui,\r\n this\r\n ]\r\n });\r\n if (isEvent) {\r\n // signal an external event landed\r\n this.publiclyTrigger('eventReceive', {\r\n context: this,\r\n args: [\r\n singleEventDef.buildInstance().toLegacy(),\r\n this\r\n ]\r\n });\r\n }\r\n };\r\n /* Event Resizing\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Must be called when an event in the view has been resized to a new length\r\n View.prototype.reportEventResize = function (eventInstance, eventMutation, el, ev) {\r\n var eventManager = this.calendar.eventManager;\r\n var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation);\r\n // update the EventInstance, for handlers\r\n eventInstance.dateProfile = eventMutation.dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar);\r\n var resizeDelta = eventMutation.dateMutation.endDelta || eventMutation.dateMutation.startDelta;\r\n this.triggerEventResize(eventInstance, resizeDelta, undoFunc, el, ev);\r\n };\r\n // Triggers event-resize handlers that have subscribed via the API\r\n View.prototype.triggerEventResize = function (eventInstance, resizeDelta, undoFunc, el, ev) {\r\n this.publiclyTrigger('eventResize', {\r\n context: el[0],\r\n args: [\r\n eventInstance.toLegacy(),\r\n resizeDelta,\r\n undoFunc,\r\n ev,\r\n {},\r\n this\r\n ]\r\n });\r\n };\r\n /* Selection (time range)\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Selects a date span on the view. `start` and `end` are both Moments.\r\n // `ev` is the native mouse event that begin the interaction.\r\n View.prototype.select = function (footprint, ev) {\r\n this.unselect(ev);\r\n this.renderSelectionFootprint(footprint);\r\n this.reportSelection(footprint, ev);\r\n };\r\n View.prototype.renderSelectionFootprint = function (footprint) {\r\n if (this['renderSelection']) { // legacy method in custom view classes\r\n this['renderSelection'](footprint.toLegacy(this.calendar));\r\n }\r\n else {\r\n _super.prototype.renderSelectionFootprint.call(this, footprint);\r\n }\r\n };\r\n // Called when a new selection is made. Updates internal state and triggers handlers.\r\n View.prototype.reportSelection = function (footprint, ev) {\r\n this.isSelected = true;\r\n this.triggerSelect(footprint, ev);\r\n };\r\n // Triggers handlers to 'select'\r\n View.prototype.triggerSelect = function (footprint, ev) {\r\n var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of \"Event\"DateProfile?\r\n this.publiclyTrigger('select', {\r\n context: this,\r\n args: [\r\n dateProfile.start,\r\n dateProfile.end,\r\n ev,\r\n this\r\n ]\r\n });\r\n };\r\n // Undoes a selection. updates in the internal state and triggers handlers.\r\n // `ev` is the native mouse event that began the interaction.\r\n View.prototype.unselect = function (ev) {\r\n if (this.isSelected) {\r\n this.isSelected = false;\r\n if (this['destroySelection']) {\r\n this['destroySelection'](); // TODO: deprecate\r\n }\r\n this.unrenderSelection();\r\n this.publiclyTrigger('unselect', {\r\n context: this,\r\n args: [ev, this]\r\n });\r\n }\r\n };\r\n /* Event Selection\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.selectEventInstance = function (eventInstance) {\r\n if (!this.selectedEventInstance ||\r\n this.selectedEventInstance !== eventInstance) {\r\n this.unselectEventInstance();\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.footprint.eventInstance === eventInstance &&\r\n seg.el // necessary?\r\n ) {\r\n seg.el.addClass('fc-selected');\r\n }\r\n });\r\n this.selectedEventInstance = eventInstance;\r\n }\r\n };\r\n View.prototype.unselectEventInstance = function () {\r\n if (this.selectedEventInstance) {\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.el) { // necessary?\r\n seg.el.removeClass('fc-selected');\r\n }\r\n });\r\n this.selectedEventInstance = null;\r\n }\r\n };\r\n View.prototype.isEventDefSelected = function (eventDef) {\r\n // event references might change on refetchEvents(), while selectedEventInstance doesn't,\r\n // so compare IDs\r\n return this.selectedEventInstance && this.selectedEventInstance.def.id === eventDef.id;\r\n };\r\n /* Mouse / Touch Unselecting (time range & event unselection)\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // TODO: move consistently to down/start or up/end?\r\n // TODO: don't kill previous selection if touch scrolling\r\n View.prototype.handleDocumentMousedown = function (ev) {\r\n if (util_1.isPrimaryMouseButton(ev)) {\r\n this.processUnselect(ev);\r\n }\r\n };\r\n View.prototype.processUnselect = function (ev) {\r\n this.processRangeUnselect(ev);\r\n this.processEventUnselect(ev);\r\n };\r\n View.prototype.processRangeUnselect = function (ev) {\r\n var ignore;\r\n // is there a time-range selection?\r\n if (this.isSelected && this.opt('unselectAuto')) {\r\n // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element\r\n ignore = this.opt('unselectCancel');\r\n if (!ignore || !$(ev.target).closest(ignore).length) {\r\n this.unselect(ev);\r\n }\r\n }\r\n };\r\n View.prototype.processEventUnselect = function (ev) {\r\n if (this.selectedEventInstance) {\r\n if (!$(ev.target).closest('.fc-selected').length) {\r\n this.unselectEventInstance();\r\n }\r\n }\r\n };\r\n /* Triggers\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n View.prototype.triggerBaseRendered = function () {\r\n this.publiclyTrigger('viewRender', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n View.prototype.triggerBaseUnrendered = function () {\r\n this.publiclyTrigger('viewDestroy', {\r\n context: this,\r\n args: [this, this.el]\r\n });\r\n };\r\n // Triggers handlers to 'dayClick'\r\n // Span has start/end of the clicked area. Only the start is useful.\r\n View.prototype.triggerDayClick = function (footprint, dayEl, ev) {\r\n var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of \"Event\"DateProfile?\r\n this.publiclyTrigger('dayClick', {\r\n context: dayEl,\r\n args: [dateProfile.start, ev, this]\r\n });\r\n };\r\n /* Date Utils\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // For DateComponent::getDayClasses\r\n View.prototype.isDateInOtherMonth = function (date, dateProfile) {\r\n return false;\r\n };\r\n // Arguments after name will be forwarded to a hypothetical function value\r\n // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects.\r\n // Always clone your objects if you fear mutation.\r\n View.prototype.getUnzonedRangeOption = function (name) {\r\n var val = this.opt(name);\r\n if (typeof val === 'function') {\r\n val = val.apply(null, Array.prototype.slice.call(arguments, 1));\r\n }\r\n if (val) {\r\n return this.calendar.parseUnzonedRange(val);\r\n }\r\n };\r\n /* Hidden Days\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Initializes internal variables related to calculating hidden days-of-week\r\n View.prototype.initHiddenDays = function () {\r\n var hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden\r\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\r\n var dayCnt = 0;\r\n var i;\r\n if (this.opt('weekends') === false) {\r\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\r\n }\r\n for (i = 0; i < 7; i++) {\r\n if (!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)) {\r\n dayCnt++;\r\n }\r\n }\r\n if (!dayCnt) {\r\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\r\n }\r\n this.isHiddenDayHash = isHiddenDayHash;\r\n };\r\n // Remove days from the beginning and end of the range that are computed as hidden.\r\n // If the whole range is trimmed off, returns null\r\n View.prototype.trimHiddenDays = function (inputUnzonedRange) {\r\n var start = inputUnzonedRange.getStart();\r\n var end = inputUnzonedRange.getEnd();\r\n if (start) {\r\n start = this.skipHiddenDays(start);\r\n }\r\n if (end) {\r\n end = this.skipHiddenDays(end, -1, true);\r\n }\r\n if (start === null || end === null || start < end) {\r\n return new UnzonedRange_1.default(start, end);\r\n }\r\n return null;\r\n };\r\n // Is the current day hidden?\r\n // `day` is a day-of-week index (0-6), or a Moment\r\n View.prototype.isHiddenDay = function (day) {\r\n if (moment.isMoment(day)) {\r\n day = day.day();\r\n }\r\n return this.isHiddenDayHash[day];\r\n };\r\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\r\n // DOES NOT CONSIDER validUnzonedRange!\r\n // If the initial value of `date` is not a hidden day, don't do anything.\r\n // Pass `isExclusive` as `true` if you are dealing with an end date.\r\n // `inc` defaults to `1` (increment one day forward each time)\r\n View.prototype.skipHiddenDays = function (date, inc, isExclusive) {\r\n if (inc === void 0) { inc = 1; }\r\n if (isExclusive === void 0) { isExclusive = false; }\r\n var out = date.clone();\r\n while (this.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]) {\r\n out.add(inc, 'days');\r\n }\r\n return out;\r\n };\r\n return View;\r\n}(InteractiveDateComponent_1.default));\r\nexports.default = View;\r\nView.prototype.usesMinMaxTime = false;\r\nView.prototype.dateProfileGeneratorClass = DateProfileGenerator_1.default;\r\nView.watch('displayingDates', ['isInDom', 'dateProfile'], function (deps) {\r\n this.requestDateRender(deps.dateProfile);\r\n}, function () {\r\n this.requestDateUnrender();\r\n});\r\nView.watch('displayingBusinessHours', ['displayingDates', 'businessHourGenerator'], function (deps) {\r\n this.requestBusinessHoursRender(deps.businessHourGenerator);\r\n}, function () {\r\n this.requestBusinessHoursUnrender();\r\n});\r\nView.watch('initialEvents', ['dateProfile'], function (deps) {\r\n return this.fetchInitialEvents(deps.dateProfile);\r\n});\r\nView.watch('bindingEvents', ['initialEvents'], function (deps) {\r\n this.setEvents(deps.initialEvents);\r\n this.bindEventChanges();\r\n}, function () {\r\n this.unbindEventChanges();\r\n this.unsetEvents();\r\n});\r\nView.watch('displayingEvents', ['displayingDates', 'hasEvents'], function () {\r\n this.requestEventsRender(this.get('currentEvents'));\r\n}, function () {\r\n this.requestEventsUnrender();\r\n});\r\nView.watch('title', ['dateProfile'], function (deps) {\r\n return (this.title = this.computeTitle(deps.dateProfile)); // assign to View for legacy reasons\r\n});\r\nView.watch('legacyDateProps', ['dateProfile'], function (deps) {\r\n var calendar = this.calendar;\r\n var dateProfile = deps.dateProfile;\r\n // DEPRECATED, but we need to keep it updated...\r\n this.start = calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, dateProfile.isRangeAllDay);\r\n this.end = calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, dateProfile.isRangeAllDay);\r\n this.intervalStart = calendar.msToMoment(dateProfile.currentUnzonedRange.startMs, dateProfile.isRangeAllDay);\r\n this.intervalEnd = calendar.msToMoment(dateProfile.currentUnzonedRange.endMs, dateProfile.isRangeAllDay);\r\n});\r\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer = /** @class */ (function () {\r\n function EventRenderer(component, fillRenderer) {\r\n this.view = component._getView();\r\n this.component = component;\r\n this.fillRenderer = fillRenderer;\r\n }\r\n EventRenderer.prototype.opt = function (name) {\r\n return this.view.opt(name);\r\n };\r\n // Updates values that rely on options and also relate to range\r\n EventRenderer.prototype.rangeUpdated = function () {\r\n var displayEventTime;\r\n var displayEventEnd;\r\n this.eventTimeFormat =\r\n this.opt('eventTimeFormat') ||\r\n this.opt('timeFormat') || // deprecated\r\n this.computeEventTimeFormat();\r\n displayEventTime = this.opt('displayEventTime');\r\n if (displayEventTime == null) {\r\n displayEventTime = this.computeDisplayEventTime(); // might be based off of range\r\n }\r\n displayEventEnd = this.opt('displayEventEnd');\r\n if (displayEventEnd == null) {\r\n displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range\r\n }\r\n this.displayEventTime = displayEventTime;\r\n this.displayEventEnd = displayEventEnd;\r\n };\r\n EventRenderer.prototype.render = function (eventsPayload) {\r\n var dateProfile = this.component._getDateProfile();\r\n var eventDefId;\r\n var instanceGroup;\r\n var eventRanges;\r\n var bgRanges = [];\r\n var fgRanges = [];\r\n for (eventDefId in eventsPayload) {\r\n instanceGroup = eventsPayload[eventDefId];\r\n eventRanges = instanceGroup.sliceRenderRanges(dateProfile.activeUnzonedRange);\r\n if (instanceGroup.getEventDef().hasBgRendering()) {\r\n bgRanges.push.apply(bgRanges, eventRanges);\r\n }\r\n else {\r\n fgRanges.push.apply(fgRanges, eventRanges);\r\n }\r\n }\r\n this.renderBgRanges(bgRanges);\r\n this.renderFgRanges(fgRanges);\r\n };\r\n EventRenderer.prototype.unrender = function () {\r\n this.unrenderBgRanges();\r\n this.unrenderFgRanges();\r\n };\r\n EventRenderer.prototype.renderFgRanges = function (eventRanges) {\r\n var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges);\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n // render an `.el` on each seg\r\n // returns a subset of the segs. segs that were actually rendered\r\n segs = this.renderFgSegEls(segs);\r\n if (this.renderFgSegs(segs) !== false) { // no failure?\r\n this.fgSegs = segs;\r\n }\r\n };\r\n EventRenderer.prototype.unrenderFgRanges = function () {\r\n this.unrenderFgSegs(this.fgSegs || []);\r\n this.fgSegs = null;\r\n };\r\n EventRenderer.prototype.renderBgRanges = function (eventRanges) {\r\n var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges);\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n if (this.renderBgSegs(segs) !== false) { // no failure?\r\n this.bgSegs = segs;\r\n }\r\n };\r\n EventRenderer.prototype.unrenderBgRanges = function () {\r\n this.unrenderBgSegs();\r\n this.bgSegs = null;\r\n };\r\n EventRenderer.prototype.getSegs = function () {\r\n return (this.bgSegs || []).concat(this.fgSegs || []);\r\n };\r\n // Renders foreground event segments onto the grid\r\n EventRenderer.prototype.renderFgSegs = function (segs) {\r\n // subclasses must implement\r\n // segs already has rendered els, and has been filtered.\r\n return false; // signal failure if not implemented\r\n };\r\n // Unrenders all currently rendered foreground segments\r\n EventRenderer.prototype.unrenderFgSegs = function (segs) {\r\n // subclasses must implement\r\n };\r\n EventRenderer.prototype.renderBgSegs = function (segs) {\r\n var _this = this;\r\n if (this.fillRenderer) {\r\n this.fillRenderer.renderSegs('bgEvent', segs, {\r\n getClasses: function (seg) {\r\n return _this.getBgClasses(seg.footprint.eventDef);\r\n },\r\n getCss: function (seg) {\r\n return {\r\n 'background-color': _this.getBgColor(seg.footprint.eventDef)\r\n };\r\n },\r\n filterEl: function (seg, el) {\r\n return _this.filterEventRenderEl(seg.footprint, el);\r\n }\r\n });\r\n }\r\n else {\r\n return false; // signal failure if no fillRenderer\r\n }\r\n };\r\n EventRenderer.prototype.unrenderBgSegs = function () {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.unrender('bgEvent');\r\n }\r\n };\r\n // Renders and assigns an `el` property for each foreground event segment.\r\n // Only returns segments that successfully rendered.\r\n EventRenderer.prototype.renderFgSegEls = function (segs, disableResizing) {\r\n var _this = this;\r\n if (disableResizing === void 0) { disableResizing = false; }\r\n var hasEventRenderHandlers = this.view.hasPublicHandlers('eventRender');\r\n var html = '';\r\n var renderedSegs = [];\r\n var i;\r\n if (segs.length) { // don't build an empty html string\r\n // build a large concatenation of event segment HTML\r\n for (i = 0; i < segs.length; i++) {\r\n this.beforeFgSegHtml(segs[i]);\r\n html += this.fgSegHtml(segs[i], disableResizing);\r\n }\r\n // Grab individual elements from the combined HTML string. Use each as the default rendering.\r\n // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.\r\n $(html).each(function (i, node) {\r\n var seg = segs[i];\r\n var el = $(node);\r\n if (hasEventRenderHandlers) { // optimization\r\n el = _this.filterEventRenderEl(seg.footprint, el);\r\n }\r\n if (el) {\r\n el.data('fc-seg', seg); // used by handlers\r\n seg.el = el;\r\n renderedSegs.push(seg);\r\n }\r\n });\r\n }\r\n return renderedSegs;\r\n };\r\n EventRenderer.prototype.beforeFgSegHtml = function (seg) {\r\n };\r\n // Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls()\r\n EventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {\r\n // subclasses should implement\r\n };\r\n // Generic utility for generating the HTML classNames for an event segment's element\r\n EventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable) {\r\n var classes = [\r\n 'fc-event',\r\n seg.isStart ? 'fc-start' : 'fc-not-start',\r\n seg.isEnd ? 'fc-end' : 'fc-not-end'\r\n ].concat(this.getClasses(seg.footprint.eventDef));\r\n if (isDraggable) {\r\n classes.push('fc-draggable');\r\n }\r\n if (isResizable) {\r\n classes.push('fc-resizable');\r\n }\r\n // event is currently selected? attach a className.\r\n if (this.view.isEventDefSelected(seg.footprint.eventDef)) {\r\n classes.push('fc-selected');\r\n }\r\n return classes;\r\n };\r\n // Given an event and the default element used for rendering, returns the element that should actually be used.\r\n // Basically runs events and elements through the eventRender hook.\r\n EventRenderer.prototype.filterEventRenderEl = function (eventFootprint, el) {\r\n var legacy = eventFootprint.getEventLegacy();\r\n var custom = this.view.publiclyTrigger('eventRender', {\r\n context: legacy,\r\n args: [legacy, el, this.view]\r\n });\r\n if (custom === false) { // means don't render at all\r\n el = null;\r\n }\r\n else if (custom && custom !== true) {\r\n el = $(custom);\r\n }\r\n return el;\r\n };\r\n // Compute the text that should be displayed on an event's element.\r\n // `range` can be the Event object itself, or something range-like, with at least a `start`.\r\n // If event times are disabled, or the event has no time, will return a blank string.\r\n // If not specified, formatStr will default to the eventTimeFormat setting,\r\n // and displayEnd will default to the displayEventEnd setting.\r\n EventRenderer.prototype.getTimeText = function (eventFootprint, formatStr, displayEnd) {\r\n return this._getTimeText(eventFootprint.eventInstance.dateProfile.start, eventFootprint.eventInstance.dateProfile.end, eventFootprint.componentFootprint.isAllDay, formatStr, displayEnd);\r\n };\r\n EventRenderer.prototype._getTimeText = function (start, end, isAllDay, formatStr, displayEnd) {\r\n if (formatStr == null) {\r\n formatStr = this.eventTimeFormat;\r\n }\r\n if (displayEnd == null) {\r\n displayEnd = this.displayEventEnd;\r\n }\r\n if (this.displayEventTime && !isAllDay) {\r\n if (displayEnd && end) {\r\n return this.view.formatRange({ start: start, end: end }, false, // allDay\r\n formatStr);\r\n }\r\n else {\r\n return start.format(formatStr);\r\n }\r\n }\r\n return '';\r\n };\r\n EventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('smallTimeFormat');\r\n };\r\n EventRenderer.prototype.computeDisplayEventTime = function () {\r\n return true;\r\n };\r\n EventRenderer.prototype.computeDisplayEventEnd = function () {\r\n return true;\r\n };\r\n EventRenderer.prototype.getBgClasses = function (eventDef) {\r\n var classNames = this.getClasses(eventDef);\r\n classNames.push('fc-bgevent');\r\n return classNames;\r\n };\r\n EventRenderer.prototype.getClasses = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var classNames = [];\r\n for (i = 0; i < objs.length; i++) {\r\n classNames.push.apply(// append\r\n classNames, objs[i].eventClassName || objs[i].className || []);\r\n }\r\n return classNames;\r\n };\r\n // Utility for generating event skin-related CSS properties\r\n EventRenderer.prototype.getSkinCss = function (eventDef) {\r\n return {\r\n 'background-color': this.getBgColor(eventDef),\r\n 'border-color': this.getBorderColor(eventDef),\r\n color: this.getTextColor(eventDef)\r\n };\r\n };\r\n // Queries for caller-specified color, then falls back to default\r\n EventRenderer.prototype.getBgColor = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var val;\r\n for (i = 0; i < objs.length && !val; i++) {\r\n val = objs[i].eventBackgroundColor || objs[i].eventColor ||\r\n objs[i].backgroundColor || objs[i].color;\r\n }\r\n if (!val) {\r\n val = this.opt('eventBackgroundColor') || this.opt('eventColor');\r\n }\r\n return val;\r\n };\r\n // Queries for caller-specified color, then falls back to default\r\n EventRenderer.prototype.getBorderColor = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var val;\r\n for (i = 0; i < objs.length && !val; i++) {\r\n val = objs[i].eventBorderColor || objs[i].eventColor ||\r\n objs[i].borderColor || objs[i].color;\r\n }\r\n if (!val) {\r\n val = this.opt('eventBorderColor') || this.opt('eventColor');\r\n }\r\n return val;\r\n };\r\n // Queries for caller-specified color, then falls back to default\r\n EventRenderer.prototype.getTextColor = function (eventDef) {\r\n var objs = this.getStylingObjs(eventDef);\r\n var i;\r\n var val;\r\n for (i = 0; i < objs.length && !val; i++) {\r\n val = objs[i].eventTextColor ||\r\n objs[i].textColor;\r\n }\r\n if (!val) {\r\n val = this.opt('eventTextColor');\r\n }\r\n return val;\r\n };\r\n EventRenderer.prototype.getStylingObjs = function (eventDef) {\r\n var objs = this.getFallbackStylingObjs(eventDef);\r\n objs.unshift(eventDef);\r\n return objs;\r\n };\r\n EventRenderer.prototype.getFallbackStylingObjs = function (eventDef) {\r\n return [eventDef.source];\r\n };\r\n EventRenderer.prototype.sortEventSegs = function (segs) {\r\n segs.sort(util_1.proxy(this, 'compareEventSegs'));\r\n };\r\n // A cmp function for determining which segments should take visual priority\r\n EventRenderer.prototype.compareEventSegs = function (seg1, seg2) {\r\n var f1 = seg1.footprint;\r\n var f2 = seg2.footprint;\r\n var cf1 = f1.componentFootprint;\r\n var cf2 = f2.componentFootprint;\r\n var r1 = cf1.unzonedRange;\r\n var r2 = cf2.unzonedRange;\r\n return r1.startMs - r2.startMs || // earlier events go first\r\n (r2.endMs - r2.startMs) - (r1.endMs - r1.startMs) || // tie? longer events go first\r\n cf2.isAllDay - cf1.isAllDay || // tie? put all-day events first (booleans cast to 0/1)\r\n util_1.compareByFieldSpecs(f1.eventDef, f2.eventDef, this.view.eventOrderSpecs, f1.eventDef.miscProps, f2.eventDef.miscProps);\r\n };\r\n return EventRenderer;\r\n}());\r\nexports.default = EventRenderer;\r\n\n\n/***/ }),\n/* 45 */,\n/* 46 */,\n/* 47 */,\n/* 48 */,\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment_ext_1 = __webpack_require__(11);\r\n// Plugin\r\n// -------------------------------------------------------------------------------------------------\r\nmoment_ext_1.newMomentProto.format = function () {\r\n if (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided?\r\n return formatDate(this, arguments[0]); // our extended formatting\r\n }\r\n if (this._ambigTime) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD');\r\n }\r\n if (this._ambigZone) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss');\r\n }\r\n if (this._fullCalendar) { // enhanced non-ambig moment?\r\n // moment.format() doesn't ensure english, but we want to.\r\n return moment_ext_1.oldMomentFormat(englishMoment(this));\r\n }\r\n return moment_ext_1.oldMomentProto.format.apply(this, arguments);\r\n};\r\nmoment_ext_1.newMomentProto.toISOString = function () {\r\n if (this._ambigTime) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD');\r\n }\r\n if (this._ambigZone) {\r\n return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss');\r\n }\r\n if (this._fullCalendar) { // enhanced non-ambig moment?\r\n // depending on browser, moment might not output english. ensure english.\r\n // https://github.com/moment/moment/blob/2.18.1/src/lib/moment/format.js#L22\r\n return moment_ext_1.oldMomentProto.toISOString.apply(englishMoment(this), arguments);\r\n }\r\n return moment_ext_1.oldMomentProto.toISOString.apply(this, arguments);\r\n};\r\nfunction englishMoment(mom) {\r\n if (mom.locale() !== 'en') {\r\n return mom.clone().locale('en');\r\n }\r\n return mom;\r\n}\r\n// Config\r\n// ---------------------------------------------------------------------------------------------------------------------\r\n/*\r\nInserted between chunks in the fake (\"intermediate\") formatting string.\r\nImportant that it passes as whitespace (\\s) because moment often identifies non-standalone months\r\nvia a regexp with an \\s.\r\n*/\r\nvar PART_SEPARATOR = '\\u000b'; // vertical tab\r\n/*\r\nInserted as the first character of a literal-text chunk to indicate that the literal text is not actually literal text,\r\nbut rather, a \"special\" token that has custom rendering (see specialTokens map).\r\n*/\r\nvar SPECIAL_TOKEN_MARKER = '\\u001f'; // information separator 1\r\n/*\r\nInserted at the beginning and end of a span of text that must have non-zero numeric characters.\r\nHandling of these markers is done in a post-processing step at the very end of text rendering.\r\n*/\r\nvar MAYBE_MARKER = '\\u001e'; // information separator 2\r\nvar MAYBE_REGEXP = new RegExp(MAYBE_MARKER + '([^' + MAYBE_MARKER + ']*)' + MAYBE_MARKER, 'g'); // must be global\r\n/*\r\nAddition formatting tokens we want recognized\r\n*/\r\nvar specialTokens = {\r\n t: function (date) {\r\n return moment_ext_1.oldMomentFormat(date, 'a').charAt(0);\r\n },\r\n T: function (date) {\r\n return moment_ext_1.oldMomentFormat(date, 'A').charAt(0);\r\n }\r\n};\r\n/*\r\nThe first characters of formatting tokens for units that are 1 day or larger.\r\n`value` is for ranking relative size (lower means bigger).\r\n`unit` is a normalized unit, used for comparing moments.\r\n*/\r\nvar largeTokenMap = {\r\n Y: { value: 1, unit: 'year' },\r\n M: { value: 2, unit: 'month' },\r\n W: { value: 3, unit: 'week' },\r\n w: { value: 3, unit: 'week' },\r\n D: { value: 4, unit: 'day' },\r\n d: { value: 4, unit: 'day' } // day of week\r\n};\r\n// Single Date Formatting\r\n// ---------------------------------------------------------------------------------------------------------------------\r\n/*\r\nFormats `date` with a Moment formatting string, but allow our non-zero areas and special token\r\n*/\r\nfunction formatDate(date, formatStr) {\r\n return renderFakeFormatString(getParsedFormatString(formatStr).fakeFormatString, date);\r\n}\r\nexports.formatDate = formatDate;\r\n// Date Range Formatting\r\n// -------------------------------------------------------------------------------------------------\r\n// TODO: make it work with timezone offset\r\n/*\r\nUsing a formatting string meant for a single date, generate a range string, like\r\n\"Sep 2 - 9 2013\", that intelligently inserts a separator where the dates differ.\r\nIf the dates are the same as far as the format string is concerned, just return a single\r\nrendering of one date, without any separator.\r\n*/\r\nfunction formatRange(date1, date2, formatStr, separator, isRTL) {\r\n var localeData;\r\n date1 = moment_ext_1.default.parseZone(date1);\r\n date2 = moment_ext_1.default.parseZone(date2);\r\n localeData = date1.localeData();\r\n // Expand localized format strings, like \"LL\" -> \"MMMM D YYYY\".\r\n // BTW, this is not important for `formatDate` because it is impossible to put custom tokens\r\n // or non-zero areas in Moment's localized format strings.\r\n formatStr = localeData.longDateFormat(formatStr) || formatStr;\r\n return renderParsedFormat(getParsedFormatString(formatStr), date1, date2, separator || ' - ', isRTL);\r\n}\r\nexports.formatRange = formatRange;\r\n/*\r\nRenders a range with an already-parsed format string.\r\n*/\r\nfunction renderParsedFormat(parsedFormat, date1, date2, separator, isRTL) {\r\n var sameUnits = parsedFormat.sameUnits;\r\n var unzonedDate1 = date1.clone().stripZone(); // for same-unit comparisons\r\n var unzonedDate2 = date2.clone().stripZone(); // \"\r\n var renderedParts1 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date1);\r\n var renderedParts2 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date2);\r\n var leftI;\r\n var leftStr = '';\r\n var rightI;\r\n var rightStr = '';\r\n var middleI;\r\n var middleStr1 = '';\r\n var middleStr2 = '';\r\n var middleStr = '';\r\n // Start at the leftmost side of the formatting string and continue until you hit a token\r\n // that is not the same between dates.\r\n for (leftI = 0; leftI < sameUnits.length && (!sameUnits[leftI] || unzonedDate1.isSame(unzonedDate2, sameUnits[leftI])); leftI++) {\r\n leftStr += renderedParts1[leftI];\r\n }\r\n // Similarly, start at the rightmost side of the formatting string and move left\r\n for (rightI = sameUnits.length - 1; rightI > leftI && (!sameUnits[rightI] || unzonedDate1.isSame(unzonedDate2, sameUnits[rightI])); rightI--) {\r\n // If current chunk is on the boundary of unique date-content, and is a special-case\r\n // date-formatting postfix character, then don't consume it. Consider it unique date-content.\r\n // TODO: make configurable\r\n if (rightI - 1 === leftI && renderedParts1[rightI] === '.') {\r\n break;\r\n }\r\n rightStr = renderedParts1[rightI] + rightStr;\r\n }\r\n // The area in the middle is different for both of the dates.\r\n // Collect them distinctly so we can jam them together later.\r\n for (middleI = leftI; middleI <= rightI; middleI++) {\r\n middleStr1 += renderedParts1[middleI];\r\n middleStr2 += renderedParts2[middleI];\r\n }\r\n if (middleStr1 || middleStr2) {\r\n if (isRTL) {\r\n middleStr = middleStr2 + separator + middleStr1;\r\n }\r\n else {\r\n middleStr = middleStr1 + separator + middleStr2;\r\n }\r\n }\r\n return processMaybeMarkers(leftStr + middleStr + rightStr);\r\n}\r\n// Format String Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nvar parsedFormatStrCache = {};\r\n/*\r\nReturns a parsed format string, leveraging a cache.\r\n*/\r\nfunction getParsedFormatString(formatStr) {\r\n return parsedFormatStrCache[formatStr] ||\r\n (parsedFormatStrCache[formatStr] = parseFormatString(formatStr));\r\n}\r\n/*\r\nParses a format string into the following:\r\n- fakeFormatString: a momentJS formatting string, littered with special control characters that get post-processed.\r\n- sameUnits: for every part in fakeFormatString, if the part is a token, the value will be a unit string (like \"day\"),\r\n that indicates how similar a range's start & end must be in order to share the same formatted text.\r\n If not a token, then the value is null.\r\n Always a flat array (not nested liked \"chunks\").\r\n*/\r\nfunction parseFormatString(formatStr) {\r\n var chunks = chunkFormatString(formatStr);\r\n return {\r\n fakeFormatString: buildFakeFormatString(chunks),\r\n sameUnits: buildSameUnits(chunks)\r\n };\r\n}\r\n/*\r\nBreak the formatting string into an array of chunks.\r\nA 'maybe' chunk will have nested chunks.\r\n*/\r\nfunction chunkFormatString(formatStr) {\r\n var chunks = [];\r\n var match;\r\n // TODO: more descrimination\r\n // \\4 is a backreference to the first character of a multi-character set.\r\n var chunker = /\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g;\r\n while ((match = chunker.exec(formatStr))) {\r\n if (match[1]) { // a literal string inside [ ... ]\r\n chunks.push.apply(chunks, // append\r\n splitStringLiteral(match[1]));\r\n }\r\n else if (match[2]) { // non-zero formatting inside ( ... )\r\n chunks.push({ maybe: chunkFormatString(match[2]) });\r\n }\r\n else if (match[3]) { // a formatting token\r\n chunks.push({ token: match[3] });\r\n }\r\n else if (match[5]) { // an unenclosed literal string\r\n chunks.push.apply(chunks, // append\r\n splitStringLiteral(match[5]));\r\n }\r\n }\r\n return chunks;\r\n}\r\n/*\r\nPotentially splits a literal-text string into multiple parts. For special cases.\r\n*/\r\nfunction splitStringLiteral(s) {\r\n if (s === '. ') {\r\n return ['.', ' ']; // for locales with periods bound to the end of each year/month/date\r\n }\r\n else {\r\n return [s];\r\n }\r\n}\r\n/*\r\nGiven chunks parsed from a real format string, generate a fake (aka \"intermediate\") format string with special control\r\ncharacters that will eventually be given to moment for formatting, and then post-processed.\r\n*/\r\nfunction buildFakeFormatString(chunks) {\r\n var parts = [];\r\n var i;\r\n var chunk;\r\n for (i = 0; i < chunks.length; i++) {\r\n chunk = chunks[i];\r\n if (typeof chunk === 'string') {\r\n parts.push('[' + chunk + ']');\r\n }\r\n else if (chunk.token) {\r\n if (chunk.token in specialTokens) {\r\n parts.push(SPECIAL_TOKEN_MARKER + // useful during post-processing\r\n '[' + chunk.token + ']' // preserve as literal text\r\n );\r\n }\r\n else {\r\n parts.push(chunk.token); // unprotected text implies a format string\r\n }\r\n }\r\n else if (chunk.maybe) {\r\n parts.push(MAYBE_MARKER + // useful during post-processing\r\n buildFakeFormatString(chunk.maybe) +\r\n MAYBE_MARKER);\r\n }\r\n }\r\n return parts.join(PART_SEPARATOR);\r\n}\r\n/*\r\nGiven parsed chunks from a real formatting string, generates an array of unit strings (like \"day\") that indicate\r\nin which regard two dates must be similar in order to share range formatting text.\r\nThe `chunks` can be nested (because of \"maybe\" chunks), however, the returned array will be flat.\r\n*/\r\nfunction buildSameUnits(chunks) {\r\n var units = [];\r\n var i;\r\n var chunk;\r\n var tokenInfo;\r\n for (i = 0; i < chunks.length; i++) {\r\n chunk = chunks[i];\r\n if (chunk.token) {\r\n tokenInfo = largeTokenMap[chunk.token.charAt(0)];\r\n units.push(tokenInfo ? tokenInfo.unit : 'second'); // default to a very strict same-second\r\n }\r\n else if (chunk.maybe) {\r\n units.push.apply(units, // append\r\n buildSameUnits(chunk.maybe));\r\n }\r\n else {\r\n units.push(null);\r\n }\r\n }\r\n return units;\r\n}\r\n// Rendering to text\r\n// ---------------------------------------------------------------------------------------------------------------------\r\n/*\r\nFormats a date with a fake format string, post-processes the control characters, then returns.\r\n*/\r\nfunction renderFakeFormatString(fakeFormatString, date) {\r\n return processMaybeMarkers(renderFakeFormatStringParts(fakeFormatString, date).join(''));\r\n}\r\n/*\r\nFormats a date into parts that will have been post-processed, EXCEPT for the \"maybe\" markers.\r\n*/\r\nfunction renderFakeFormatStringParts(fakeFormatString, date) {\r\n var parts = [];\r\n var fakeRender = moment_ext_1.oldMomentFormat(date, fakeFormatString);\r\n var fakeParts = fakeRender.split(PART_SEPARATOR);\r\n var i;\r\n var fakePart;\r\n for (i = 0; i < fakeParts.length; i++) {\r\n fakePart = fakeParts[i];\r\n if (fakePart.charAt(0) === SPECIAL_TOKEN_MARKER) {\r\n parts.push(\r\n // the literal string IS the token's name.\r\n // call special token's registered function.\r\n specialTokens[fakePart.substring(1)](date));\r\n }\r\n else {\r\n parts.push(fakePart);\r\n }\r\n }\r\n return parts;\r\n}\r\n/*\r\nAccepts an almost-finally-formatted string and processes the \"maybe\" control characters, returning a new string.\r\n*/\r\nfunction processMaybeMarkers(s) {\r\n return s.replace(MAYBE_REGEXP, function (m0, m1) {\r\n if (m1.match(/[1-9]/)) { // any non-zero numeric characters?\r\n return m1;\r\n }\r\n else {\r\n return '';\r\n }\r\n });\r\n}\r\n// Misc Utils\r\n// -------------------------------------------------------------------------------------------------\r\n/*\r\nReturns a unit string, either 'year', 'month', 'day', or null for the most granular formatting token in the string.\r\n*/\r\nfunction queryMostGranularFormatUnit(formatStr) {\r\n var chunks = chunkFormatString(formatStr);\r\n var i;\r\n var chunk;\r\n var candidate;\r\n var best;\r\n for (i = 0; i < chunks.length; i++) {\r\n chunk = chunks[i];\r\n if (chunk.token) {\r\n candidate = largeTokenMap[chunk.token.charAt(0)];\r\n if (candidate) {\r\n if (!best || candidate.value > best.value) {\r\n best = candidate;\r\n }\r\n }\r\n }\r\n }\r\n if (best) {\r\n return best.unit;\r\n }\r\n return null;\r\n}\r\nexports.queryMostGranularFormatUnit = queryMostGranularFormatUnit;\r\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventRange = /** @class */ (function () {\r\n function EventRange(unzonedRange, eventDef, eventInstance) {\r\n this.unzonedRange = unzonedRange;\r\n this.eventDef = eventDef;\r\n if (eventInstance) {\r\n this.eventInstance = eventInstance;\r\n }\r\n }\r\n return EventRange;\r\n}());\r\nexports.default = EventRange;\r\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Class_1 = __webpack_require__(35);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar Model = /** @class */ (function (_super) {\r\n tslib_1.__extends(Model, _super);\r\n function Model() {\r\n var _this = _super.call(this) || this;\r\n _this._watchers = {};\r\n _this._props = {};\r\n _this.applyGlobalWatchers();\r\n _this.constructed();\r\n return _this;\r\n }\r\n Model.watch = function (name) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n // subclasses should make a masked-copy of the superclass's map\r\n // TODO: write test\r\n if (!this.prototype.hasOwnProperty('_globalWatchArgs')) {\r\n this.prototype._globalWatchArgs = Object.create(this.prototype._globalWatchArgs);\r\n }\r\n this.prototype._globalWatchArgs[name] = args;\r\n };\r\n Model.prototype.constructed = function () {\r\n // useful for monkeypatching. TODO: BaseClass?\r\n };\r\n Model.prototype.applyGlobalWatchers = function () {\r\n var map = this._globalWatchArgs;\r\n var name;\r\n for (name in map) {\r\n this.watch.apply(this, [name].concat(map[name]));\r\n }\r\n };\r\n Model.prototype.has = function (name) {\r\n return name in this._props;\r\n };\r\n Model.prototype.get = function (name) {\r\n if (name === undefined) {\r\n return this._props;\r\n }\r\n return this._props[name];\r\n };\r\n Model.prototype.set = function (name, val) {\r\n var newProps;\r\n if (typeof name === 'string') {\r\n newProps = {};\r\n newProps[name] = val === undefined ? null : val;\r\n }\r\n else {\r\n newProps = name;\r\n }\r\n this.setProps(newProps);\r\n };\r\n Model.prototype.reset = function (newProps) {\r\n var oldProps = this._props;\r\n var changeset = {}; // will have undefined's to signal unsets\r\n var name;\r\n for (name in oldProps) {\r\n changeset[name] = undefined;\r\n }\r\n for (name in newProps) {\r\n changeset[name] = newProps[name];\r\n }\r\n this.setProps(changeset);\r\n };\r\n Model.prototype.unset = function (name) {\r\n var newProps = {};\r\n var names;\r\n var i;\r\n if (typeof name === 'string') {\r\n names = [name];\r\n }\r\n else {\r\n names = name;\r\n }\r\n for (i = 0; i < names.length; i++) {\r\n newProps[names[i]] = undefined;\r\n }\r\n this.setProps(newProps);\r\n };\r\n Model.prototype.setProps = function (newProps) {\r\n var changedProps = {};\r\n var changedCnt = 0;\r\n var name;\r\n var val;\r\n for (name in newProps) {\r\n val = newProps[name];\r\n // a change in value?\r\n // if an object, don't check equality, because might have been mutated internally.\r\n // TODO: eventually enforce immutability.\r\n if (typeof val === 'object' ||\r\n val !== this._props[name]) {\r\n changedProps[name] = val;\r\n changedCnt++;\r\n }\r\n }\r\n if (changedCnt) {\r\n this.trigger('before:batchChange', changedProps);\r\n for (name in changedProps) {\r\n val = changedProps[name];\r\n this.trigger('before:change', name, val);\r\n this.trigger('before:change:' + name, val);\r\n }\r\n for (name in changedProps) {\r\n val = changedProps[name];\r\n if (val === undefined) {\r\n delete this._props[name];\r\n }\r\n else {\r\n this._props[name] = val;\r\n }\r\n this.trigger('change:' + name, val);\r\n this.trigger('change', name, val);\r\n }\r\n this.trigger('batchChange', changedProps);\r\n }\r\n };\r\n Model.prototype.watch = function (name, depList, startFunc, stopFunc) {\r\n var _this = this;\r\n this.unwatch(name);\r\n this._watchers[name] = this._watchDeps(depList, function (deps) {\r\n var res = startFunc.call(_this, deps);\r\n if (res && res.then) {\r\n _this.unset(name); // put in an unset state while resolving\r\n res.then(function (val) {\r\n _this.set(name, val);\r\n });\r\n }\r\n else {\r\n _this.set(name, res);\r\n }\r\n }, function (deps) {\r\n _this.unset(name);\r\n if (stopFunc) {\r\n stopFunc.call(_this, deps);\r\n }\r\n });\r\n };\r\n Model.prototype.unwatch = function (name) {\r\n var watcher = this._watchers[name];\r\n if (watcher) {\r\n delete this._watchers[name];\r\n watcher.teardown();\r\n }\r\n };\r\n Model.prototype._watchDeps = function (depList, startFunc, stopFunc) {\r\n var _this = this;\r\n var queuedChangeCnt = 0;\r\n var depCnt = depList.length;\r\n var satisfyCnt = 0;\r\n var values = {}; // what's passed as the `deps` arguments\r\n var bindTuples = []; // array of [ eventName, handlerFunc ] arrays\r\n var isCallingStop = false;\r\n var onBeforeDepChange = function (depName, val, isOptional) {\r\n queuedChangeCnt++;\r\n if (queuedChangeCnt === 1) { // first change to cause a \"stop\" ?\r\n if (satisfyCnt === depCnt) { // all deps previously satisfied?\r\n isCallingStop = true;\r\n stopFunc(values);\r\n isCallingStop = false;\r\n }\r\n }\r\n };\r\n var onDepChange = function (depName, val, isOptional) {\r\n if (val === undefined) { // unsetting a value?\r\n // required dependency that was previously set?\r\n if (!isOptional && values[depName] !== undefined) {\r\n satisfyCnt--;\r\n }\r\n delete values[depName];\r\n }\r\n else { // setting a value?\r\n // required dependency that was previously unset?\r\n if (!isOptional && values[depName] === undefined) {\r\n satisfyCnt++;\r\n }\r\n values[depName] = val;\r\n }\r\n queuedChangeCnt--;\r\n if (!queuedChangeCnt) { // last change to cause a \"start\"?\r\n // now finally satisfied or satisfied all along?\r\n if (satisfyCnt === depCnt) {\r\n // if the stopFunc initiated another value change, ignore it.\r\n // it will be processed by another change event anyway.\r\n if (!isCallingStop) {\r\n startFunc(values);\r\n }\r\n }\r\n }\r\n };\r\n // intercept for .on() that remembers handlers\r\n var bind = function (eventName, handler) {\r\n _this.on(eventName, handler);\r\n bindTuples.push([eventName, handler]);\r\n };\r\n // listen to dependency changes\r\n depList.forEach(function (depName) {\r\n var isOptional = false;\r\n if (depName.charAt(0) === '?') { // TODO: more DRY\r\n depName = depName.substring(1);\r\n isOptional = true;\r\n }\r\n bind('before:change:' + depName, function (val) {\r\n onBeforeDepChange(depName, val, isOptional);\r\n });\r\n bind('change:' + depName, function (val) {\r\n onDepChange(depName, val, isOptional);\r\n });\r\n });\r\n // process current dependency values\r\n depList.forEach(function (depName) {\r\n var isOptional = false;\r\n if (depName.charAt(0) === '?') { // TODO: more DRY\r\n depName = depName.substring(1);\r\n isOptional = true;\r\n }\r\n if (_this.has(depName)) {\r\n values[depName] = _this.get(depName);\r\n satisfyCnt++;\r\n }\r\n else if (isOptional) {\r\n satisfyCnt++;\r\n }\r\n });\r\n // initially satisfied\r\n if (satisfyCnt === depCnt) {\r\n startFunc(values);\r\n }\r\n return {\r\n teardown: function () {\r\n // remove all handlers\r\n for (var i = 0; i < bindTuples.length; i++) {\r\n _this.off(bindTuples[i][0], bindTuples[i][1]);\r\n }\r\n bindTuples = null;\r\n // was satisfied, so call stopFunc\r\n if (satisfyCnt === depCnt) {\r\n stopFunc();\r\n }\r\n },\r\n flash: function () {\r\n if (satisfyCnt === depCnt) {\r\n stopFunc();\r\n startFunc(values);\r\n }\r\n }\r\n };\r\n };\r\n Model.prototype.flash = function (name) {\r\n var watcher = this._watchers[name];\r\n if (watcher) {\r\n watcher.flash();\r\n }\r\n };\r\n return Model;\r\n}(Class_1.default));\r\nexports.default = Model;\r\nModel.prototype._globalWatchArgs = {}; // mutation protection in Model.watch\r\nEmitterMixin_1.default.mixInto(Model);\r\nListenerMixin_1.default.mixInto(Model);\r\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\r\nUSAGE:\r\n import { default as ParsableModelMixin, ParsableModelInterface } from './ParsableModelMixin'\r\nin class:\r\n applyProps: ParsableModelInterface['applyProps']\r\n applyManualStandardProps: ParsableModelInterface['applyManualStandardProps']\r\n applyMiscProps: ParsableModelInterface['applyMiscProps']\r\n isStandardProp: ParsableModelInterface['isStandardProp']\r\n static defineStandardProps = ParsableModelMixin.defineStandardProps\r\n static copyVerbatimStandardProps = ParsableModelMixin.copyVerbatimStandardProps\r\nafter class:\r\n ParsableModelMixin.mixInto(TheClass)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar ParsableModelMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(ParsableModelMixin, _super);\r\n function ParsableModelMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ParsableModelMixin.defineStandardProps = function (propDefs) {\r\n var proto = this.prototype;\r\n if (!proto.hasOwnProperty('standardPropMap')) {\r\n proto.standardPropMap = Object.create(proto.standardPropMap);\r\n }\r\n util_1.copyOwnProps(propDefs, proto.standardPropMap);\r\n };\r\n ParsableModelMixin.copyVerbatimStandardProps = function (src, dest) {\r\n var map = this.prototype.standardPropMap;\r\n var propName;\r\n for (propName in map) {\r\n if (src[propName] != null && // in the src object?\r\n map[propName] === true // false means \"copy verbatim\"\r\n ) {\r\n dest[propName] = src[propName];\r\n }\r\n }\r\n };\r\n /*\r\n Returns true/false for success.\r\n Meant to be only called ONCE, at object creation.\r\n */\r\n ParsableModelMixin.prototype.applyProps = function (rawProps) {\r\n var standardPropMap = this.standardPropMap;\r\n var manualProps = {};\r\n var miscProps = {};\r\n var propName;\r\n for (propName in rawProps) {\r\n if (standardPropMap[propName] === true) { // copy verbatim\r\n this[propName] = rawProps[propName];\r\n }\r\n else if (standardPropMap[propName] === false) {\r\n manualProps[propName] = rawProps[propName];\r\n }\r\n else {\r\n miscProps[propName] = rawProps[propName];\r\n }\r\n }\r\n this.applyMiscProps(miscProps);\r\n return this.applyManualStandardProps(manualProps);\r\n };\r\n /*\r\n If subclasses override, they must call this supermethod and return the boolean response.\r\n Meant to be only called ONCE, at object creation.\r\n */\r\n ParsableModelMixin.prototype.applyManualStandardProps = function (rawProps) {\r\n return true;\r\n };\r\n /*\r\n Can be called even after initial object creation.\r\n */\r\n ParsableModelMixin.prototype.applyMiscProps = function (rawProps) {\r\n // subclasses can implement\r\n };\r\n /*\r\n TODO: why is this a method when defineStandardProps is static\r\n */\r\n ParsableModelMixin.prototype.isStandardProp = function (propName) {\r\n return propName in this.standardPropMap;\r\n };\r\n return ParsableModelMixin;\r\n}(Mixin_1.default));\r\nexports.default = ParsableModelMixin;\r\nParsableModelMixin.prototype.standardPropMap = {}; // will be cloned by defineStandardProps\r\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventInstance = /** @class */ (function () {\r\n function EventInstance(def, dateProfile) {\r\n this.def = def;\r\n this.dateProfile = dateProfile;\r\n }\r\n EventInstance.prototype.toLegacy = function () {\r\n var dateProfile = this.dateProfile;\r\n var obj = this.def.toLegacy();\r\n obj.start = dateProfile.start.clone();\r\n obj.end = dateProfile.end ? dateProfile.end.clone() : null;\r\n return obj;\r\n };\r\n return EventInstance;\r\n}());\r\nexports.default = EventInstance;\r\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar EventDef_1 = __webpack_require__(37);\r\nvar EventInstance_1 = __webpack_require__(53);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar RecurringEventDef = /** @class */ (function (_super) {\r\n tslib_1.__extends(RecurringEventDef, _super);\r\n function RecurringEventDef() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n RecurringEventDef.prototype.isAllDay = function () {\r\n return !this.startTime && !this.endTime;\r\n };\r\n RecurringEventDef.prototype.buildInstances = function (unzonedRange) {\r\n var calendar = this.source.calendar;\r\n var unzonedDate = unzonedRange.getStart();\r\n var unzonedEnd = unzonedRange.getEnd();\r\n var zonedDayStart;\r\n var instanceStart;\r\n var instanceEnd;\r\n var instances = [];\r\n while (unzonedDate.isBefore(unzonedEnd)) {\r\n // if everyday, or this particular day-of-week\r\n if (!this.dowHash || this.dowHash[unzonedDate.day()]) {\r\n zonedDayStart = calendar.applyTimezone(unzonedDate);\r\n instanceStart = zonedDayStart.clone();\r\n instanceEnd = null;\r\n if (this.startTime) {\r\n instanceStart.time(this.startTime);\r\n }\r\n else {\r\n instanceStart.stripTime();\r\n }\r\n if (this.endTime) {\r\n instanceEnd = zonedDayStart.clone().time(this.endTime);\r\n }\r\n instances.push(new EventInstance_1.default(this, // definition\r\n new EventDateProfile_1.default(instanceStart, instanceEnd, calendar)));\r\n }\r\n unzonedDate.add(1, 'days');\r\n }\r\n return instances;\r\n };\r\n RecurringEventDef.prototype.setDow = function (dowNumbers) {\r\n if (!this.dowHash) {\r\n this.dowHash = {};\r\n }\r\n for (var i = 0; i < dowNumbers.length; i++) {\r\n this.dowHash[dowNumbers[i]] = true;\r\n }\r\n };\r\n RecurringEventDef.prototype.clone = function () {\r\n var def = _super.prototype.clone.call(this);\r\n if (def.startTime) {\r\n def.startTime = moment.duration(this.startTime);\r\n }\r\n if (def.endTime) {\r\n def.endTime = moment.duration(this.endTime);\r\n }\r\n if (this.dowHash) {\r\n def.dowHash = $.extend({}, this.dowHash);\r\n }\r\n return def;\r\n };\r\n return RecurringEventDef;\r\n}(EventDef_1.default));\r\nexports.default = RecurringEventDef;\r\n/*\r\nHACK to work with TypeScript mixins\r\nNOTE: if super-method fails, should still attempt to apply\r\n*/\r\nRecurringEventDef.prototype.applyProps = function (rawProps) {\r\n var superSuccess = EventDef_1.default.prototype.applyProps.call(this, rawProps);\r\n if (rawProps.start) {\r\n this.startTime = moment.duration(rawProps.start);\r\n }\r\n if (rawProps.end) {\r\n this.endTime = moment.duration(rawProps.end);\r\n }\r\n if (rawProps.dow) {\r\n this.setDow(rawProps.dow);\r\n }\r\n return superSuccess;\r\n};\r\n// Parsing\r\n// ---------------------------------------------------------------------------------------------------------------------\r\nRecurringEventDef.defineStandardProps({\r\n start: false,\r\n end: false,\r\n dow: false\r\n});\r\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar DateProfileGenerator = /** @class */ (function () {\r\n function DateProfileGenerator(_view) {\r\n this._view = _view;\r\n }\r\n DateProfileGenerator.prototype.opt = function (name) {\r\n return this._view.opt(name);\r\n };\r\n DateProfileGenerator.prototype.trimHiddenDays = function (unzonedRange) {\r\n return this._view.trimHiddenDays(unzonedRange);\r\n };\r\n DateProfileGenerator.prototype.msToUtcMoment = function (ms, forceAllDay) {\r\n return this._view.calendar.msToUtcMoment(ms, forceAllDay);\r\n };\r\n /* Date Range Computation\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\r\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile) {\r\n var prevDate = currentDateProfile.date.clone()\r\n .startOf(currentDateProfile.currentRangeUnit)\r\n .subtract(currentDateProfile.dateIncrement);\r\n return this.build(prevDate, -1);\r\n };\r\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\r\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile) {\r\n var nextDate = currentDateProfile.date.clone()\r\n .startOf(currentDateProfile.currentRangeUnit)\r\n .add(currentDateProfile.dateIncrement);\r\n return this.build(nextDate, 1);\r\n };\r\n // Builds a structure holding dates/ranges for rendering around the given date.\r\n // Optional direction param indicates whether the date is being incremented/decremented\r\n // from its previous value. decremented = -1, incremented = 1 (default).\r\n DateProfileGenerator.prototype.build = function (date, direction, forceToValid) {\r\n if (forceToValid === void 0) { forceToValid = false; }\r\n var isDateAllDay = !date.hasTime();\r\n var validUnzonedRange;\r\n var minTime = null;\r\n var maxTime = null;\r\n var currentInfo;\r\n var isRangeAllDay;\r\n var renderUnzonedRange;\r\n var activeUnzonedRange;\r\n var isValid;\r\n validUnzonedRange = this.buildValidRange();\r\n validUnzonedRange = this.trimHiddenDays(validUnzonedRange);\r\n if (forceToValid) {\r\n date = this.msToUtcMoment(validUnzonedRange.constrainDate(date), // returns MS\r\n isDateAllDay);\r\n }\r\n currentInfo = this.buildCurrentRangeInfo(date, direction);\r\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\r\n renderUnzonedRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.unzonedRange), currentInfo.unit, isRangeAllDay);\r\n renderUnzonedRange = this.trimHiddenDays(renderUnzonedRange);\r\n activeUnzonedRange = renderUnzonedRange.clone();\r\n if (!this.opt('showNonCurrentDates')) {\r\n activeUnzonedRange = activeUnzonedRange.intersect(currentInfo.unzonedRange);\r\n }\r\n minTime = moment.duration(this.opt('minTime'));\r\n maxTime = moment.duration(this.opt('maxTime'));\r\n activeUnzonedRange = this.adjustActiveRange(activeUnzonedRange, minTime, maxTime);\r\n activeUnzonedRange = activeUnzonedRange.intersect(validUnzonedRange); // might return null\r\n if (activeUnzonedRange) {\r\n date = this.msToUtcMoment(activeUnzonedRange.constrainDate(date), // returns MS\r\n isDateAllDay);\r\n }\r\n // it's invalid if the originally requested date is not contained,\r\n // or if the range is completely outside of the valid range.\r\n isValid = currentInfo.unzonedRange.intersectsWith(validUnzonedRange);\r\n return {\r\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\r\n // an object with optional start and end properties.\r\n validUnzonedRange: validUnzonedRange,\r\n // range the view is formally responsible for.\r\n // for example, a month view might have 1st-31st, excluding padded dates\r\n currentUnzonedRange: currentInfo.unzonedRange,\r\n // name of largest unit being displayed, like \"month\" or \"week\"\r\n currentRangeUnit: currentInfo.unit,\r\n isRangeAllDay: isRangeAllDay,\r\n // dates that display events and accept drag-n-drop\r\n // will be `null` if no dates accept events\r\n activeUnzonedRange: activeUnzonedRange,\r\n // date range with a rendered skeleton\r\n // includes not-active days that need some sort of DOM\r\n renderUnzonedRange: renderUnzonedRange,\r\n // Duration object that denotes the first visible time of any given day\r\n minTime: minTime,\r\n // Duration object that denotes the exclusive visible end time of any given day\r\n maxTime: maxTime,\r\n isValid: isValid,\r\n date: date,\r\n // how far the current date will move for a prev/next operation\r\n dateIncrement: this.buildDateIncrement(currentInfo.duration)\r\n // pass a fallback (might be null) ^\r\n };\r\n };\r\n // Builds an object with optional start/end properties.\r\n // Indicates the minimum/maximum dates to display.\r\n // not responsible for trimming hidden days.\r\n DateProfileGenerator.prototype.buildValidRange = function () {\r\n return this._view.getUnzonedRangeOption('validRange', this._view.calendar.getNow()) ||\r\n new UnzonedRange_1.default(); // completely open-ended\r\n };\r\n // Builds a structure with info about the \"current\" range, the range that is\r\n // highlighted as being the current month for example.\r\n // See build() for a description of `direction`.\r\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\r\n var viewSpec = this._view.viewSpec;\r\n var duration = null;\r\n var unit = null;\r\n var unzonedRange = null;\r\n var dayCount;\r\n if (viewSpec.duration) {\r\n duration = viewSpec.duration;\r\n unit = viewSpec.durationUnit;\r\n unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit);\r\n }\r\n else if ((dayCount = this.opt('dayCount'))) {\r\n unit = 'day';\r\n unzonedRange = this.buildRangeFromDayCount(date, direction, dayCount);\r\n }\r\n else if ((unzonedRange = this.buildCustomVisibleRange(date))) {\r\n unit = util_1.computeGreatestUnit(unzonedRange.getStart(), unzonedRange.getEnd());\r\n }\r\n else {\r\n duration = this.getFallbackDuration();\r\n unit = util_1.computeGreatestUnit(duration);\r\n unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit);\r\n }\r\n return { duration: duration, unit: unit, unzonedRange: unzonedRange };\r\n };\r\n DateProfileGenerator.prototype.getFallbackDuration = function () {\r\n return moment.duration({ days: 1 });\r\n };\r\n // Returns a new activeUnzonedRange to have time values (un-ambiguate)\r\n // minTime or maxTime causes the range to expand.\r\n DateProfileGenerator.prototype.adjustActiveRange = function (unzonedRange, minTime, maxTime) {\r\n var start = unzonedRange.getStart();\r\n var end = unzonedRange.getEnd();\r\n if (this._view.usesMinMaxTime) {\r\n if (minTime < 0) {\r\n start.time(0).add(minTime);\r\n }\r\n if (maxTime > 24 * 60 * 60 * 1000) { // beyond 24 hours?\r\n end.time(maxTime - (24 * 60 * 60 * 1000));\r\n }\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n // Builds the \"current\" range when it is specified as an explicit duration.\r\n // `unit` is the already-computed computeGreatestUnit value of duration.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\r\n var alignment = this.opt('dateAlignment');\r\n var dateIncrementInput;\r\n var dateIncrementDuration;\r\n var start;\r\n var end;\r\n var res;\r\n // compute what the alignment should be\r\n if (!alignment) {\r\n dateIncrementInput = this.opt('dateIncrement');\r\n if (dateIncrementInput) {\r\n dateIncrementDuration = moment.duration(dateIncrementInput);\r\n // use the smaller of the two units\r\n if (dateIncrementDuration < duration) {\r\n alignment = util_1.computeDurationGreatestUnit(dateIncrementDuration, dateIncrementInput);\r\n }\r\n else {\r\n alignment = unit;\r\n }\r\n }\r\n else {\r\n alignment = unit;\r\n }\r\n }\r\n // if the view displays a single day or smaller\r\n if (duration.as('days') <= 1) {\r\n if (this._view.isHiddenDay(start)) {\r\n start = this._view.skipHiddenDays(start, direction);\r\n start.startOf('day');\r\n }\r\n }\r\n function computeRes() {\r\n start = date.clone().startOf(alignment);\r\n end = start.clone().add(duration);\r\n res = new UnzonedRange_1.default(start, end);\r\n }\r\n computeRes();\r\n // if range is completely enveloped by hidden days, go past the hidden days\r\n if (!this.trimHiddenDays(res)) {\r\n date = this._view.skipHiddenDays(date, direction);\r\n computeRes();\r\n }\r\n return res;\r\n };\r\n // Builds the \"current\" range when a dayCount is specified.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\r\n var customAlignment = this.opt('dateAlignment');\r\n var runningCount = 0;\r\n var start;\r\n var end;\r\n if (customAlignment || direction !== -1) {\r\n start = date.clone();\r\n if (customAlignment) {\r\n start.startOf(customAlignment);\r\n }\r\n start.startOf('day');\r\n start = this._view.skipHiddenDays(start);\r\n end = start.clone();\r\n do {\r\n end.add(1, 'day');\r\n if (!this._view.isHiddenDay(end)) {\r\n runningCount++;\r\n }\r\n } while (runningCount < dayCount);\r\n }\r\n else {\r\n end = date.clone().startOf('day').add(1, 'day');\r\n end = this._view.skipHiddenDays(end, -1, true);\r\n start = end.clone();\r\n do {\r\n start.add(-1, 'day');\r\n if (!this._view.isHiddenDay(start)) {\r\n runningCount++;\r\n }\r\n } while (runningCount < dayCount);\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n // Builds a normalized range object for the \"visible\" range,\r\n // which is a way to define the currentUnzonedRange and activeUnzonedRange at the same time.\r\n // TODO: accept a MS-time instead of a moment `date`?\r\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\r\n var visibleUnzonedRange = this._view.getUnzonedRangeOption('visibleRange', this._view.calendar.applyTimezone(date) // correct zone. also generates new obj that avoids mutations\r\n );\r\n if (visibleUnzonedRange && (visibleUnzonedRange.startMs == null || visibleUnzonedRange.endMs == null)) {\r\n return null;\r\n }\r\n return visibleUnzonedRange;\r\n };\r\n // Computes the range that will represent the element/cells for *rendering*,\r\n // but which may have voided days/times.\r\n // not responsible for trimming hidden days.\r\n DateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {\r\n return currentUnzonedRange.clone();\r\n };\r\n // Compute the duration value that should be added/substracted to the current date\r\n // when a prev/next operation happens.\r\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\r\n var dateIncrementInput = this.opt('dateIncrement');\r\n var customAlignment;\r\n if (dateIncrementInput) {\r\n return moment.duration(dateIncrementInput);\r\n }\r\n else if ((customAlignment = this.opt('dateAlignment'))) {\r\n return moment.duration(1, customAlignment);\r\n }\r\n else if (fallback) {\r\n return fallback;\r\n }\r\n else {\r\n return moment.duration({ days: 1 });\r\n }\r\n };\r\n return DateProfileGenerator;\r\n}());\r\nexports.default = DateProfileGenerator;\r\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar ArrayEventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(ArrayEventSource, _super);\r\n function ArrayEventSource(calendar) {\r\n var _this = _super.call(this, calendar) || this;\r\n _this.eventDefs = []; // for if setRawEventDefs is never called\r\n return _this;\r\n }\r\n ArrayEventSource.parse = function (rawInput, calendar) {\r\n var rawProps;\r\n // normalize raw input\r\n if ($.isArray(rawInput.events)) { // extended form\r\n rawProps = rawInput;\r\n }\r\n else if ($.isArray(rawInput)) { // short form\r\n rawProps = { events: rawInput };\r\n }\r\n if (rawProps) {\r\n return EventSource_1.default.parse.call(this, rawProps, calendar);\r\n }\r\n return false;\r\n };\r\n ArrayEventSource.prototype.setRawEventDefs = function (rawEventDefs) {\r\n this.rawEventDefs = rawEventDefs;\r\n this.eventDefs = this.parseEventDefs(rawEventDefs);\r\n };\r\n ArrayEventSource.prototype.fetch = function (start, end, timezone) {\r\n var eventDefs = this.eventDefs;\r\n var i;\r\n if (this.currentTimezone != null &&\r\n this.currentTimezone !== timezone) {\r\n for (i = 0; i < eventDefs.length; i++) {\r\n if (eventDefs[i] instanceof SingleEventDef_1.default) {\r\n eventDefs[i].rezone();\r\n }\r\n }\r\n }\r\n this.currentTimezone = timezone;\r\n return Promise_1.default.resolve(eventDefs);\r\n };\r\n ArrayEventSource.prototype.addEventDef = function (eventDef) {\r\n this.eventDefs.push(eventDef);\r\n };\r\n /*\r\n eventDefId already normalized to a string\r\n */\r\n ArrayEventSource.prototype.removeEventDefsById = function (eventDefId) {\r\n return util_1.removeMatching(this.eventDefs, function (eventDef) {\r\n return eventDef.id === eventDefId;\r\n });\r\n };\r\n ArrayEventSource.prototype.removeAllEventDefs = function () {\r\n this.eventDefs = [];\r\n };\r\n ArrayEventSource.prototype.getPrimitive = function () {\r\n return this.rawEventDefs;\r\n };\r\n ArrayEventSource.prototype.applyManualStandardProps = function (rawProps) {\r\n var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);\r\n this.setRawEventDefs(rawProps.events);\r\n return superSuccess;\r\n };\r\n return ArrayEventSource;\r\n}(EventSource_1.default));\r\nexports.default = ArrayEventSource;\r\nArrayEventSource.defineStandardProps({\r\n events: false // don't automatically transfer\r\n});\r\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar StandardTheme_1 = __webpack_require__(221);\r\nvar JqueryUiTheme_1 = __webpack_require__(222);\r\nvar themeClassHash = {};\r\nfunction defineThemeSystem(themeName, themeClass) {\r\n themeClassHash[themeName] = themeClass;\r\n}\r\nexports.defineThemeSystem = defineThemeSystem;\r\nfunction getThemeSystemClass(themeSetting) {\r\n if (!themeSetting) {\r\n return StandardTheme_1.default;\r\n }\r\n else if (themeSetting === true) {\r\n return JqueryUiTheme_1.default;\r\n }\r\n else {\r\n return themeClassHash[themeSetting];\r\n }\r\n}\r\nexports.getThemeSystemClass = getThemeSystemClass;\r\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\n/*\r\nA cache for the left/right/top/bottom/width/height values for one or more elements.\r\nWorks with both offset (from topleft document) and position (from offsetParent).\r\n\noptions:\r\n- els\r\n- isHorizontal\r\n- isVertical\r\n*/\r\nvar CoordCache = /** @class */ (function () {\r\n function CoordCache(options) {\r\n this.isHorizontal = false; // whether to query for left/right/width\r\n this.isVertical = false; // whether to query for top/bottom/height\r\n this.els = $(options.els);\r\n this.isHorizontal = options.isHorizontal;\r\n this.isVertical = options.isVertical;\r\n this.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null;\r\n }\r\n // Queries the els for coordinates and stores them.\r\n // Call this method before using and of the get* methods below.\r\n CoordCache.prototype.build = function () {\r\n var offsetParentEl = this.forcedOffsetParentEl;\r\n if (!offsetParentEl && this.els.length > 0) {\r\n offsetParentEl = this.els.eq(0).offsetParent();\r\n }\r\n this.origin = offsetParentEl ?\r\n offsetParentEl.offset() :\r\n null;\r\n this.boundingRect = this.queryBoundingRect();\r\n if (this.isHorizontal) {\r\n this.buildElHorizontals();\r\n }\r\n if (this.isVertical) {\r\n this.buildElVerticals();\r\n }\r\n };\r\n // Destroys all internal data about coordinates, freeing memory\r\n CoordCache.prototype.clear = function () {\r\n this.origin = null;\r\n this.boundingRect = null;\r\n this.lefts = null;\r\n this.rights = null;\r\n this.tops = null;\r\n this.bottoms = null;\r\n };\r\n // When called, if coord caches aren't built, builds them\r\n CoordCache.prototype.ensureBuilt = function () {\r\n if (!this.origin) {\r\n this.build();\r\n }\r\n };\r\n // Populates the left/right internal coordinate arrays\r\n CoordCache.prototype.buildElHorizontals = function () {\r\n var lefts = [];\r\n var rights = [];\r\n this.els.each(function (i, node) {\r\n var el = $(node);\r\n var left = el.offset().left;\r\n var width = el.outerWidth();\r\n lefts.push(left);\r\n rights.push(left + width);\r\n });\r\n this.lefts = lefts;\r\n this.rights = rights;\r\n };\r\n // Populates the top/bottom internal coordinate arrays\r\n CoordCache.prototype.buildElVerticals = function () {\r\n var tops = [];\r\n var bottoms = [];\r\n this.els.each(function (i, node) {\r\n var el = $(node);\r\n var top = el.offset().top;\r\n var height = el.outerHeight();\r\n tops.push(top);\r\n bottoms.push(top + height);\r\n });\r\n this.tops = tops;\r\n this.bottoms = bottoms;\r\n };\r\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\r\n // If no intersection is made, returns undefined.\r\n CoordCache.prototype.getHorizontalIndex = function (leftOffset) {\r\n this.ensureBuilt();\r\n var lefts = this.lefts;\r\n var rights = this.rights;\r\n var len = lefts.length;\r\n var i;\r\n for (i = 0; i < len; i++) {\r\n if (leftOffset >= lefts[i] && leftOffset < rights[i]) {\r\n return i;\r\n }\r\n }\r\n };\r\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\r\n // If no intersection is made, returns undefined.\r\n CoordCache.prototype.getVerticalIndex = function (topOffset) {\r\n this.ensureBuilt();\r\n var tops = this.tops;\r\n var bottoms = this.bottoms;\r\n var len = tops.length;\r\n var i;\r\n for (i = 0; i < len; i++) {\r\n if (topOffset >= tops[i] && topOffset < bottoms[i]) {\r\n return i;\r\n }\r\n }\r\n };\r\n // Gets the left offset (from document left) of the element at the given index\r\n CoordCache.prototype.getLeftOffset = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.lefts[leftIndex];\r\n };\r\n // Gets the left position (from offsetParent left) of the element at the given index\r\n CoordCache.prototype.getLeftPosition = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.lefts[leftIndex] - this.origin.left;\r\n };\r\n // Gets the right offset (from document left) of the element at the given index.\r\n // This value is NOT relative to the document's right edge, like the CSS concept of \"right\" would be.\r\n CoordCache.prototype.getRightOffset = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.rights[leftIndex];\r\n };\r\n // Gets the right position (from offsetParent left) of the element at the given index.\r\n // This value is NOT relative to the offsetParent's right edge, like the CSS concept of \"right\" would be.\r\n CoordCache.prototype.getRightPosition = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.rights[leftIndex] - this.origin.left;\r\n };\r\n // Gets the width of the element at the given index\r\n CoordCache.prototype.getWidth = function (leftIndex) {\r\n this.ensureBuilt();\r\n return this.rights[leftIndex] - this.lefts[leftIndex];\r\n };\r\n // Gets the top offset (from document top) of the element at the given index\r\n CoordCache.prototype.getTopOffset = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.tops[topIndex];\r\n };\r\n // Gets the top position (from offsetParent top) of the element at the given position\r\n CoordCache.prototype.getTopPosition = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.tops[topIndex] - this.origin.top;\r\n };\r\n // Gets the bottom offset (from the document top) of the element at the given index.\r\n // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\r\n CoordCache.prototype.getBottomOffset = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.bottoms[topIndex];\r\n };\r\n // Gets the bottom position (from the offsetParent top) of the element at the given index.\r\n // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\r\n CoordCache.prototype.getBottomPosition = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.bottoms[topIndex] - this.origin.top;\r\n };\r\n // Gets the height of the element at the given index\r\n CoordCache.prototype.getHeight = function (topIndex) {\r\n this.ensureBuilt();\r\n return this.bottoms[topIndex] - this.tops[topIndex];\r\n };\r\n // Bounding Rect\r\n // TODO: decouple this from CoordCache\r\n // Compute and return what the elements' bounding rectangle is, from the user's perspective.\r\n // Right now, only returns a rectangle if constrained by an overflow:scroll element.\r\n // Returns null if there are no elements\r\n CoordCache.prototype.queryBoundingRect = function () {\r\n var scrollParentEl;\r\n if (this.els.length > 0) {\r\n scrollParentEl = util_1.getScrollParent(this.els.eq(0));\r\n if (!scrollParentEl.is(document) &&\r\n !scrollParentEl.is('html,body') // don't consider these bounding rects. solves issue 3615\r\n ) {\r\n return util_1.getClientRect(scrollParentEl);\r\n }\r\n }\r\n return null;\r\n };\r\n CoordCache.prototype.isPointInBounds = function (leftOffset, topOffset) {\r\n return this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset);\r\n };\r\n CoordCache.prototype.isLeftInBounds = function (leftOffset) {\r\n return !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right);\r\n };\r\n CoordCache.prototype.isTopInBounds = function (topOffset) {\r\n return !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom);\r\n };\r\n return CoordCache;\r\n}());\r\nexports.default = CoordCache;\r\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\n/* Tracks a drag's mouse movement, firing various handlers\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// TODO: use Emitter\r\nvar DragListener = /** @class */ (function () {\r\n function DragListener(options) {\r\n this.isInteracting = false;\r\n this.isDistanceSurpassed = false;\r\n this.isDelayEnded = false;\r\n this.isDragging = false;\r\n this.isTouch = false;\r\n this.isGeneric = false; // initiated by 'dragstart' (jqui)\r\n this.shouldCancelTouchScroll = true;\r\n this.scrollAlwaysKills = false;\r\n this.isAutoScroll = false;\r\n // defaults\r\n this.scrollSensitivity = 30; // pixels from edge for scrolling to start\r\n this.scrollSpeed = 200; // pixels per second, at maximum speed\r\n this.scrollIntervalMs = 50; // millisecond wait between scroll increment\r\n this.options = options || {};\r\n }\r\n // Interaction (high-level)\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.startInteraction = function (ev, extraOptions) {\r\n if (extraOptions === void 0) { extraOptions = {}; }\r\n if (ev.type === 'mousedown') {\r\n if (GlobalEmitter_1.default.get().shouldIgnoreMouse()) {\r\n return;\r\n }\r\n else if (!util_1.isPrimaryMouseButton(ev)) {\r\n return;\r\n }\r\n else {\r\n ev.preventDefault(); // prevents native selection in most browsers\r\n }\r\n }\r\n if (!this.isInteracting) {\r\n // process options\r\n this.delay = util_1.firstDefined(extraOptions.delay, this.options.delay, 0);\r\n this.minDistance = util_1.firstDefined(extraOptions.distance, this.options.distance, 0);\r\n this.subjectEl = this.options.subjectEl;\r\n util_1.preventSelection($('body'));\r\n this.isInteracting = true;\r\n this.isTouch = util_1.getEvIsTouch(ev);\r\n this.isGeneric = ev.type === 'dragstart';\r\n this.isDelayEnded = false;\r\n this.isDistanceSurpassed = false;\r\n this.originX = util_1.getEvX(ev);\r\n this.originY = util_1.getEvY(ev);\r\n this.scrollEl = util_1.getScrollParent($(ev.target));\r\n this.bindHandlers();\r\n this.initAutoScroll();\r\n this.handleInteractionStart(ev);\r\n this.startDelay(ev);\r\n if (!this.minDistance) {\r\n this.handleDistanceSurpassed(ev);\r\n }\r\n }\r\n };\r\n DragListener.prototype.handleInteractionStart = function (ev) {\r\n this.trigger('interactionStart', ev);\r\n };\r\n DragListener.prototype.endInteraction = function (ev, isCancelled) {\r\n if (this.isInteracting) {\r\n this.endDrag(ev);\r\n if (this.delayTimeoutId) {\r\n clearTimeout(this.delayTimeoutId);\r\n this.delayTimeoutId = null;\r\n }\r\n this.destroyAutoScroll();\r\n this.unbindHandlers();\r\n this.isInteracting = false;\r\n this.handleInteractionEnd(ev, isCancelled);\r\n util_1.allowSelection($('body'));\r\n }\r\n };\r\n DragListener.prototype.handleInteractionEnd = function (ev, isCancelled) {\r\n this.trigger('interactionEnd', ev, isCancelled || false);\r\n };\r\n // Binding To DOM\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.bindHandlers = function () {\r\n // some browsers (Safari in iOS 10) don't allow preventDefault on touch events that are bound after touchstart,\r\n // so listen to the GlobalEmitter singleton, which is always bound, instead of the document directly.\r\n var globalEmitter = GlobalEmitter_1.default.get();\r\n if (this.isGeneric) {\r\n this.listenTo($(document), {\r\n drag: this.handleMove,\r\n dragstop: this.endInteraction\r\n });\r\n }\r\n else if (this.isTouch) {\r\n this.listenTo(globalEmitter, {\r\n touchmove: this.handleTouchMove,\r\n touchend: this.endInteraction,\r\n scroll: this.handleTouchScroll\r\n });\r\n }\r\n else {\r\n this.listenTo(globalEmitter, {\r\n mousemove: this.handleMouseMove,\r\n mouseup: this.endInteraction\r\n });\r\n }\r\n this.listenTo(globalEmitter, {\r\n selectstart: util_1.preventDefault,\r\n contextmenu: util_1.preventDefault // long taps would open menu on Chrome dev tools\r\n });\r\n };\r\n DragListener.prototype.unbindHandlers = function () {\r\n this.stopListeningTo(GlobalEmitter_1.default.get());\r\n this.stopListeningTo($(document)); // for isGeneric\r\n };\r\n // Drag (high-level)\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // extraOptions ignored if drag already started\r\n DragListener.prototype.startDrag = function (ev, extraOptions) {\r\n this.startInteraction(ev, extraOptions); // ensure interaction began\r\n if (!this.isDragging) {\r\n this.isDragging = true;\r\n this.handleDragStart(ev);\r\n }\r\n };\r\n DragListener.prototype.handleDragStart = function (ev) {\r\n this.trigger('dragStart', ev);\r\n };\r\n DragListener.prototype.handleMove = function (ev) {\r\n var dx = util_1.getEvX(ev) - this.originX;\r\n var dy = util_1.getEvY(ev) - this.originY;\r\n var minDistance = this.minDistance;\r\n var distanceSq; // current distance from the origin, squared\r\n if (!this.isDistanceSurpassed) {\r\n distanceSq = dx * dx + dy * dy;\r\n if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\r\n this.handleDistanceSurpassed(ev);\r\n }\r\n }\r\n if (this.isDragging) {\r\n this.handleDrag(dx, dy, ev);\r\n }\r\n };\r\n // Called while the mouse is being moved and when we know a legitimate drag is taking place\r\n DragListener.prototype.handleDrag = function (dx, dy, ev) {\r\n this.trigger('drag', dx, dy, ev);\r\n this.updateAutoScroll(ev); // will possibly cause scrolling\r\n };\r\n DragListener.prototype.endDrag = function (ev) {\r\n if (this.isDragging) {\r\n this.isDragging = false;\r\n this.handleDragEnd(ev);\r\n }\r\n };\r\n DragListener.prototype.handleDragEnd = function (ev) {\r\n this.trigger('dragEnd', ev);\r\n };\r\n // Delay\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.startDelay = function (initialEv) {\r\n var _this = this;\r\n if (this.delay) {\r\n this.delayTimeoutId = setTimeout(function () {\r\n _this.handleDelayEnd(initialEv);\r\n }, this.delay);\r\n }\r\n else {\r\n this.handleDelayEnd(initialEv);\r\n }\r\n };\r\n DragListener.prototype.handleDelayEnd = function (initialEv) {\r\n this.isDelayEnded = true;\r\n if (this.isDistanceSurpassed) {\r\n this.startDrag(initialEv);\r\n }\r\n };\r\n // Distance\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.handleDistanceSurpassed = function (ev) {\r\n this.isDistanceSurpassed = true;\r\n if (this.isDelayEnded) {\r\n this.startDrag(ev);\r\n }\r\n };\r\n // Mouse / Touch\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.handleTouchMove = function (ev) {\r\n // prevent inertia and touchmove-scrolling while dragging\r\n if (this.isDragging && this.shouldCancelTouchScroll) {\r\n ev.preventDefault();\r\n }\r\n this.handleMove(ev);\r\n };\r\n DragListener.prototype.handleMouseMove = function (ev) {\r\n this.handleMove(ev);\r\n };\r\n // Scrolling (unrelated to auto-scroll)\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.handleTouchScroll = function (ev) {\r\n // if the drag is being initiated by touch, but a scroll happens before\r\n // the drag-initiating delay is over, cancel the drag\r\n if (!this.isDragging || this.scrollAlwaysKills) {\r\n this.endInteraction(ev, true); // isCancelled=true\r\n }\r\n };\r\n // Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Triggers a callback. Calls a function in the option hash of the same name.\r\n // Arguments beyond the first `name` are forwarded on.\r\n DragListener.prototype.trigger = function (name) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n if (this.options[name]) {\r\n this.options[name].apply(this, args);\r\n }\r\n // makes _methods callable by event name. TODO: kill this\r\n if (this['_' + name]) {\r\n this['_' + name].apply(this, args);\r\n }\r\n };\r\n // Auto-scroll\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DragListener.prototype.initAutoScroll = function () {\r\n var scrollEl = this.scrollEl;\r\n this.isAutoScroll =\r\n this.options.scroll &&\r\n scrollEl &&\r\n !scrollEl.is(window) &&\r\n !scrollEl.is(document);\r\n if (this.isAutoScroll) {\r\n // debounce makes sure rapid calls don't happen\r\n this.listenTo(scrollEl, 'scroll', util_1.debounce(this.handleDebouncedScroll, 100));\r\n }\r\n };\r\n DragListener.prototype.destroyAutoScroll = function () {\r\n this.endAutoScroll(); // kill any animation loop\r\n // remove the scroll handler if there is a scrollEl\r\n if (this.isAutoScroll) {\r\n this.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :(\r\n }\r\n };\r\n // Computes and stores the bounding rectangle of scrollEl\r\n DragListener.prototype.computeScrollBounds = function () {\r\n if (this.isAutoScroll) {\r\n this.scrollBounds = util_1.getOuterRect(this.scrollEl);\r\n // TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars\r\n }\r\n };\r\n // Called when the dragging is in progress and scrolling should be updated\r\n DragListener.prototype.updateAutoScroll = function (ev) {\r\n var sensitivity = this.scrollSensitivity;\r\n var bounds = this.scrollBounds;\r\n var topCloseness;\r\n var bottomCloseness;\r\n var leftCloseness;\r\n var rightCloseness;\r\n var topVel = 0;\r\n var leftVel = 0;\r\n if (bounds) { // only scroll if scrollEl exists\r\n // compute closeness to edges. valid range is from 0.0 - 1.0\r\n topCloseness = (sensitivity - (util_1.getEvY(ev) - bounds.top)) / sensitivity;\r\n bottomCloseness = (sensitivity - (bounds.bottom - util_1.getEvY(ev))) / sensitivity;\r\n leftCloseness = (sensitivity - (util_1.getEvX(ev) - bounds.left)) / sensitivity;\r\n rightCloseness = (sensitivity - (bounds.right - util_1.getEvX(ev))) / sensitivity;\r\n // translate vertical closeness into velocity.\r\n // mouse must be completely in bounds for velocity to happen.\r\n if (topCloseness >= 0 && topCloseness <= 1) {\r\n topVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up\r\n }\r\n else if (bottomCloseness >= 0 && bottomCloseness <= 1) {\r\n topVel = bottomCloseness * this.scrollSpeed;\r\n }\r\n // translate horizontal closeness into velocity\r\n if (leftCloseness >= 0 && leftCloseness <= 1) {\r\n leftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left\r\n }\r\n else if (rightCloseness >= 0 && rightCloseness <= 1) {\r\n leftVel = rightCloseness * this.scrollSpeed;\r\n }\r\n }\r\n this.setScrollVel(topVel, leftVel);\r\n };\r\n // Sets the speed-of-scrolling for the scrollEl\r\n DragListener.prototype.setScrollVel = function (topVel, leftVel) {\r\n this.scrollTopVel = topVel;\r\n this.scrollLeftVel = leftVel;\r\n this.constrainScrollVel(); // massages into realistic values\r\n // if there is non-zero velocity, and an animation loop hasn't already started, then START\r\n if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) {\r\n this.scrollIntervalId = setInterval(util_1.proxy(this, 'scrollIntervalFunc'), // scope to `this`\r\n this.scrollIntervalMs);\r\n }\r\n };\r\n // Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way\r\n DragListener.prototype.constrainScrollVel = function () {\r\n var el = this.scrollEl;\r\n if (this.scrollTopVel < 0) { // scrolling up?\r\n if (el.scrollTop() <= 0) { // already scrolled all the way up?\r\n this.scrollTopVel = 0;\r\n }\r\n }\r\n else if (this.scrollTopVel > 0) { // scrolling down?\r\n if (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down?\r\n this.scrollTopVel = 0;\r\n }\r\n }\r\n if (this.scrollLeftVel < 0) { // scrolling left?\r\n if (el.scrollLeft() <= 0) { // already scrolled all the left?\r\n this.scrollLeftVel = 0;\r\n }\r\n }\r\n else if (this.scrollLeftVel > 0) { // scrolling right?\r\n if (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right?\r\n this.scrollLeftVel = 0;\r\n }\r\n }\r\n };\r\n // This function gets called during every iteration of the scrolling animation loop\r\n DragListener.prototype.scrollIntervalFunc = function () {\r\n var el = this.scrollEl;\r\n var frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by\r\n // change the value of scrollEl's scroll\r\n if (this.scrollTopVel) {\r\n el.scrollTop(el.scrollTop() + this.scrollTopVel * frac);\r\n }\r\n if (this.scrollLeftVel) {\r\n el.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac);\r\n }\r\n this.constrainScrollVel(); // since the scroll values changed, recompute the velocities\r\n // if scrolled all the way, which causes the vels to be zero, stop the animation loop\r\n if (!this.scrollTopVel && !this.scrollLeftVel) {\r\n this.endAutoScroll();\r\n }\r\n };\r\n // Kills any existing scrolling animation loop\r\n DragListener.prototype.endAutoScroll = function () {\r\n if (this.scrollIntervalId) {\r\n clearInterval(this.scrollIntervalId);\r\n this.scrollIntervalId = null;\r\n this.handleScrollEnd();\r\n }\r\n };\r\n // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce)\r\n DragListener.prototype.handleDebouncedScroll = function () {\r\n // recompute all coordinates, but *only* if this is *not* part of our scrolling animation\r\n if (!this.scrollIntervalId) {\r\n this.handleScrollEnd();\r\n }\r\n };\r\n DragListener.prototype.handleScrollEnd = function () {\r\n // Called when scrolling has stopped, whether through auto scroll, or the user scrolling\r\n };\r\n return DragListener;\r\n}());\r\nexports.default = DragListener;\r\nListenerMixin_1.default.mixInto(DragListener);\r\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar Mixin_1 = __webpack_require__(15);\r\n/*\r\nA set of rendering and date-related methods for a visual component comprised of one or more rows of day columns.\r\nPrerequisite: the object being mixed into needs to be a *Grid*\r\n*/\r\nvar DayTableMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayTableMixin, _super);\r\n function DayTableMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Populates internal variables used for date calculation and rendering\r\n DayTableMixin.prototype.updateDayTable = function () {\r\n var t = this;\r\n var view = t.view;\r\n var calendar = view.calendar;\r\n var date = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.startMs, true);\r\n var end = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.endMs, true);\r\n var dayIndex = -1;\r\n var dayIndices = [];\r\n var dayDates = [];\r\n var daysPerRow;\r\n var firstDay;\r\n var rowCnt;\r\n while (date.isBefore(end)) { // loop each day from start to end\r\n if (view.isHiddenDay(date)) {\r\n dayIndices.push(dayIndex + 0.5); // mark that it's between indices\r\n }\r\n else {\r\n dayIndex++;\r\n dayIndices.push(dayIndex);\r\n dayDates.push(date.clone());\r\n }\r\n date.add(1, 'days');\r\n }\r\n if (this.breakOnWeeks) {\r\n // count columns until the day-of-week repeats\r\n firstDay = dayDates[0].day();\r\n for (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) {\r\n if (dayDates[daysPerRow].day() === firstDay) {\r\n break;\r\n }\r\n }\r\n rowCnt = Math.ceil(dayDates.length / daysPerRow);\r\n }\r\n else {\r\n rowCnt = 1;\r\n daysPerRow = dayDates.length;\r\n }\r\n this.dayDates = dayDates;\r\n this.dayIndices = dayIndices;\r\n this.daysPerRow = daysPerRow;\r\n this.rowCnt = rowCnt;\r\n this.updateDayTableCols();\r\n };\r\n // Computes and assigned the colCnt property and updates any options that may be computed from it\r\n DayTableMixin.prototype.updateDayTableCols = function () {\r\n this.colCnt = this.computeColCnt();\r\n this.colHeadFormat =\r\n this.opt('columnHeaderFormat') ||\r\n this.opt('columnFormat') || // deprecated\r\n this.computeColHeadFormat();\r\n };\r\n // Determines how many columns there should be in the table\r\n DayTableMixin.prototype.computeColCnt = function () {\r\n return this.daysPerRow;\r\n };\r\n // Computes the ambiguously-timed moment for the given cell\r\n DayTableMixin.prototype.getCellDate = function (row, col) {\r\n return this.dayDates[this.getCellDayIndex(row, col)].clone();\r\n };\r\n // Computes the ambiguously-timed date range for the given cell\r\n DayTableMixin.prototype.getCellRange = function (row, col) {\r\n var start = this.getCellDate(row, col);\r\n var end = start.clone().add(1, 'days');\r\n return { start: start, end: end };\r\n };\r\n // Returns the number of day cells, chronologically, from the first of the grid (0-based)\r\n DayTableMixin.prototype.getCellDayIndex = function (row, col) {\r\n return row * this.daysPerRow + this.getColDayIndex(col);\r\n };\r\n // Returns the numner of day cells, chronologically, from the first cell in *any given row*\r\n DayTableMixin.prototype.getColDayIndex = function (col) {\r\n if (this.isRTL) {\r\n return this.colCnt - 1 - col;\r\n }\r\n else {\r\n return col;\r\n }\r\n };\r\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\r\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\r\n // If before the first offset, returns a negative number.\r\n // If after the last offset, returns an offset past the last cell offset.\r\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\r\n DayTableMixin.prototype.getDateDayIndex = function (date) {\r\n var dayIndices = this.dayIndices;\r\n var dayOffset = date.diff(this.dayDates[0], 'days');\r\n if (dayOffset < 0) {\r\n return dayIndices[0] - 1;\r\n }\r\n else if (dayOffset >= dayIndices.length) {\r\n return dayIndices[dayIndices.length - 1] + 1;\r\n }\r\n else {\r\n return dayIndices[dayOffset];\r\n }\r\n };\r\n /* Options\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Computes a default column header formatting string if `colFormat` is not explicitly defined\r\n DayTableMixin.prototype.computeColHeadFormat = function () {\r\n // if more than one week row, or if there are a lot of columns with not much space,\r\n // put just the day numbers will be in each cell\r\n if (this.rowCnt > 1 || this.colCnt > 10) {\r\n return 'ddd'; // \"Sat\"\r\n }\r\n else if (this.colCnt > 1) {\r\n return this.opt('dayOfMonthFormat'); // \"Sat 12/10\"\r\n }\r\n else {\r\n return 'dddd'; // \"Saturday\"\r\n }\r\n };\r\n /* Slicing\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Slices up a date range into a segment for every week-row it intersects with\r\n DayTableMixin.prototype.sliceRangeByRow = function (unzonedRange) {\r\n var daysPerRow = this.daysPerRow;\r\n var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold\r\n var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\r\n var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\r\n var segs = [];\r\n var row;\r\n var rowFirst;\r\n var rowLast; // inclusive day-index range for current row\r\n var segFirst;\r\n var segLast; // inclusive day-index range for segment\r\n for (row = 0; row < this.rowCnt; row++) {\r\n rowFirst = row * daysPerRow;\r\n rowLast = rowFirst + daysPerRow - 1;\r\n // intersect segment's offset range with the row's\r\n segFirst = Math.max(rangeFirst, rowFirst);\r\n segLast = Math.min(rangeLast, rowLast);\r\n // deal with in-between indices\r\n segFirst = Math.ceil(segFirst); // in-between starts round to next cell\r\n segLast = Math.floor(segLast); // in-between ends round to prev cell\r\n if (segFirst <= segLast) { // was there any intersection with the current row?\r\n segs.push({\r\n row: row,\r\n // normalize to start of row\r\n firstRowDayIndex: segFirst - rowFirst,\r\n lastRowDayIndex: segLast - rowFirst,\r\n // must be matching integers to be the segment's start/end\r\n isStart: segFirst === rangeFirst,\r\n isEnd: segLast === rangeLast\r\n });\r\n }\r\n }\r\n return segs;\r\n };\r\n // Slices up a date range into a segment for every day-cell it intersects with.\r\n // TODO: make more DRY with sliceRangeByRow somehow.\r\n DayTableMixin.prototype.sliceRangeByDay = function (unzonedRange) {\r\n var daysPerRow = this.daysPerRow;\r\n var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold\r\n var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\r\n var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\r\n var segs = [];\r\n var row;\r\n var rowFirst;\r\n var rowLast; // inclusive day-index range for current row\r\n var i;\r\n var segFirst;\r\n var segLast; // inclusive day-index range for segment\r\n for (row = 0; row < this.rowCnt; row++) {\r\n rowFirst = row * daysPerRow;\r\n rowLast = rowFirst + daysPerRow - 1;\r\n for (i = rowFirst; i <= rowLast; i++) {\r\n // intersect segment's offset range with the row's\r\n segFirst = Math.max(rangeFirst, i);\r\n segLast = Math.min(rangeLast, i);\r\n // deal with in-between indices\r\n segFirst = Math.ceil(segFirst); // in-between starts round to next cell\r\n segLast = Math.floor(segLast); // in-between ends round to prev cell\r\n if (segFirst <= segLast) { // was there any intersection with the current row?\r\n segs.push({\r\n row: row,\r\n // normalize to start of row\r\n firstRowDayIndex: segFirst - rowFirst,\r\n lastRowDayIndex: segLast - rowFirst,\r\n // must be matching integers to be the segment's start/end\r\n isStart: segFirst === rangeFirst,\r\n isEnd: segLast === rangeLast\r\n });\r\n }\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Header Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayTableMixin.prototype.renderHeadHtml = function () {\r\n var theme = this.view.calendar.theme;\r\n return '' +\r\n '
' +\r\n '' +\r\n '' +\r\n this.renderHeadTrHtml() +\r\n '' +\r\n '
' +\r\n '
';\r\n };\r\n DayTableMixin.prototype.renderHeadIntroHtml = function () {\r\n return this.renderIntroHtml(); // fall back to generic\r\n };\r\n DayTableMixin.prototype.renderHeadTrHtml = function () {\r\n return '' +\r\n '' +\r\n (this.isRTL ? '' : this.renderHeadIntroHtml()) +\r\n this.renderHeadDateCellsHtml() +\r\n (this.isRTL ? this.renderHeadIntroHtml() : '') +\r\n '';\r\n };\r\n DayTableMixin.prototype.renderHeadDateCellsHtml = function () {\r\n var htmls = [];\r\n var col;\r\n var date;\r\n for (col = 0; col < this.colCnt; col++) {\r\n date = this.getCellDate(0, col);\r\n htmls.push(this.renderHeadDateCellHtml(date));\r\n }\r\n return htmls.join('');\r\n };\r\n // TODO: when internalApiVersion, accept an object for HTML attributes\r\n // (colspan should be no different)\r\n DayTableMixin.prototype.renderHeadDateCellHtml = function (date, colspan, otherAttrs) {\r\n var t = this;\r\n var view = t.view;\r\n var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.\r\n var classNames = [\r\n 'fc-day-header',\r\n view.calendar.theme.getClass('widgetHeader')\r\n ];\r\n var innerHtml;\r\n if (typeof t.opt('columnHeaderHtml') === 'function') {\r\n innerHtml = t.opt('columnHeaderHtml')(date);\r\n }\r\n else if (typeof t.opt('columnHeaderText') === 'function') {\r\n innerHtml = util_1.htmlEscape(t.opt('columnHeaderText')(date));\r\n }\r\n else {\r\n innerHtml = util_1.htmlEscape(date.format(t.colHeadFormat));\r\n }\r\n // if only one row of days, the classNames on the header can represent the specific days beneath\r\n if (t.rowCnt === 1) {\r\n classNames = classNames.concat(\r\n // includes the day-of-week class\r\n // noThemeHighlight=true (don't highlight the header)\r\n t.getDayClasses(date, true));\r\n }\r\n else {\r\n classNames.push('fc-' + util_1.dayIDs[date.day()]); // only add the day-of-week class\r\n }\r\n return '' +\r\n ' 1 ?\r\n ' colspan=\"' + colspan + '\"' :\r\n '') +\r\n (otherAttrs ?\r\n ' ' + otherAttrs :\r\n '') +\r\n '>' +\r\n (isDateValid ?\r\n // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff)\r\n view.buildGotoAnchorHtml({ date: date, forceOff: t.rowCnt > 1 || t.colCnt === 1 }, innerHtml) :\r\n // if not valid, display text, but no link\r\n innerHtml) +\r\n '';\r\n };\r\n /* Background Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayTableMixin.prototype.renderBgTrHtml = function (row) {\r\n return '' +\r\n '' +\r\n (this.isRTL ? '' : this.renderBgIntroHtml(row)) +\r\n this.renderBgCellsHtml(row) +\r\n (this.isRTL ? this.renderBgIntroHtml(row) : '') +\r\n '';\r\n };\r\n DayTableMixin.prototype.renderBgIntroHtml = function (row) {\r\n return this.renderIntroHtml(); // fall back to generic\r\n };\r\n DayTableMixin.prototype.renderBgCellsHtml = function (row) {\r\n var htmls = [];\r\n var col;\r\n var date;\r\n for (col = 0; col < this.colCnt; col++) {\r\n date = this.getCellDate(row, col);\r\n htmls.push(this.renderBgCellHtml(date));\r\n }\r\n return htmls.join('');\r\n };\r\n DayTableMixin.prototype.renderBgCellHtml = function (date, otherAttrs) {\r\n var t = this;\r\n var view = t.view;\r\n var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.\r\n var classes = t.getDayClasses(date);\r\n classes.unshift('fc-day', view.calendar.theme.getClass('widgetContent'));\r\n return '';\r\n };\r\n /* Generic\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayTableMixin.prototype.renderIntroHtml = function () {\r\n // Generates the default HTML intro for any row. User classes should override\r\n };\r\n // TODO: a generic method for dealing with , RTL, intro\r\n // when increment internalApiVersion\r\n // wrapTr (scheduler)\r\n /* Utils\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Applies the generic \"intro\" and \"outro\" HTML to the given cells.\r\n // Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro.\r\n DayTableMixin.prototype.bookendCells = function (trEl) {\r\n var introHtml = this.renderIntroHtml();\r\n if (introHtml) {\r\n if (this.isRTL) {\r\n trEl.append(introHtml);\r\n }\r\n else {\r\n trEl.prepend(introHtml);\r\n }\r\n }\r\n };\r\n return DayTableMixin;\r\n}(Mixin_1.default));\r\nexports.default = DayTableMixin;\r\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BusinessHourRenderer = /** @class */ (function () {\r\n /*\r\n component implements:\r\n - eventRangesToEventFootprints\r\n - eventFootprintsToSegs\r\n */\r\n function BusinessHourRenderer(component, fillRenderer) {\r\n this.component = component;\r\n this.fillRenderer = fillRenderer;\r\n }\r\n BusinessHourRenderer.prototype.render = function (businessHourGenerator) {\r\n var component = this.component;\r\n var unzonedRange = component._getDateProfile().activeUnzonedRange;\r\n var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(component.hasAllDayBusinessHours, unzonedRange);\r\n var eventFootprints = eventInstanceGroup ?\r\n component.eventRangesToEventFootprints(eventInstanceGroup.sliceRenderRanges(unzonedRange)) :\r\n [];\r\n this.renderEventFootprints(eventFootprints);\r\n };\r\n BusinessHourRenderer.prototype.renderEventFootprints = function (eventFootprints) {\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n this.renderSegs(segs);\r\n this.segs = segs;\r\n };\r\n BusinessHourRenderer.prototype.renderSegs = function (segs) {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.renderSegs('businessHours', segs, {\r\n getClasses: function (seg) {\r\n return ['fc-nonbusiness', 'fc-bgevent'];\r\n }\r\n });\r\n }\r\n };\r\n BusinessHourRenderer.prototype.unrender = function () {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.unrender('businessHours');\r\n }\r\n this.segs = null;\r\n };\r\n BusinessHourRenderer.prototype.getSegs = function () {\r\n return this.segs || [];\r\n };\r\n return BusinessHourRenderer;\r\n}());\r\nexports.default = BusinessHourRenderer;\r\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar FillRenderer = /** @class */ (function () {\r\n function FillRenderer(component) {\r\n this.fillSegTag = 'div';\r\n this.component = component;\r\n this.elsByFill = {};\r\n }\r\n FillRenderer.prototype.renderFootprint = function (type, componentFootprint, props) {\r\n this.renderSegs(type, this.component.componentFootprintToSegs(componentFootprint), props);\r\n };\r\n FillRenderer.prototype.renderSegs = function (type, segs, props) {\r\n var els;\r\n segs = this.buildSegEls(type, segs, props); // assignes `.el` to each seg. returns successfully rendered segs\r\n els = this.attachSegEls(type, segs);\r\n if (els) {\r\n this.reportEls(type, els);\r\n }\r\n return segs;\r\n };\r\n // Unrenders a specific type of fill that is currently rendered on the grid\r\n FillRenderer.prototype.unrender = function (type) {\r\n var el = this.elsByFill[type];\r\n if (el) {\r\n el.remove();\r\n delete this.elsByFill[type];\r\n }\r\n };\r\n // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.\r\n // Only returns segments that successfully rendered.\r\n FillRenderer.prototype.buildSegEls = function (type, segs, props) {\r\n var _this = this;\r\n var html = '';\r\n var renderedSegs = [];\r\n var i;\r\n if (segs.length) {\r\n // build a large concatenation of segment HTML\r\n for (i = 0; i < segs.length; i++) {\r\n html += this.buildSegHtml(type, segs[i], props);\r\n }\r\n // Grab individual elements from the combined HTML string. Use each as the default rendering.\r\n // Then, compute the 'el' for each segment.\r\n $(html).each(function (i, node) {\r\n var seg = segs[i];\r\n var el = $(node);\r\n // allow custom filter methods per-type\r\n if (props.filterEl) {\r\n el = props.filterEl(seg, el);\r\n }\r\n if (el) { // custom filters did not cancel the render\r\n el = $(el); // allow custom filter to return raw DOM node\r\n // correct element type? (would be bad if a non-TD were inserted into a table for example)\r\n if (el.is(_this.fillSegTag)) {\r\n seg.el = el;\r\n renderedSegs.push(seg);\r\n }\r\n }\r\n });\r\n }\r\n return renderedSegs;\r\n };\r\n // Builds the HTML needed for one fill segment. Generic enough to work with different types.\r\n FillRenderer.prototype.buildSegHtml = function (type, seg, props) {\r\n // custom hooks per-type\r\n var classes = props.getClasses ? props.getClasses(seg) : [];\r\n var css = util_1.cssToStr(props.getCss ? props.getCss(seg) : {});\r\n return '<' + this.fillSegTag +\r\n (classes.length ? ' class=\"' + classes.join(' ') + '\"' : '') +\r\n (css ? ' style=\"' + css + '\"' : '') +\r\n ' />';\r\n };\r\n // Should return wrapping DOM structure\r\n FillRenderer.prototype.attachSegEls = function (type, segs) {\r\n // subclasses must implement\r\n };\r\n FillRenderer.prototype.reportEls = function (type, nodes) {\r\n if (this.elsByFill[type]) {\r\n this.elsByFill[type] = this.elsByFill[type].add(nodes);\r\n }\r\n else {\r\n this.elsByFill[type] = $(nodes);\r\n }\r\n };\r\n return FillRenderer;\r\n}());\r\nexports.default = FillRenderer;\r\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar HelperRenderer = /** @class */ (function () {\r\n function HelperRenderer(component, eventRenderer) {\r\n this.view = component._getView();\r\n this.component = component;\r\n this.eventRenderer = eventRenderer;\r\n }\r\n HelperRenderer.prototype.renderComponentFootprint = function (componentFootprint) {\r\n this.renderEventFootprints([\r\n this.fabricateEventFootprint(componentFootprint)\r\n ]);\r\n };\r\n HelperRenderer.prototype.renderEventDraggingFootprints = function (eventFootprints, sourceSeg, isTouch) {\r\n this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-dragging', isTouch ? null : this.view.opt('dragOpacity'));\r\n };\r\n HelperRenderer.prototype.renderEventResizingFootprints = function (eventFootprints, sourceSeg, isTouch) {\r\n this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-resizing');\r\n };\r\n HelperRenderer.prototype.renderEventFootprints = function (eventFootprints, sourceSeg, extraClassNames, opacity) {\r\n var segs = this.component.eventFootprintsToSegs(eventFootprints);\r\n var classNames = 'fc-helper ' + (extraClassNames || '');\r\n var i;\r\n // assigns each seg's el and returns a subset of segs that were rendered\r\n segs = this.eventRenderer.renderFgSegEls(segs);\r\n for (i = 0; i < segs.length; i++) {\r\n segs[i].el.addClass(classNames);\r\n }\r\n if (opacity != null) {\r\n for (i = 0; i < segs.length; i++) {\r\n segs[i].el.css('opacity', opacity);\r\n }\r\n }\r\n this.helperEls = this.renderSegs(segs, sourceSeg);\r\n };\r\n /*\r\n Must return all mock event elements\r\n */\r\n HelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {\r\n // Subclasses must implement\r\n };\r\n HelperRenderer.prototype.unrender = function () {\r\n if (this.helperEls) {\r\n this.helperEls.remove();\r\n this.helperEls = null;\r\n }\r\n };\r\n HelperRenderer.prototype.fabricateEventFootprint = function (componentFootprint) {\r\n var calendar = this.view.calendar;\r\n var eventDateProfile = calendar.footprintToDateProfile(componentFootprint);\r\n var dummyEvent = new SingleEventDef_1.default(new EventSource_1.default(calendar));\r\n var dummyInstance;\r\n dummyEvent.dateProfile = eventDateProfile;\r\n dummyInstance = dummyEvent.buildInstance();\r\n return new EventFootprint_1.default(componentFootprint, dummyEvent, dummyInstance);\r\n };\r\n return HelperRenderer;\r\n}());\r\nexports.default = HelperRenderer;\r\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar EventPointing = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventPointing, _super);\r\n function EventPointing() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /*\r\n component must implement:\r\n - publiclyTrigger\r\n */\r\n EventPointing.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n component.bindSegHandlerToEl(el, 'click', this.handleClick.bind(this));\r\n component.bindSegHandlerToEl(el, 'mouseenter', this.handleMouseover.bind(this));\r\n component.bindSegHandlerToEl(el, 'mouseleave', this.handleMouseout.bind(this));\r\n };\r\n EventPointing.prototype.handleClick = function (seg, ev) {\r\n var res = this.component.publiclyTrigger('eventClick', {\r\n context: seg.el[0],\r\n args: [seg.footprint.getEventLegacy(), ev, this.view]\r\n });\r\n if (res === false) {\r\n ev.preventDefault();\r\n }\r\n };\r\n // Updates internal state and triggers handlers for when an event element is moused over\r\n EventPointing.prototype.handleMouseover = function (seg, ev) {\r\n if (!GlobalEmitter_1.default.get().shouldIgnoreMouse() &&\r\n !this.mousedOverSeg) {\r\n this.mousedOverSeg = seg;\r\n // TODO: move to EventSelecting's responsibility\r\n if (this.view.isEventDefResizable(seg.footprint.eventDef)) {\r\n seg.el.addClass('fc-allow-mouse-resize');\r\n }\r\n this.component.publiclyTrigger('eventMouseover', {\r\n context: seg.el[0],\r\n args: [seg.footprint.getEventLegacy(), ev, this.view]\r\n });\r\n }\r\n };\r\n // Updates internal state and triggers handlers for when an event element is moused out.\r\n // Can be given no arguments, in which case it will mouseout the segment that was previously moused over.\r\n EventPointing.prototype.handleMouseout = function (seg, ev) {\r\n if (this.mousedOverSeg) {\r\n this.mousedOverSeg = null;\r\n // TODO: move to EventSelecting's responsibility\r\n if (this.view.isEventDefResizable(seg.footprint.eventDef)) {\r\n seg.el.removeClass('fc-allow-mouse-resize');\r\n }\r\n this.component.publiclyTrigger('eventMouseout', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev || {},\r\n this.view\r\n ]\r\n });\r\n }\r\n };\r\n EventPointing.prototype.end = function () {\r\n if (this.mousedOverSeg) {\r\n this.handleMouseout(this.mousedOverSeg);\r\n }\r\n };\r\n return EventPointing;\r\n}(Interaction_1.default));\r\nexports.default = EventPointing;\r\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Mixin_1 = __webpack_require__(15);\r\nvar DateClicking_1 = __webpack_require__(237);\r\nvar DateSelecting_1 = __webpack_require__(236);\r\nvar EventPointing_1 = __webpack_require__(64);\r\nvar EventDragging_1 = __webpack_require__(235);\r\nvar EventResizing_1 = __webpack_require__(234);\r\nvar ExternalDropping_1 = __webpack_require__(233);\r\nvar StandardInteractionsMixin = /** @class */ (function (_super) {\r\n tslib_1.__extends(StandardInteractionsMixin, _super);\r\n function StandardInteractionsMixin() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return StandardInteractionsMixin;\r\n}(Mixin_1.default));\r\nexports.default = StandardInteractionsMixin;\r\nStandardInteractionsMixin.prototype.dateClickingClass = DateClicking_1.default;\r\nStandardInteractionsMixin.prototype.dateSelectingClass = DateSelecting_1.default;\r\nStandardInteractionsMixin.prototype.eventPointingClass = EventPointing_1.default;\r\nStandardInteractionsMixin.prototype.eventDraggingClass = EventDragging_1.default;\r\nStandardInteractionsMixin.prototype.eventResizingClass = EventResizing_1.default;\r\nStandardInteractionsMixin.prototype.externalDroppingClass = ExternalDropping_1.default;\r\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar CoordCache_1 = __webpack_require__(58);\r\nvar Popover_1 = __webpack_require__(227);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar EventFootprint_1 = __webpack_require__(34);\r\nvar BusinessHourRenderer_1 = __webpack_require__(61);\r\nvar StandardInteractionsMixin_1 = __webpack_require__(65);\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nvar DayTableMixin_1 = __webpack_require__(60);\r\nvar DayGridEventRenderer_1 = __webpack_require__(243);\r\nvar DayGridHelperRenderer_1 = __webpack_require__(244);\r\nvar DayGridFillRenderer_1 = __webpack_require__(245);\r\n/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week.\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar DayGrid = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGrid, _super);\r\n function DayGrid(view) {\r\n var _this = _super.call(this, view) || this;\r\n _this.cellWeekNumbersVisible = false; // display week numbers in day cell?\r\n _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid\r\n // isRigid determines whether the individual rows should ignore the contents and be a constant height.\r\n // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient.\r\n _this.isRigid = false;\r\n _this.hasAllDayBusinessHours = true;\r\n return _this;\r\n }\r\n // Slices up the given span (unzoned start/end with other misc data) into an array of segments\r\n DayGrid.prototype.componentFootprintToSegs = function (componentFootprint) {\r\n var segs = this.sliceRangeByRow(componentFootprint.unzonedRange);\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n if (this.isRTL) {\r\n seg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex;\r\n seg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex;\r\n }\r\n else {\r\n seg.leftCol = seg.firstRowDayIndex;\r\n seg.rightCol = seg.lastRowDayIndex;\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Date Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.renderDates = function (dateProfile) {\r\n this.dateProfile = dateProfile;\r\n this.updateDayTable();\r\n this.renderGrid();\r\n };\r\n DayGrid.prototype.unrenderDates = function () {\r\n this.removeSegPopover();\r\n };\r\n // Renders the rows and columns into the component's `this.el`, which should already be assigned.\r\n DayGrid.prototype.renderGrid = function () {\r\n var view = this.view;\r\n var rowCnt = this.rowCnt;\r\n var colCnt = this.colCnt;\r\n var html = '';\r\n var row;\r\n var col;\r\n if (this.headContainerEl) {\r\n this.headContainerEl.html(this.renderHeadHtml());\r\n }\r\n for (row = 0; row < rowCnt; row++) {\r\n html += this.renderDayRowHtml(row, this.isRigid);\r\n }\r\n this.el.html(html);\r\n this.rowEls = this.el.find('.fc-row');\r\n this.cellEls = this.el.find('.fc-day, .fc-disabled-day');\r\n this.rowCoordCache = new CoordCache_1.default({\r\n els: this.rowEls,\r\n isVertical: true\r\n });\r\n this.colCoordCache = new CoordCache_1.default({\r\n els: this.cellEls.slice(0, this.colCnt),\r\n isHorizontal: true\r\n });\r\n // trigger dayRender with each cell's element\r\n for (row = 0; row < rowCnt; row++) {\r\n for (col = 0; col < colCnt; col++) {\r\n this.publiclyTrigger('dayRender', {\r\n context: view,\r\n args: [\r\n this.getCellDate(row, col),\r\n this.getCellEl(row, col),\r\n view\r\n ]\r\n });\r\n }\r\n }\r\n };\r\n // Generates the HTML for a single row, which is a div that wraps a table.\r\n // `row` is the row number.\r\n DayGrid.prototype.renderDayRowHtml = function (row, isRigid) {\r\n var theme = this.view.calendar.theme;\r\n var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')];\r\n if (isRigid) {\r\n classes.push('fc-rigid');\r\n }\r\n return '' +\r\n '
' +\r\n '
' +\r\n '' +\r\n this.renderBgTrHtml(row) +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '' +\r\n (this.getIsNumbersVisible() ?\r\n '' +\r\n this.renderNumberTrHtml(row) +\r\n '' :\r\n '') +\r\n '
' +\r\n '
' +\r\n '
';\r\n };\r\n DayGrid.prototype.getIsNumbersVisible = function () {\r\n return this.getIsDayNumbersVisible() || this.cellWeekNumbersVisible;\r\n };\r\n DayGrid.prototype.getIsDayNumbersVisible = function () {\r\n return this.rowCnt > 1;\r\n };\r\n /* Grid Number Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.renderNumberTrHtml = function (row) {\r\n return '' +\r\n '' +\r\n (this.isRTL ? '' : this.renderNumberIntroHtml(row)) +\r\n this.renderNumberCellsHtml(row) +\r\n (this.isRTL ? this.renderNumberIntroHtml(row) : '') +\r\n '';\r\n };\r\n DayGrid.prototype.renderNumberIntroHtml = function (row) {\r\n return this.renderIntroHtml();\r\n };\r\n DayGrid.prototype.renderNumberCellsHtml = function (row) {\r\n var htmls = [];\r\n var col;\r\n var date;\r\n for (col = 0; col < this.colCnt; col++) {\r\n date = this.getCellDate(row, col);\r\n htmls.push(this.renderNumberCellHtml(date));\r\n }\r\n return htmls.join('');\r\n };\r\n // Generates the HTML for the s of the \"number\" row in the DayGrid's content skeleton.\r\n // The number row will only exist if either day numbers or week numbers are turned on.\r\n DayGrid.prototype.renderNumberCellHtml = function (date) {\r\n var view = this.view;\r\n var html = '';\r\n var isDateValid = this.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.\r\n var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid;\r\n var classes;\r\n var weekCalcFirstDoW;\r\n if (!isDayNumberVisible && !this.cellWeekNumbersVisible) {\r\n // no numbers in day cell (week number must be along the side)\r\n return ''; // will create an empty space above events :(\r\n }\r\n classes = this.getDayClasses(date);\r\n classes.unshift('fc-day-top');\r\n if (this.cellWeekNumbersVisible) {\r\n // To determine the day of week number change under ISO, we cannot\r\n // rely on moment.js methods such as firstDayOfWeek() or weekday(),\r\n // because they rely on the locale's dow (possibly overridden by\r\n // our firstDay option), which may not be Monday. We cannot change\r\n // dow, because that would affect the calendar start day as well.\r\n if (date._locale._fullCalendar_weekCalc === 'ISO') {\r\n weekCalcFirstDoW = 1; // Monday by ISO 8601 definition\r\n }\r\n else {\r\n weekCalcFirstDoW = date._locale.firstDayOfWeek();\r\n }\r\n }\r\n html += '';\r\n if (this.cellWeekNumbersVisible && (date.day() === weekCalcFirstDoW)) {\r\n html += view.buildGotoAnchorHtml({ date: date, type: 'week' }, { 'class': 'fc-week-number' }, date.format('w') // inner HTML\r\n );\r\n }\r\n if (isDayNumberVisible) {\r\n html += view.buildGotoAnchorHtml(date, { 'class': 'fc-day-number' }, date.format('D') // inner HTML\r\n );\r\n }\r\n html += '';\r\n return html;\r\n };\r\n /* Hit System\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.prepareHits = function () {\r\n this.colCoordCache.build();\r\n this.rowCoordCache.build();\r\n this.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack\r\n };\r\n DayGrid.prototype.releaseHits = function () {\r\n this.colCoordCache.clear();\r\n this.rowCoordCache.clear();\r\n };\r\n DayGrid.prototype.queryHit = function (leftOffset, topOffset) {\r\n if (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) {\r\n var col = this.colCoordCache.getHorizontalIndex(leftOffset);\r\n var row = this.rowCoordCache.getVerticalIndex(topOffset);\r\n if (row != null && col != null) {\r\n return this.getCellHit(row, col);\r\n }\r\n }\r\n };\r\n DayGrid.prototype.getHitFootprint = function (hit) {\r\n var range = this.getCellRange(hit.row, hit.col);\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(range.start, range.end), true // all-day?\r\n );\r\n };\r\n DayGrid.prototype.getHitEl = function (hit) {\r\n return this.getCellEl(hit.row, hit.col);\r\n };\r\n /* Cell System\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // FYI: the first column is the leftmost column, regardless of date\r\n DayGrid.prototype.getCellHit = function (row, col) {\r\n return {\r\n row: row,\r\n col: col,\r\n component: this,\r\n left: this.colCoordCache.getLeftOffset(col),\r\n right: this.colCoordCache.getRightOffset(col),\r\n top: this.rowCoordCache.getTopOffset(row),\r\n bottom: this.rowCoordCache.getBottomOffset(row)\r\n };\r\n };\r\n DayGrid.prototype.getCellEl = function (row, col) {\r\n return this.cellEls.eq(row * this.colCnt + col);\r\n };\r\n /* Event Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Unrenders all events currently rendered on the grid\r\n DayGrid.prototype.executeEventUnrender = function () {\r\n this.removeSegPopover(); // removes the \"more..\" events popover\r\n _super.prototype.executeEventUnrender.call(this);\r\n };\r\n // Retrieves all rendered segment objects currently rendered on the grid\r\n DayGrid.prototype.getOwnEventSegs = function () {\r\n // append the segments from the \"more...\" popover\r\n return _super.prototype.getOwnEventSegs.call(this).concat(this.popoverSegs || []);\r\n };\r\n /* Event Drag Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event or external element being dragged.\r\n // `eventLocation` has zoned start and end (optional)\r\n DayGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n this.renderHighlight(eventFootprints[i].componentFootprint);\r\n }\r\n // render drags from OTHER components as helpers\r\n if (eventFootprints.length && seg && seg.component !== this) {\r\n this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch);\r\n return true; // signal helpers rendered\r\n }\r\n };\r\n // Unrenders any visual indication of a hovering event\r\n DayGrid.prototype.unrenderDrag = function () {\r\n this.unrenderHighlight();\r\n this.helperRenderer.unrender();\r\n };\r\n /* Event Resize Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event being resized\r\n DayGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n this.renderHighlight(eventFootprints[i].componentFootprint);\r\n }\r\n this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch);\r\n };\r\n // Unrenders a visual indication of an event being resized\r\n DayGrid.prototype.unrenderEventResize = function () {\r\n this.unrenderHighlight();\r\n this.helperRenderer.unrender();\r\n };\r\n /* More+ Link Popover\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DayGrid.prototype.removeSegPopover = function () {\r\n if (this.segPopover) {\r\n this.segPopover.hide(); // in handler, will call segPopover's removeElement\r\n }\r\n };\r\n // Limits the number of \"levels\" (vertically stacking layers of events) for each row of the grid.\r\n // `levelLimit` can be false (don't limit), a number, or true (should be computed).\r\n DayGrid.prototype.limitRows = function (levelLimit) {\r\n var rowStructs = this.eventRenderer.rowStructs || [];\r\n var row; // row #\r\n var rowLevelLimit;\r\n for (row = 0; row < rowStructs.length; row++) {\r\n this.unlimitRow(row);\r\n if (!levelLimit) {\r\n rowLevelLimit = false;\r\n }\r\n else if (typeof levelLimit === 'number') {\r\n rowLevelLimit = levelLimit;\r\n }\r\n else {\r\n rowLevelLimit = this.computeRowLevelLimit(row);\r\n }\r\n if (rowLevelLimit !== false) {\r\n this.limitRow(row, rowLevelLimit);\r\n }\r\n }\r\n };\r\n // Computes the number of levels a row will accomodate without going outside its bounds.\r\n // Assumes the row is \"rigid\" (maintains a constant height regardless of what is inside).\r\n // `row` is the row number.\r\n DayGrid.prototype.computeRowLevelLimit = function (row) {\r\n var rowEl = this.rowEls.eq(row); // the containing \"fake\" row div\r\n var rowHeight = rowEl.height(); // TODO: cache somehow?\r\n var trEls = this.eventRenderer.rowStructs[row].tbodyEl.children();\r\n var i;\r\n var trEl;\r\n var trHeight;\r\n function iterInnerHeights(i, childNode) {\r\n trHeight = Math.max(trHeight, $(childNode).outerHeight());\r\n }\r\n // Reveal one level at a time and stop when we find one out of bounds\r\n for (i = 0; i < trEls.length; i++) {\r\n trEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal)\r\n // with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell,\r\n // so instead, find the tallest inner content element.\r\n trHeight = 0;\r\n trEl.find('> td > :first-child').each(iterInnerHeights);\r\n if (trEl.position().top + trHeight > rowHeight) {\r\n return i;\r\n }\r\n }\r\n return false; // should not limit at all\r\n };\r\n // Limits the given grid row to the maximum number of levels and injects \"more\" links if necessary.\r\n // `row` is the row number.\r\n // `levelLimit` is a number for the maximum (inclusive) number of levels allowed.\r\n DayGrid.prototype.limitRow = function (row, levelLimit) {\r\n var _this = this;\r\n var rowStruct = this.eventRenderer.rowStructs[row];\r\n var moreNodes = []; // array of \"more\" links and DOM nodes\r\n var col = 0; // col #, left-to-right (not chronologically)\r\n var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right\r\n var cellMatrix; // a matrix (by level, then column) of all jQuery elements in the row\r\n var limitedNodes; // array of temporarily hidden level and segment DOM nodes\r\n var i;\r\n var seg;\r\n var segsBelow; // array of segment objects below `seg` in the current `col`\r\n var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies\r\n var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)\r\n var td;\r\n var rowspan;\r\n var segMoreNodes; // array of \"more\" cells that will stand-in for the current seg's cell\r\n var j;\r\n var moreTd;\r\n var moreWrap;\r\n var moreLink;\r\n // Iterates through empty level cells and places \"more\" links inside if need be\r\n var emptyCellsUntil = function (endCol) {\r\n while (col < endCol) {\r\n segsBelow = _this.getCellSegs(row, col, levelLimit);\r\n if (segsBelow.length) {\r\n td = cellMatrix[levelLimit - 1][col];\r\n moreLink = _this.renderMoreLink(row, col, segsBelow);\r\n moreWrap = $('
').append(moreLink);\r\n td.append(moreWrap);\r\n moreNodes.push(moreWrap[0]);\r\n }\r\n col++;\r\n }\r\n };\r\n if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?\r\n levelSegs = rowStruct.segLevels[levelLimit - 1];\r\n cellMatrix = rowStruct.cellMatrix;\r\n limitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level elements past the limit\r\n .addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array\r\n // iterate though segments in the last allowable level\r\n for (i = 0; i < levelSegs.length; i++) {\r\n seg = levelSegs[i];\r\n emptyCellsUntil(seg.leftCol); // process empty cells before the segment\r\n // determine *all* segments below `seg` that occupy the same columns\r\n colSegsBelow = [];\r\n totalSegsBelow = 0;\r\n while (col <= seg.rightCol) {\r\n segsBelow = this.getCellSegs(row, col, levelLimit);\r\n colSegsBelow.push(segsBelow);\r\n totalSegsBelow += segsBelow.length;\r\n col++;\r\n }\r\n if (totalSegsBelow) { // do we need to replace this segment with one or many \"more\" links?\r\n td = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell\r\n rowspan = td.attr('rowspan') || 1;\r\n segMoreNodes = [];\r\n // make a replacement for each column the segment occupies. will be one for each colspan\r\n for (j = 0; j < colSegsBelow.length; j++) {\r\n moreTd = $('').attr('rowspan', rowspan);\r\n segsBelow = colSegsBelow[j];\r\n moreLink = this.renderMoreLink(row, seg.leftCol + j, [seg].concat(segsBelow) // count seg as hidden too\r\n );\r\n moreWrap = $('
').append(moreLink);\r\n moreTd.append(moreWrap);\r\n segMoreNodes.push(moreTd[0]);\r\n moreNodes.push(moreTd[0]);\r\n }\r\n td.addClass('fc-limited').after($(segMoreNodes)); // hide original and inject replacements\r\n limitedNodes.push(td[0]);\r\n }\r\n }\r\n emptyCellsUntil(this.colCnt); // finish off the level\r\n rowStruct.moreEls = $(moreNodes); // for easy undoing later\r\n rowStruct.limitedEls = $(limitedNodes); // for easy undoing later\r\n }\r\n };\r\n // Reveals all levels and removes all \"more\"-related elements for a grid's row.\r\n // `row` is a row number.\r\n DayGrid.prototype.unlimitRow = function (row) {\r\n var rowStruct = this.eventRenderer.rowStructs[row];\r\n if (rowStruct.moreEls) {\r\n rowStruct.moreEls.remove();\r\n rowStruct.moreEls = null;\r\n }\r\n if (rowStruct.limitedEls) {\r\n rowStruct.limitedEls.removeClass('fc-limited');\r\n rowStruct.limitedEls = null;\r\n }\r\n };\r\n // Renders an element that represents hidden event element for a cell.\r\n // Responsible for attaching click handler as well.\r\n DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) {\r\n var _this = this;\r\n var view = this.view;\r\n return $('')\r\n .text(this.getMoreLinkText(hiddenSegs.length))\r\n .on('click', function (ev) {\r\n var clickOption = _this.opt('eventLimitClick');\r\n var date = _this.getCellDate(row, col);\r\n var moreEl = $(ev.currentTarget);\r\n var dayEl = _this.getCellEl(row, col);\r\n var allSegs = _this.getCellSegs(row, col);\r\n // rescope the segments to be within the cell's date\r\n var reslicedAllSegs = _this.resliceDaySegs(allSegs, date);\r\n var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);\r\n if (typeof clickOption === 'function') {\r\n // the returned value can be an atomic option\r\n clickOption = _this.publiclyTrigger('eventLimitClick', {\r\n context: view,\r\n args: [\r\n {\r\n date: date.clone(),\r\n dayEl: dayEl,\r\n moreEl: moreEl,\r\n segs: reslicedAllSegs,\r\n hiddenSegs: reslicedHiddenSegs\r\n },\r\n ev,\r\n view\r\n ]\r\n });\r\n }\r\n if (clickOption === 'popover') {\r\n _this.showSegPopover(row, col, moreEl, reslicedAllSegs);\r\n }\r\n else if (typeof clickOption === 'string') { // a view name\r\n view.calendar.zoomTo(date, clickOption);\r\n }\r\n });\r\n };\r\n // Reveals the popover that displays all events within a cell\r\n DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) {\r\n var _this = this;\r\n var view = this.view;\r\n var moreWrap = moreLink.parent(); // the
wrapper around the \r\n var topEl; // the element we want to match the top coordinate of\r\n var options;\r\n if (this.rowCnt === 1) {\r\n topEl = view.el; // will cause the popover to cover any sort of header\r\n }\r\n else {\r\n topEl = this.rowEls.eq(row); // will align with top of row\r\n }\r\n options = {\r\n className: 'fc-more-popover ' + view.calendar.theme.getClass('popover'),\r\n content: this.renderSegPopoverContent(row, col, segs),\r\n parentEl: view.el,\r\n top: topEl.offset().top,\r\n autoHide: true,\r\n viewportConstrain: this.opt('popoverViewportConstrain'),\r\n hide: function () {\r\n // kill everything when the popover is hidden\r\n // notify events to be removed\r\n if (_this.popoverSegs) {\r\n _this.triggerBeforeEventSegsDestroyed(_this.popoverSegs);\r\n }\r\n _this.segPopover.removeElement();\r\n _this.segPopover = null;\r\n _this.popoverSegs = null;\r\n }\r\n };\r\n // Determine horizontal coordinate.\r\n // We use the moreWrap instead of the to avoid border confusion.\r\n if (this.isRTL) {\r\n options.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border\r\n }\r\n else {\r\n options.left = moreWrap.offset().left - 1; // -1 to be over cell border\r\n }\r\n this.segPopover = new Popover_1.default(options);\r\n this.segPopover.show();\r\n // the popover doesn't live within the grid's container element, and thus won't get the event\r\n // delegated-handlers for free. attach event-related handlers to the popover.\r\n this.bindAllSegHandlersToEl(this.segPopover.el);\r\n this.triggerAfterEventSegsRendered(segs);\r\n };\r\n // Builds the inner DOM contents of the segment popover\r\n DayGrid.prototype.renderSegPopoverContent = function (row, col, segs) {\r\n var view = this.view;\r\n var theme = view.calendar.theme;\r\n var title = this.getCellDate(row, col).format(this.opt('dayPopoverFormat'));\r\n var content = $('
' +\r\n '' +\r\n '' +\r\n util_1.htmlEscape(title) +\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
');\r\n var segContainer = content.find('.fc-event-container');\r\n var i;\r\n // render each seg's `el` and only return the visible segs\r\n segs = this.eventRenderer.renderFgSegEls(segs, true); // disableResizing=true\r\n this.popoverSegs = segs;\r\n for (i = 0; i < segs.length; i++) {\r\n // because segments in the popover are not part of a grid coordinate system, provide a hint to any\r\n // grids that want to do drag-n-drop about which cell it came from\r\n this.hitsNeeded();\r\n segs[i].hit = this.getCellHit(row, col);\r\n this.hitsNotNeeded();\r\n segContainer.append(segs[i].el);\r\n }\r\n return content;\r\n };\r\n // Given the events within an array of segment objects, reslice them to be in a single day\r\n DayGrid.prototype.resliceDaySegs = function (segs, dayDate) {\r\n var dayStart = dayDate.clone();\r\n var dayEnd = dayStart.clone().add(1, 'days');\r\n var dayRange = new UnzonedRange_1.default(dayStart, dayEnd);\r\n var newSegs = [];\r\n var i;\r\n var seg;\r\n var slicedRange;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n slicedRange = seg.footprint.componentFootprint.unzonedRange.intersect(dayRange);\r\n if (slicedRange) {\r\n newSegs.push($.extend({}, seg, {\r\n footprint: new EventFootprint_1.default(new ComponentFootprint_1.default(slicedRange, seg.footprint.componentFootprint.isAllDay), seg.footprint.eventDef, seg.footprint.eventInstance),\r\n isStart: seg.isStart && slicedRange.isStart,\r\n isEnd: seg.isEnd && slicedRange.isEnd\r\n }));\r\n }\r\n }\r\n // force an order because eventsToSegs doesn't guarantee one\r\n // TODO: research if still needed\r\n this.eventRenderer.sortEventSegs(newSegs);\r\n return newSegs;\r\n };\r\n // Generates the text that should be inside a \"more\" link, given the number of events it represents\r\n DayGrid.prototype.getMoreLinkText = function (num) {\r\n var opt = this.opt('eventLimitText');\r\n if (typeof opt === 'function') {\r\n return opt(num);\r\n }\r\n else {\r\n return '+' + num + ' ' + opt;\r\n }\r\n };\r\n // Returns segments within a given cell.\r\n // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.\r\n DayGrid.prototype.getCellSegs = function (row, col, startLevel) {\r\n var segMatrix = this.eventRenderer.rowStructs[row].segMatrix;\r\n var level = startLevel || 0;\r\n var segs = [];\r\n var seg;\r\n while (level < segMatrix.length) {\r\n seg = segMatrix[level][col];\r\n if (seg) {\r\n segs.push(seg);\r\n }\r\n level++;\r\n }\r\n return segs;\r\n };\r\n return DayGrid;\r\n}(InteractiveDateComponent_1.default));\r\nexports.default = DayGrid;\r\nDayGrid.prototype.eventRendererClass = DayGridEventRenderer_1.default;\r\nDayGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default;\r\nDayGrid.prototype.helperRendererClass = DayGridHelperRenderer_1.default;\r\nDayGrid.prototype.fillRendererClass = DayGridFillRenderer_1.default;\r\nStandardInteractionsMixin_1.default.mixInto(DayGrid);\r\nDayTableMixin_1.default.mixInto(DayGrid);\r\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Scroller_1 = __webpack_require__(41);\r\nvar View_1 = __webpack_require__(43);\r\nvar BasicViewDateProfileGenerator_1 = __webpack_require__(68);\r\nvar DayGrid_1 = __webpack_require__(66);\r\n/* An abstract class for the \"basic\" views, as well as month view. Renders one or more rows of day cells.\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.\r\n// It is responsible for managing width/height.\r\nvar BasicView = /** @class */ (function (_super) {\r\n tslib_1.__extends(BasicView, _super);\r\n function BasicView(calendar, viewSpec) {\r\n var _this = _super.call(this, calendar, viewSpec) || this;\r\n _this.dayGrid = _this.instantiateDayGrid();\r\n _this.dayGrid.isRigid = _this.hasRigidRows();\r\n if (_this.opt('weekNumbers')) {\r\n if (_this.opt('weekNumbersWithinDays')) {\r\n _this.dayGrid.cellWeekNumbersVisible = true;\r\n _this.dayGrid.colWeekNumbersVisible = false;\r\n }\r\n else {\r\n _this.dayGrid.cellWeekNumbersVisible = false;\r\n _this.dayGrid.colWeekNumbersVisible = true;\r\n }\r\n }\r\n _this.addChild(_this.dayGrid);\r\n _this.scroller = new Scroller_1.default({\r\n overflowX: 'hidden',\r\n overflowY: 'auto'\r\n });\r\n return _this;\r\n }\r\n // Generates the DayGrid object this view needs. Draws from this.dayGridClass\r\n BasicView.prototype.instantiateDayGrid = function () {\r\n // generate a subclass on the fly with BasicView-specific behavior\r\n // TODO: cache this subclass\r\n var subclass = makeDayGridSubclass(this.dayGridClass);\r\n return new subclass(this);\r\n };\r\n BasicView.prototype.executeDateRender = function (dateProfile) {\r\n this.dayGrid.breakOnWeeks = /year|month|week/.test(dateProfile.currentRangeUnit);\r\n _super.prototype.executeDateRender.call(this, dateProfile);\r\n };\r\n BasicView.prototype.renderSkeleton = function () {\r\n var dayGridContainerEl;\r\n var dayGridEl;\r\n this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml());\r\n this.scroller.render();\r\n dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container');\r\n dayGridEl = $('
').appendTo(dayGridContainerEl);\r\n this.el.find('.fc-body > tr > td').append(dayGridContainerEl);\r\n this.dayGrid.headContainerEl = this.el.find('.fc-head-container');\r\n this.dayGrid.setElement(dayGridEl);\r\n };\r\n BasicView.prototype.unrenderSkeleton = function () {\r\n this.dayGrid.removeElement();\r\n this.scroller.destroy();\r\n };\r\n // Builds the HTML skeleton for the view.\r\n // The day-grid component will render inside of a container defined by this HTML.\r\n BasicView.prototype.renderSkeletonHtml = function () {\r\n var theme = this.calendar.theme;\r\n return '' +\r\n '' +\r\n (this.opt('columnHeader') ?\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' :\r\n '') +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
 
';\r\n };\r\n // Generates an HTML attribute string for setting the width of the week number column, if it is known\r\n BasicView.prototype.weekNumberStyleAttr = function () {\r\n if (this.weekNumberWidth != null) {\r\n return 'style=\"width:' + this.weekNumberWidth + 'px\"';\r\n }\r\n return '';\r\n };\r\n // Determines whether each row should have a constant height\r\n BasicView.prototype.hasRigidRows = function () {\r\n var eventLimit = this.opt('eventLimit');\r\n return eventLimit && typeof eventLimit !== 'number';\r\n };\r\n /* Dimensions\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Refreshes the horizontal dimensions of the view\r\n BasicView.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n var eventLimit = this.opt('eventLimit');\r\n var headRowEl = this.dayGrid.headContainerEl.find('.fc-row');\r\n var scrollerHeight;\r\n var scrollbarWidths;\r\n // hack to give the view some height prior to dayGrid's columns being rendered\r\n // TODO: separate setting height from scroller VS dayGrid.\r\n if (!this.dayGrid.rowEls) {\r\n if (!isAuto) {\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n return;\r\n }\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n if (this.dayGrid.colWeekNumbersVisible) {\r\n // Make sure all week number cells running down the side have the same width.\r\n // Record the width for cells created later.\r\n this.weekNumberWidth = util_1.matchCellWidths(this.el.find('.fc-week-number'));\r\n }\r\n // reset all heights to be natural\r\n this.scroller.clear();\r\n util_1.uncompensateScroll(headRowEl);\r\n this.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\r\n // is the event limit a constant level number?\r\n if (eventLimit && typeof eventLimit === 'number') {\r\n this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after\r\n }\r\n // distribute the height to the rows\r\n // (totalHeight is a \"recommended\" value if isAuto)\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.setGridHeight(scrollerHeight, isAuto);\r\n // is the event limit dynamically calculated?\r\n if (eventLimit && typeof eventLimit !== 'number') {\r\n this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set\r\n }\r\n if (!isAuto) { // should we force dimensions of the scroll container?\r\n this.scroller.setHeight(scrollerHeight);\r\n scrollbarWidths = this.scroller.getScrollbarWidths();\r\n if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\r\n util_1.compensateScroll(headRowEl, scrollbarWidths);\r\n // doing the scrollbar compensation might have created text overflow which created more height. redo\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n // guarantees the same scrollbar widths\r\n this.scroller.lockOverflow(scrollbarWidths);\r\n }\r\n };\r\n // given a desired total height of the view, returns what the height of the scroller should be\r\n BasicView.prototype.computeScrollerHeight = function (totalHeight) {\r\n return totalHeight -\r\n util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\r\n };\r\n // Sets the height of just the DayGrid component in this view\r\n BasicView.prototype.setGridHeight = function (height, isAuto) {\r\n if (isAuto) {\r\n util_1.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding\r\n }\r\n else {\r\n util_1.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows\r\n }\r\n };\r\n /* Scroll\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n BasicView.prototype.computeInitialDateScroll = function () {\r\n return { top: 0 };\r\n };\r\n BasicView.prototype.queryDateScroll = function () {\r\n return { top: this.scroller.getScrollTop() };\r\n };\r\n BasicView.prototype.applyDateScroll = function (scroll) {\r\n if (scroll.top !== undefined) {\r\n this.scroller.setScrollTop(scroll.top);\r\n }\r\n };\r\n return BasicView;\r\n}(View_1.default));\r\nexports.default = BasicView;\r\nBasicView.prototype.dateProfileGeneratorClass = BasicViewDateProfileGenerator_1.default;\r\nBasicView.prototype.dayGridClass = DayGrid_1.default;\r\n// customize the rendering behavior of BasicView's dayGrid\r\nfunction makeDayGridSubclass(SuperClass) {\r\n return /** @class */ (function (_super) {\r\n tslib_1.__extends(SubClass, _super);\r\n function SubClass() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.colWeekNumbersVisible = false; // display week numbers along the side?\r\n return _this;\r\n }\r\n // Generates the HTML that will go before the day-of week header cells\r\n SubClass.prototype.renderHeadIntroHtml = function () {\r\n var view = this.view;\r\n if (this.colWeekNumbersVisible) {\r\n return '' +\r\n '' +\r\n '' + // needed for matchCellWidths\r\n util_1.htmlEscape(this.opt('weekNumberTitle')) +\r\n '' +\r\n '';\r\n }\r\n return '';\r\n };\r\n // Generates the HTML that will go before content-skeleton cells that display the day/week numbers\r\n SubClass.prototype.renderNumberIntroHtml = function (row) {\r\n var view = this.view;\r\n var weekStart = this.getCellDate(row, 0);\r\n if (this.colWeekNumbersVisible) {\r\n return '' +\r\n '' +\r\n view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths\r\n { date: weekStart, type: 'week', forceOff: this.colCnt === 1 }, weekStart.format('w') // inner HTML\r\n ) +\r\n '';\r\n }\r\n return '';\r\n };\r\n // Generates the HTML that goes before the day bg cells for each day-row\r\n SubClass.prototype.renderBgIntroHtml = function () {\r\n var view = this.view;\r\n if (this.colWeekNumbersVisible) {\r\n return '';\r\n }\r\n return '';\r\n };\r\n // Generates the HTML that goes before every other type of row generated by DayGrid.\r\n // Affects helper-skeleton and highlight-skeleton rows.\r\n SubClass.prototype.renderIntroHtml = function () {\r\n var view = this.view;\r\n if (this.colWeekNumbersVisible) {\r\n return '';\r\n }\r\n return '';\r\n };\r\n SubClass.prototype.getIsNumbersVisible = function () {\r\n return DayGrid_1.default.prototype.getIsNumbersVisible.apply(this, arguments) || this.colWeekNumbersVisible;\r\n };\r\n return SubClass;\r\n }(SuperClass));\r\n}\r\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar DateProfileGenerator_1 = __webpack_require__(55);\r\nvar BasicViewDateProfileGenerator = /** @class */ (function (_super) {\r\n tslib_1.__extends(BasicViewDateProfileGenerator, _super);\r\n function BasicViewDateProfileGenerator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Computes the date range that will be rendered.\r\n BasicViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {\r\n var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay); // an UnzonedRange\r\n var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay);\r\n var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay);\r\n // year and month views should be aligned with weeks. this is already done for week\r\n if (/^(year|month)$/.test(currentRangeUnit)) {\r\n start.startOf('week');\r\n // make end-of-week if not already\r\n if (end.weekday()) {\r\n end.add(1, 'week').startOf('week'); // exclusively move backwards\r\n }\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n return BasicViewDateProfileGenerator;\r\n}(DateProfileGenerator_1.default));\r\nexports.default = BasicViewDateProfileGenerator;\r\n\n\n/***/ }),\n/* 69 */,\n/* 70 */,\n/* 71 */,\n/* 72 */,\n/* 73 */,\n/* 74 */,\n/* 75 */,\n/* 76 */,\n/* 77 */,\n/* 78 */,\n/* 79 */,\n/* 80 */,\n/* 81 */,\n/* 82 */,\n/* 83 */,\n/* 84 */,\n/* 85 */,\n/* 86 */,\n/* 87 */,\n/* 88 */,\n/* 89 */,\n/* 90 */,\n/* 91 */,\n/* 92 */,\n/* 93 */,\n/* 94 */,\n/* 95 */,\n/* 96 */,\n/* 97 */,\n/* 98 */,\n/* 99 */,\n/* 100 */,\n/* 101 */,\n/* 102 */,\n/* 103 */,\n/* 104 */,\n/* 105 */,\n/* 106 */,\n/* 107 */,\n/* 108 */,\n/* 109 */,\n/* 110 */,\n/* 111 */,\n/* 112 */,\n/* 113 */,\n/* 114 */,\n/* 115 */,\n/* 116 */,\n/* 117 */,\n/* 118 */,\n/* 119 */,\n/* 120 */,\n/* 121 */,\n/* 122 */,\n/* 123 */,\n/* 124 */,\n/* 125 */,\n/* 126 */,\n/* 127 */,\n/* 128 */,\n/* 129 */,\n/* 130 */,\n/* 131 */,\n/* 132 */,\n/* 133 */,\n/* 134 */,\n/* 135 */,\n/* 136 */,\n/* 137 */,\n/* 138 */,\n/* 139 */,\n/* 140 */,\n/* 141 */,\n/* 142 */,\n/* 143 */,\n/* 144 */,\n/* 145 */,\n/* 146 */,\n/* 147 */,\n/* 148 */,\n/* 149 */,\n/* 150 */,\n/* 151 */,\n/* 152 */,\n/* 153 */,\n/* 154 */,\n/* 155 */,\n/* 156 */,\n/* 157 */,\n/* 158 */,\n/* 159 */,\n/* 160 */,\n/* 161 */,\n/* 162 */,\n/* 163 */,\n/* 164 */,\n/* 165 */,\n/* 166 */,\n/* 167 */,\n/* 168 */,\n/* 169 */,\n/* 170 */,\n/* 171 */,\n/* 172 */,\n/* 173 */,\n/* 174 */,\n/* 175 */,\n/* 176 */,\n/* 177 */,\n/* 178 */,\n/* 179 */,\n/* 180 */,\n/* 181 */,\n/* 182 */,\n/* 183 */,\n/* 184 */,\n/* 185 */,\n/* 186 */,\n/* 187 */,\n/* 188 */,\n/* 189 */,\n/* 190 */,\n/* 191 */,\n/* 192 */,\n/* 193 */,\n/* 194 */,\n/* 195 */,\n/* 196 */,\n/* 197 */,\n/* 198 */,\n/* 199 */,\n/* 200 */,\n/* 201 */,\n/* 202 */,\n/* 203 */,\n/* 204 */,\n/* 205 */,\n/* 206 */,\n/* 207 */,\n/* 208 */,\n/* 209 */,\n/* 210 */,\n/* 211 */,\n/* 212 */,\n/* 213 */,\n/* 214 */,\n/* 215 */,\n/* 216 */,\n/* 217 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar util_1 = __webpack_require__(19);\r\nvar Constraints = /** @class */ (function () {\r\n function Constraints(eventManager, _calendar) {\r\n this.eventManager = eventManager;\r\n this._calendar = _calendar;\r\n }\r\n Constraints.prototype.opt = function (name) {\r\n return this._calendar.opt(name);\r\n };\r\n /*\r\n determines if eventInstanceGroup is allowed,\r\n in relation to other EVENTS and business hours.\r\n */\r\n Constraints.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) {\r\n var eventDef = eventInstanceGroup.getEventDef();\r\n var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());\r\n var i;\r\n var peerEventInstances = this.getPeerEventInstances(eventDef);\r\n var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange);\r\n var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges);\r\n var constraintVal = eventDef.getConstraint();\r\n var overlapVal = eventDef.getOverlap();\r\n var eventAllowFunc = this.opt('eventAllow');\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (!this.isFootprintAllowed(eventFootprints[i].componentFootprint, peerEventFootprints, constraintVal, overlapVal, eventFootprints[i].eventInstance)) {\r\n return false;\r\n }\r\n }\r\n if (eventAllowFunc) {\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (eventAllowFunc(eventFootprints[i].componentFootprint.toLegacy(this._calendar), eventFootprints[i].getEventLegacy()) === false) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n Constraints.prototype.getPeerEventInstances = function (eventDef) {\r\n return this.eventManager.getEventInstancesWithoutId(eventDef.id);\r\n };\r\n Constraints.prototype.isSelectionFootprintAllowed = function (componentFootprint) {\r\n var peerEventInstances = this.eventManager.getEventInstances();\r\n var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange);\r\n var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges);\r\n var selectAllowFunc;\r\n if (this.isFootprintAllowed(componentFootprint, peerEventFootprints, this.opt('selectConstraint'), this.opt('selectOverlap'))) {\r\n selectAllowFunc = this.opt('selectAllow');\r\n if (selectAllowFunc) {\r\n return selectAllowFunc(componentFootprint.toLegacy(this._calendar)) !== false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Constraints.prototype.isFootprintAllowed = function (componentFootprint, peerEventFootprints, constraintVal, overlapVal, subjectEventInstance // optional\r\n ) {\r\n var constraintFootprints; // ComponentFootprint[]\r\n var overlapEventFootprints; // EventFootprint[]\r\n if (constraintVal != null) {\r\n constraintFootprints = this.constraintValToFootprints(constraintVal, componentFootprint.isAllDay);\r\n if (!this.isFootprintWithinConstraints(componentFootprint, constraintFootprints)) {\r\n return false;\r\n }\r\n }\r\n overlapEventFootprints = this.collectOverlapEventFootprints(peerEventFootprints, componentFootprint);\r\n if (overlapVal === false) {\r\n if (overlapEventFootprints.length) {\r\n return false;\r\n }\r\n }\r\n else if (typeof overlapVal === 'function') {\r\n if (!isOverlapsAllowedByFunc(overlapEventFootprints, overlapVal, subjectEventInstance)) {\r\n return false;\r\n }\r\n }\r\n if (subjectEventInstance) {\r\n if (!isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n // Constraint\r\n // ------------------------------------------------------------------------------------------------\r\n Constraints.prototype.isFootprintWithinConstraints = function (componentFootprint, constraintFootprints) {\r\n var i;\r\n for (i = 0; i < constraintFootprints.length; i++) {\r\n if (this.footprintContainsFootprint(constraintFootprints[i], componentFootprint)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Constraints.prototype.constraintValToFootprints = function (constraintVal, isAllDay) {\r\n var eventInstances;\r\n if (constraintVal === 'businessHours') {\r\n return this.buildCurrentBusinessFootprints(isAllDay);\r\n }\r\n else if (typeof constraintVal === 'object') {\r\n eventInstances = this.parseEventDefToInstances(constraintVal); // handles recurring events\r\n if (!eventInstances) { // invalid input. fallback to parsing footprint directly\r\n return this.parseFootprints(constraintVal);\r\n }\r\n else {\r\n return this.eventInstancesToFootprints(eventInstances);\r\n }\r\n }\r\n else if (constraintVal != null) { // an ID\r\n eventInstances = this.eventManager.getEventInstancesWithId(constraintVal);\r\n return this.eventInstancesToFootprints(eventInstances);\r\n }\r\n };\r\n // returns ComponentFootprint[]\r\n // uses current view's range\r\n Constraints.prototype.buildCurrentBusinessFootprints = function (isAllDay) {\r\n var view = this._calendar.view;\r\n var businessHourGenerator = view.get('businessHourGenerator');\r\n var unzonedRange = view.dateProfile.activeUnzonedRange;\r\n var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(isAllDay, unzonedRange);\r\n if (eventInstanceGroup) {\r\n return this.eventInstancesToFootprints(eventInstanceGroup.eventInstances);\r\n }\r\n else {\r\n return [];\r\n }\r\n };\r\n // conversion util\r\n Constraints.prototype.eventInstancesToFootprints = function (eventInstances) {\r\n var eventRanges = eventInstances.map(util_1.eventInstanceToEventRange);\r\n var eventFootprints = this.eventRangesToEventFootprints(eventRanges);\r\n return eventFootprints.map(util_1.eventFootprintToComponentFootprint);\r\n };\r\n // Overlap\r\n // ------------------------------------------------------------------------------------------------\r\n Constraints.prototype.collectOverlapEventFootprints = function (peerEventFootprints, targetFootprint) {\r\n var overlapEventFootprints = [];\r\n var i;\r\n for (i = 0; i < peerEventFootprints.length; i++) {\r\n if (this.footprintsIntersect(targetFootprint, peerEventFootprints[i].componentFootprint)) {\r\n overlapEventFootprints.push(peerEventFootprints[i]);\r\n }\r\n }\r\n return overlapEventFootprints;\r\n };\r\n // Conversion: eventDefs -> eventInstances -> eventRanges -> eventFootprints -> componentFootprints\r\n // ------------------------------------------------------------------------------------------------\r\n // NOTE: this might seem like repetitive code with the Grid class, however, this code is related to\r\n // constraints whereas the Grid code is related to rendering. Each approach might want to convert\r\n // eventRanges -> eventFootprints in a different way. Regardless, there are opportunities to make\r\n // this more DRY.\r\n /*\r\n Returns false on invalid input.\r\n */\r\n Constraints.prototype.parseEventDefToInstances = function (eventInput) {\r\n var eventManager = this.eventManager;\r\n var eventDef = EventDefParser_1.default.parse(eventInput, new EventSource_1.default(this._calendar));\r\n if (!eventDef) { // invalid\r\n return false;\r\n }\r\n return eventDef.buildInstances(eventManager.currentPeriod.unzonedRange);\r\n };\r\n Constraints.prototype.eventRangesToEventFootprints = function (eventRanges) {\r\n var i;\r\n var eventFootprints = [];\r\n for (i = 0; i < eventRanges.length; i++) {\r\n eventFootprints.push.apply(// footprints\r\n eventFootprints, this.eventRangeToEventFootprints(eventRanges[i]));\r\n }\r\n return eventFootprints;\r\n };\r\n Constraints.prototype.eventRangeToEventFootprints = function (eventRange) {\r\n return [util_1.eventRangeToEventFootprint(eventRange)];\r\n };\r\n /*\r\n Parses footprints directly.\r\n Very similar to EventDateProfile::parse :(\r\n */\r\n Constraints.prototype.parseFootprints = function (rawInput) {\r\n var start;\r\n var end;\r\n if (rawInput.start) {\r\n start = this._calendar.moment(rawInput.start);\r\n if (!start.isValid()) {\r\n start = null;\r\n }\r\n }\r\n if (rawInput.end) {\r\n end = this._calendar.moment(rawInput.end);\r\n if (!end.isValid()) {\r\n end = null;\r\n }\r\n }\r\n return [\r\n new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), (start && !start.hasTime()) || (end && !end.hasTime()) // isAllDay\r\n )\r\n ];\r\n };\r\n // Footprint Utils\r\n // ----------------------------------------------------------------------------------------\r\n Constraints.prototype.footprintContainsFootprint = function (outerFootprint, innerFootprint) {\r\n return outerFootprint.unzonedRange.containsRange(innerFootprint.unzonedRange);\r\n };\r\n Constraints.prototype.footprintsIntersect = function (footprint0, footprint1) {\r\n return footprint0.unzonedRange.intersectsWith(footprint1.unzonedRange);\r\n };\r\n return Constraints;\r\n}());\r\nexports.default = Constraints;\r\n// optional subjectEventInstance\r\nfunction isOverlapsAllowedByFunc(overlapEventFootprints, overlapFunc, subjectEventInstance) {\r\n var i;\r\n for (i = 0; i < overlapEventFootprints.length; i++) {\r\n if (!overlapFunc(overlapEventFootprints[i].eventInstance.toLegacy(), subjectEventInstance ? subjectEventInstance.toLegacy() : null)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance) {\r\n var subjectLegacyInstance = subjectEventInstance.toLegacy();\r\n var i;\r\n var overlapEventInstance;\r\n var overlapEventDef;\r\n var overlapVal;\r\n for (i = 0; i < overlapEventFootprints.length; i++) {\r\n overlapEventInstance = overlapEventFootprints[i].eventInstance;\r\n overlapEventDef = overlapEventInstance.def;\r\n // don't need to pass in calendar, because don't want to consider global eventOverlap property,\r\n // because we already considered that earlier in the process.\r\n overlapVal = overlapEventDef.getOverlap();\r\n if (overlapVal === false) {\r\n return false;\r\n }\r\n else if (typeof overlapVal === 'function') {\r\n if (!overlapVal(overlapEventInstance.toLegacy(), subjectLegacyInstance)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(19);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar RecurringEventDef_1 = __webpack_require__(54);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar BUSINESS_HOUR_EVENT_DEFAULTS = {\r\n start: '09:00',\r\n end: '17:00',\r\n dow: [1, 2, 3, 4, 5],\r\n rendering: 'inverse-background'\r\n // classNames are defined in businessHoursSegClasses\r\n};\r\nvar BusinessHourGenerator = /** @class */ (function () {\r\n function BusinessHourGenerator(rawComplexDef, calendar) {\r\n this.rawComplexDef = rawComplexDef;\r\n this.calendar = calendar;\r\n }\r\n BusinessHourGenerator.prototype.buildEventInstanceGroup = function (isAllDay, unzonedRange) {\r\n var eventDefs = this.buildEventDefs(isAllDay);\r\n var eventInstanceGroup;\r\n if (eventDefs.length) {\r\n eventInstanceGroup = new EventInstanceGroup_1.default(util_1.eventDefsToEventInstances(eventDefs, unzonedRange));\r\n // so that inverse-background rendering can happen even when no eventRanges in view\r\n eventInstanceGroup.explicitEventDef = eventDefs[0];\r\n return eventInstanceGroup;\r\n }\r\n };\r\n BusinessHourGenerator.prototype.buildEventDefs = function (isAllDay) {\r\n var rawComplexDef = this.rawComplexDef;\r\n var rawDefs = [];\r\n var requireDow = false;\r\n var i;\r\n var defs = [];\r\n if (rawComplexDef === true) {\r\n rawDefs = [{}]; // will get BUSINESS_HOUR_EVENT_DEFAULTS verbatim\r\n }\r\n else if ($.isPlainObject(rawComplexDef)) {\r\n rawDefs = [rawComplexDef];\r\n }\r\n else if ($.isArray(rawComplexDef)) {\r\n rawDefs = rawComplexDef;\r\n requireDow = true; // every sub-definition NEEDS a day-of-week\r\n }\r\n for (i = 0; i < rawDefs.length; i++) {\r\n if (!requireDow || rawDefs[i].dow) {\r\n defs.push(this.buildEventDef(isAllDay, rawDefs[i]));\r\n }\r\n }\r\n return defs;\r\n };\r\n BusinessHourGenerator.prototype.buildEventDef = function (isAllDay, rawDef) {\r\n var fullRawDef = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, rawDef);\r\n if (isAllDay) {\r\n fullRawDef.start = null;\r\n fullRawDef.end = null;\r\n }\r\n return RecurringEventDef_1.default.parse(fullRawDef, new EventSource_1.default(this.calendar) // dummy source\r\n );\r\n };\r\n return BusinessHourGenerator;\r\n}());\r\nexports.default = BusinessHourGenerator;\r\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar EventPeriod = /** @class */ (function () {\r\n function EventPeriod(start, end, timezone) {\r\n this.pendingCnt = 0;\r\n this.freezeDepth = 0;\r\n this.stuntedReleaseCnt = 0;\r\n this.releaseCnt = 0;\r\n this.start = start;\r\n this.end = end;\r\n this.timezone = timezone;\r\n this.unzonedRange = new UnzonedRange_1.default(start.clone().stripZone(), end.clone().stripZone());\r\n this.requestsByUid = {};\r\n this.eventDefsByUid = {};\r\n this.eventDefsById = {};\r\n this.eventInstanceGroupsById = {};\r\n }\r\n EventPeriod.prototype.isWithinRange = function (start, end) {\r\n // TODO: use a range util function?\r\n return !start.isBefore(this.start) && !end.isAfter(this.end);\r\n };\r\n // Requesting and Purging\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.requestSources = function (sources) {\r\n this.freeze();\r\n for (var i = 0; i < sources.length; i++) {\r\n this.requestSource(sources[i]);\r\n }\r\n this.thaw();\r\n };\r\n EventPeriod.prototype.requestSource = function (source) {\r\n var _this = this;\r\n var request = { source: source, status: 'pending', eventDefs: null };\r\n this.requestsByUid[source.uid] = request;\r\n this.pendingCnt += 1;\r\n source.fetch(this.start, this.end, this.timezone).then(function (eventDefs) {\r\n if (request.status !== 'cancelled') {\r\n request.status = 'completed';\r\n request.eventDefs = eventDefs;\r\n _this.addEventDefs(eventDefs);\r\n _this.pendingCnt--;\r\n _this.tryRelease();\r\n }\r\n }, function () {\r\n if (request.status !== 'cancelled') {\r\n request.status = 'failed';\r\n _this.pendingCnt--;\r\n _this.tryRelease();\r\n }\r\n });\r\n };\r\n EventPeriod.prototype.purgeSource = function (source) {\r\n var request = this.requestsByUid[source.uid];\r\n if (request) {\r\n delete this.requestsByUid[source.uid];\r\n if (request.status === 'pending') {\r\n request.status = 'cancelled';\r\n this.pendingCnt--;\r\n this.tryRelease();\r\n }\r\n else if (request.status === 'completed') {\r\n request.eventDefs.forEach(this.removeEventDef.bind(this));\r\n }\r\n }\r\n };\r\n EventPeriod.prototype.purgeAllSources = function () {\r\n var requestsByUid = this.requestsByUid;\r\n var uid;\r\n var request;\r\n var completedCnt = 0;\r\n for (uid in requestsByUid) {\r\n request = requestsByUid[uid];\r\n if (request.status === 'pending') {\r\n request.status = 'cancelled';\r\n }\r\n else if (request.status === 'completed') {\r\n completedCnt++;\r\n }\r\n }\r\n this.requestsByUid = {};\r\n this.pendingCnt = 0;\r\n if (completedCnt) {\r\n this.removeAllEventDefs(); // might release\r\n }\r\n };\r\n // Event Definitions\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.getEventDefByUid = function (eventDefUid) {\r\n return this.eventDefsByUid[eventDefUid];\r\n };\r\n EventPeriod.prototype.getEventDefsById = function (eventDefId) {\r\n var a = this.eventDefsById[eventDefId];\r\n if (a) {\r\n return a.slice(); // clone\r\n }\r\n return [];\r\n };\r\n EventPeriod.prototype.addEventDefs = function (eventDefs) {\r\n for (var i = 0; i < eventDefs.length; i++) {\r\n this.addEventDef(eventDefs[i]);\r\n }\r\n };\r\n EventPeriod.prototype.addEventDef = function (eventDef) {\r\n var eventDefsById = this.eventDefsById;\r\n var eventDefId = eventDef.id;\r\n var eventDefs = eventDefsById[eventDefId] || (eventDefsById[eventDefId] = []);\r\n var eventInstances = eventDef.buildInstances(this.unzonedRange);\r\n var i;\r\n eventDefs.push(eventDef);\r\n this.eventDefsByUid[eventDef.uid] = eventDef;\r\n for (i = 0; i < eventInstances.length; i++) {\r\n this.addEventInstance(eventInstances[i], eventDefId);\r\n }\r\n };\r\n EventPeriod.prototype.removeEventDefsById = function (eventDefId) {\r\n var _this = this;\r\n this.getEventDefsById(eventDefId).forEach(function (eventDef) {\r\n _this.removeEventDef(eventDef);\r\n });\r\n };\r\n EventPeriod.prototype.removeAllEventDefs = function () {\r\n var isEmpty = $.isEmptyObject(this.eventDefsByUid);\r\n this.eventDefsByUid = {};\r\n this.eventDefsById = {};\r\n this.eventInstanceGroupsById = {};\r\n if (!isEmpty) {\r\n this.tryRelease();\r\n }\r\n };\r\n EventPeriod.prototype.removeEventDef = function (eventDef) {\r\n var eventDefsById = this.eventDefsById;\r\n var eventDefs = eventDefsById[eventDef.id];\r\n delete this.eventDefsByUid[eventDef.uid];\r\n if (eventDefs) {\r\n util_1.removeExact(eventDefs, eventDef);\r\n if (!eventDefs.length) {\r\n delete eventDefsById[eventDef.id];\r\n }\r\n this.removeEventInstancesForDef(eventDef);\r\n }\r\n };\r\n // Event Instances\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.getEventInstances = function () {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var eventInstances = [];\r\n var id;\r\n for (id in eventInstanceGroupsById) {\r\n eventInstances.push.apply(eventInstances, // append\r\n eventInstanceGroupsById[id].eventInstances);\r\n }\r\n return eventInstances;\r\n };\r\n EventPeriod.prototype.getEventInstancesWithId = function (eventDefId) {\r\n var eventInstanceGroup = this.eventInstanceGroupsById[eventDefId];\r\n if (eventInstanceGroup) {\r\n return eventInstanceGroup.eventInstances.slice(); // clone\r\n }\r\n return [];\r\n };\r\n EventPeriod.prototype.getEventInstancesWithoutId = function (eventDefId) {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var matchingInstances = [];\r\n var id;\r\n for (id in eventInstanceGroupsById) {\r\n if (id !== eventDefId) {\r\n matchingInstances.push.apply(matchingInstances, // append\r\n eventInstanceGroupsById[id].eventInstances);\r\n }\r\n }\r\n return matchingInstances;\r\n };\r\n EventPeriod.prototype.addEventInstance = function (eventInstance, eventDefId) {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var eventInstanceGroup = eventInstanceGroupsById[eventDefId] ||\r\n (eventInstanceGroupsById[eventDefId] = new EventInstanceGroup_1.default());\r\n eventInstanceGroup.eventInstances.push(eventInstance);\r\n this.tryRelease();\r\n };\r\n EventPeriod.prototype.removeEventInstancesForDef = function (eventDef) {\r\n var eventInstanceGroupsById = this.eventInstanceGroupsById;\r\n var eventInstanceGroup = eventInstanceGroupsById[eventDef.id];\r\n var removeCnt;\r\n if (eventInstanceGroup) {\r\n removeCnt = util_1.removeMatching(eventInstanceGroup.eventInstances, function (currentEventInstance) {\r\n return currentEventInstance.def === eventDef;\r\n });\r\n if (!eventInstanceGroup.eventInstances.length) {\r\n delete eventInstanceGroupsById[eventDef.id];\r\n }\r\n if (removeCnt) {\r\n this.tryRelease();\r\n }\r\n }\r\n };\r\n // Releasing and Freezing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventPeriod.prototype.tryRelease = function () {\r\n if (!this.pendingCnt) {\r\n if (!this.freezeDepth) {\r\n this.release();\r\n }\r\n else {\r\n this.stuntedReleaseCnt++;\r\n }\r\n }\r\n };\r\n EventPeriod.prototype.release = function () {\r\n this.releaseCnt++;\r\n this.trigger('release', this.eventInstanceGroupsById);\r\n };\r\n EventPeriod.prototype.whenReleased = function () {\r\n var _this = this;\r\n if (this.releaseCnt) {\r\n return Promise_1.default.resolve(this.eventInstanceGroupsById);\r\n }\r\n else {\r\n return Promise_1.default.construct(function (onResolve) {\r\n _this.one('release', onResolve);\r\n });\r\n }\r\n };\r\n EventPeriod.prototype.freeze = function () {\r\n if (!(this.freezeDepth++)) {\r\n this.stuntedReleaseCnt = 0;\r\n }\r\n };\r\n EventPeriod.prototype.thaw = function () {\r\n if (!(--this.freezeDepth) && this.stuntedReleaseCnt && !this.pendingCnt) {\r\n this.release();\r\n }\r\n };\r\n return EventPeriod;\r\n}());\r\nexports.default = EventPeriod;\r\nEmitterMixin_1.default.mixInto(EventPeriod);\r\n\n\n/***/ }),\n/* 220 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventPeriod_1 = __webpack_require__(219);\r\nvar ArrayEventSource_1 = __webpack_require__(56);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar EventManager = /** @class */ (function () {\r\n function EventManager(calendar) {\r\n this.calendar = calendar;\r\n this.stickySource = new ArrayEventSource_1.default(calendar);\r\n this.otherSources = [];\r\n }\r\n EventManager.prototype.requestEvents = function (start, end, timezone, force) {\r\n if (force ||\r\n !this.currentPeriod ||\r\n !this.currentPeriod.isWithinRange(start, end) ||\r\n timezone !== this.currentPeriod.timezone) {\r\n this.setPeriod(// will change this.currentPeriod\r\n new EventPeriod_1.default(start, end, timezone));\r\n }\r\n return this.currentPeriod.whenReleased();\r\n };\r\n // Source Adding/Removing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.addSource = function (eventSource) {\r\n this.otherSources.push(eventSource);\r\n if (this.currentPeriod) {\r\n this.currentPeriod.requestSource(eventSource); // might release\r\n }\r\n };\r\n EventManager.prototype.removeSource = function (doomedSource) {\r\n util_1.removeExact(this.otherSources, doomedSource);\r\n if (this.currentPeriod) {\r\n this.currentPeriod.purgeSource(doomedSource); // might release\r\n }\r\n };\r\n EventManager.prototype.removeAllSources = function () {\r\n this.otherSources = [];\r\n if (this.currentPeriod) {\r\n this.currentPeriod.purgeAllSources(); // might release\r\n }\r\n };\r\n // Source Refetching\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.refetchSource = function (eventSource) {\r\n var currentPeriod = this.currentPeriod;\r\n if (currentPeriod) {\r\n currentPeriod.freeze();\r\n currentPeriod.purgeSource(eventSource);\r\n currentPeriod.requestSource(eventSource);\r\n currentPeriod.thaw();\r\n }\r\n };\r\n EventManager.prototype.refetchAllSources = function () {\r\n var currentPeriod = this.currentPeriod;\r\n if (currentPeriod) {\r\n currentPeriod.freeze();\r\n currentPeriod.purgeAllSources();\r\n currentPeriod.requestSources(this.getSources());\r\n currentPeriod.thaw();\r\n }\r\n };\r\n // Source Querying\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.getSources = function () {\r\n return [this.stickySource].concat(this.otherSources);\r\n };\r\n // like querySources, but accepts multple match criteria (like multiple IDs)\r\n EventManager.prototype.multiQuerySources = function (matchInputs) {\r\n // coerce into an array\r\n if (!matchInputs) {\r\n matchInputs = [];\r\n }\r\n else if (!$.isArray(matchInputs)) {\r\n matchInputs = [matchInputs];\r\n }\r\n var matchingSources = [];\r\n var i;\r\n // resolve raw inputs to real event source objects\r\n for (i = 0; i < matchInputs.length; i++) {\r\n matchingSources.push.apply(// append\r\n matchingSources, this.querySources(matchInputs[i]));\r\n }\r\n return matchingSources;\r\n };\r\n // matchInput can either by a real event source object, an ID, or the function/URL for the source.\r\n // returns an array of matching source objects.\r\n EventManager.prototype.querySources = function (matchInput) {\r\n var sources = this.otherSources;\r\n var i;\r\n var source;\r\n // given a proper event source object\r\n for (i = 0; i < sources.length; i++) {\r\n source = sources[i];\r\n if (source === matchInput) {\r\n return [source];\r\n }\r\n }\r\n // an ID match\r\n source = this.getSourceById(EventSource_1.default.normalizeId(matchInput));\r\n if (source) {\r\n return [source];\r\n }\r\n // parse as an event source\r\n matchInput = EventSourceParser_1.default.parse(matchInput, this.calendar);\r\n if (matchInput) {\r\n return $.grep(sources, function (source) {\r\n return isSourcesEquivalent(matchInput, source);\r\n });\r\n }\r\n };\r\n /*\r\n ID assumed to already be normalized\r\n */\r\n EventManager.prototype.getSourceById = function (id) {\r\n return $.grep(this.otherSources, function (source) {\r\n return source.id && source.id === id;\r\n })[0];\r\n };\r\n // Event-Period\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.setPeriod = function (eventPeriod) {\r\n if (this.currentPeriod) {\r\n this.unbindPeriod(this.currentPeriod);\r\n this.currentPeriod = null;\r\n }\r\n this.currentPeriod = eventPeriod;\r\n this.bindPeriod(eventPeriod);\r\n eventPeriod.requestSources(this.getSources());\r\n };\r\n EventManager.prototype.bindPeriod = function (eventPeriod) {\r\n this.listenTo(eventPeriod, 'release', function (eventsPayload) {\r\n this.trigger('release', eventsPayload);\r\n });\r\n };\r\n EventManager.prototype.unbindPeriod = function (eventPeriod) {\r\n this.stopListeningTo(eventPeriod);\r\n };\r\n // Event Getting/Adding/Removing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.getEventDefByUid = function (uid) {\r\n if (this.currentPeriod) {\r\n return this.currentPeriod.getEventDefByUid(uid);\r\n }\r\n };\r\n EventManager.prototype.addEventDef = function (eventDef, isSticky) {\r\n if (isSticky) {\r\n this.stickySource.addEventDef(eventDef);\r\n }\r\n if (this.currentPeriod) {\r\n this.currentPeriod.addEventDef(eventDef); // might release\r\n }\r\n };\r\n EventManager.prototype.removeEventDefsById = function (eventId) {\r\n this.getSources().forEach(function (eventSource) {\r\n eventSource.removeEventDefsById(eventId);\r\n });\r\n if (this.currentPeriod) {\r\n this.currentPeriod.removeEventDefsById(eventId); // might release\r\n }\r\n };\r\n EventManager.prototype.removeAllEventDefs = function () {\r\n this.getSources().forEach(function (eventSource) {\r\n eventSource.removeAllEventDefs();\r\n });\r\n if (this.currentPeriod) {\r\n this.currentPeriod.removeAllEventDefs();\r\n }\r\n };\r\n // Event Mutating\r\n // -----------------------------------------------------------------------------------------------------------------\r\n /*\r\n Returns an undo function.\r\n */\r\n EventManager.prototype.mutateEventsWithId = function (eventDefId, eventDefMutation) {\r\n var currentPeriod = this.currentPeriod;\r\n var eventDefs;\r\n var undoFuncs = [];\r\n if (currentPeriod) {\r\n currentPeriod.freeze();\r\n eventDefs = currentPeriod.getEventDefsById(eventDefId);\r\n eventDefs.forEach(function (eventDef) {\r\n // add/remove esp because id might change\r\n currentPeriod.removeEventDef(eventDef);\r\n undoFuncs.push(eventDefMutation.mutateSingle(eventDef));\r\n currentPeriod.addEventDef(eventDef);\r\n });\r\n currentPeriod.thaw();\r\n return function () {\r\n currentPeriod.freeze();\r\n for (var i = 0; i < eventDefs.length; i++) {\r\n currentPeriod.removeEventDef(eventDefs[i]);\r\n undoFuncs[i]();\r\n currentPeriod.addEventDef(eventDefs[i]);\r\n }\r\n currentPeriod.thaw();\r\n };\r\n }\r\n return function () { };\r\n };\r\n /*\r\n copies and then mutates\r\n */\r\n EventManager.prototype.buildMutatedEventInstanceGroup = function (eventDefId, eventDefMutation) {\r\n var eventDefs = this.getEventDefsById(eventDefId);\r\n var i;\r\n var defCopy;\r\n var allInstances = [];\r\n for (i = 0; i < eventDefs.length; i++) {\r\n defCopy = eventDefs[i].clone();\r\n if (defCopy instanceof SingleEventDef_1.default) {\r\n eventDefMutation.mutateSingle(defCopy);\r\n allInstances.push.apply(allInstances, // append\r\n defCopy.buildInstances());\r\n }\r\n }\r\n return new EventInstanceGroup_1.default(allInstances);\r\n };\r\n // Freezing\r\n // -----------------------------------------------------------------------------------------------------------------\r\n EventManager.prototype.freeze = function () {\r\n if (this.currentPeriod) {\r\n this.currentPeriod.freeze();\r\n }\r\n };\r\n EventManager.prototype.thaw = function () {\r\n if (this.currentPeriod) {\r\n this.currentPeriod.thaw();\r\n }\r\n };\r\n // methods that simply forward to EventPeriod\r\n EventManager.prototype.getEventDefsById = function (eventDefId) {\r\n return this.currentPeriod.getEventDefsById(eventDefId);\r\n };\r\n EventManager.prototype.getEventInstances = function () {\r\n return this.currentPeriod.getEventInstances();\r\n };\r\n EventManager.prototype.getEventInstancesWithId = function (eventDefId) {\r\n return this.currentPeriod.getEventInstancesWithId(eventDefId);\r\n };\r\n EventManager.prototype.getEventInstancesWithoutId = function (eventDefId) {\r\n return this.currentPeriod.getEventInstancesWithoutId(eventDefId);\r\n };\r\n return EventManager;\r\n}());\r\nexports.default = EventManager;\r\nEmitterMixin_1.default.mixInto(EventManager);\r\nListenerMixin_1.default.mixInto(EventManager);\r\nfunction isSourcesEquivalent(source0, source1) {\r\n return source0.getPrimitive() === source1.getPrimitive();\r\n}\r\n\n\n/***/ }),\n/* 221 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar StandardTheme = /** @class */ (function (_super) {\r\n tslib_1.__extends(StandardTheme, _super);\r\n function StandardTheme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return StandardTheme;\r\n}(Theme_1.default));\r\nexports.default = StandardTheme;\r\nStandardTheme.prototype.classes = {\r\n widget: 'fc-unthemed',\r\n widgetHeader: 'fc-widget-header',\r\n widgetContent: 'fc-widget-content',\r\n buttonGroup: 'fc-button-group',\r\n button: 'fc-button',\r\n cornerLeft: 'fc-corner-left',\r\n cornerRight: 'fc-corner-right',\r\n stateDefault: 'fc-state-default',\r\n stateActive: 'fc-state-active',\r\n stateDisabled: 'fc-state-disabled',\r\n stateHover: 'fc-state-hover',\r\n stateDown: 'fc-state-down',\r\n popoverHeader: 'fc-widget-header',\r\n popoverContent: 'fc-widget-content',\r\n // day grid\r\n headerRow: 'fc-widget-header',\r\n dayRow: 'fc-widget-content',\r\n // list view\r\n listView: 'fc-widget-content'\r\n};\r\nStandardTheme.prototype.baseIconClass = 'fc-icon';\r\nStandardTheme.prototype.iconClasses = {\r\n close: 'fc-icon-x',\r\n prev: 'fc-icon-left-single-arrow',\r\n next: 'fc-icon-right-single-arrow',\r\n prevYear: 'fc-icon-left-double-arrow',\r\n nextYear: 'fc-icon-right-double-arrow'\r\n};\r\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons';\r\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\r\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\r\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar JqueryUiTheme = /** @class */ (function (_super) {\r\n tslib_1.__extends(JqueryUiTheme, _super);\r\n function JqueryUiTheme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return JqueryUiTheme;\r\n}(Theme_1.default));\r\nexports.default = JqueryUiTheme;\r\nJqueryUiTheme.prototype.classes = {\r\n widget: 'ui-widget',\r\n widgetHeader: 'ui-widget-header',\r\n widgetContent: 'ui-widget-content',\r\n buttonGroup: 'fc-button-group',\r\n button: 'ui-button',\r\n cornerLeft: 'ui-corner-left',\r\n cornerRight: 'ui-corner-right',\r\n stateDefault: 'ui-state-default',\r\n stateActive: 'ui-state-active',\r\n stateDisabled: 'ui-state-disabled',\r\n stateHover: 'ui-state-hover',\r\n stateDown: 'ui-state-down',\r\n today: 'ui-state-highlight',\r\n popoverHeader: 'ui-widget-header',\r\n popoverContent: 'ui-widget-content',\r\n // day grid\r\n headerRow: 'ui-widget-header',\r\n dayRow: 'ui-widget-content',\r\n // list view\r\n listView: 'ui-widget-content'\r\n};\r\nJqueryUiTheme.prototype.baseIconClass = 'ui-icon';\r\nJqueryUiTheme.prototype.iconClasses = {\r\n close: 'ui-icon-closethick',\r\n prev: 'ui-icon-circle-triangle-w',\r\n next: 'ui-icon-circle-triangle-e',\r\n prevYear: 'ui-icon-seek-prev',\r\n nextYear: 'ui-icon-seek-next'\r\n};\r\nJqueryUiTheme.prototype.iconOverrideOption = 'themeButtonIcons';\r\nJqueryUiTheme.prototype.iconOverrideCustomButtonOption = 'themeIcon';\r\nJqueryUiTheme.prototype.iconOverridePrefix = 'ui-icon-';\r\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar FuncEventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(FuncEventSource, _super);\r\n function FuncEventSource() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n FuncEventSource.parse = function (rawInput, calendar) {\r\n var rawProps;\r\n // normalize raw input\r\n if ($.isFunction(rawInput.events)) { // extended form\r\n rawProps = rawInput;\r\n }\r\n else if ($.isFunction(rawInput)) { // short form\r\n rawProps = { events: rawInput };\r\n }\r\n if (rawProps) {\r\n return EventSource_1.default.parse.call(this, rawProps, calendar);\r\n }\r\n return false;\r\n };\r\n FuncEventSource.prototype.fetch = function (start, end, timezone) {\r\n var _this = this;\r\n this.calendar.pushLoading();\r\n return Promise_1.default.construct(function (onResolve) {\r\n _this.func.call(_this.calendar, start.clone(), end.clone(), timezone, function (rawEventDefs) {\r\n _this.calendar.popLoading();\r\n onResolve(_this.parseEventDefs(rawEventDefs));\r\n });\r\n });\r\n };\r\n FuncEventSource.prototype.getPrimitive = function () {\r\n return this.func;\r\n };\r\n FuncEventSource.prototype.applyManualStandardProps = function (rawProps) {\r\n var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);\r\n this.func = rawProps.events;\r\n return superSuccess;\r\n };\r\n return FuncEventSource;\r\n}(EventSource_1.default));\r\nexports.default = FuncEventSource;\r\nFuncEventSource.defineStandardProps({\r\n events: false // don't automatically transfer\r\n});\r\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Promise_1 = __webpack_require__(21);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar JsonFeedEventSource = /** @class */ (function (_super) {\r\n tslib_1.__extends(JsonFeedEventSource, _super);\r\n function JsonFeedEventSource() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n JsonFeedEventSource.parse = function (rawInput, calendar) {\r\n var rawProps;\r\n // normalize raw input\r\n if (typeof rawInput.url === 'string') { // extended form\r\n rawProps = rawInput;\r\n }\r\n else if (typeof rawInput === 'string') { // short form\r\n rawProps = { url: rawInput };\r\n }\r\n if (rawProps) {\r\n return EventSource_1.default.parse.call(this, rawProps, calendar);\r\n }\r\n return false;\r\n };\r\n JsonFeedEventSource.prototype.fetch = function (start, end, timezone) {\r\n var _this = this;\r\n var ajaxSettings = this.ajaxSettings;\r\n var onSuccess = ajaxSettings.success;\r\n var onError = ajaxSettings.error;\r\n var requestParams = this.buildRequestParams(start, end, timezone);\r\n // todo: eventually handle the promise's then,\r\n // don't intercept success/error\r\n // tho will be a breaking API change\r\n this.calendar.pushLoading();\r\n return Promise_1.default.construct(function (onResolve, onReject) {\r\n $.ajax($.extend({}, // destination\r\n JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, {\r\n url: _this.url,\r\n data: requestParams,\r\n success: function (rawEventDefs, status, xhr) {\r\n var callbackRes;\r\n _this.calendar.popLoading();\r\n if (rawEventDefs) {\r\n callbackRes = util_1.applyAll(onSuccess, _this, [rawEventDefs, status, xhr]); // redirect `this`\r\n if ($.isArray(callbackRes)) {\r\n rawEventDefs = callbackRes;\r\n }\r\n onResolve(_this.parseEventDefs(rawEventDefs));\r\n }\r\n else {\r\n onReject();\r\n }\r\n },\r\n error: function (xhr, statusText, errorThrown) {\r\n _this.calendar.popLoading();\r\n util_1.applyAll(onError, _this, [xhr, statusText, errorThrown]); // redirect `this`\r\n onReject();\r\n }\r\n }));\r\n });\r\n };\r\n JsonFeedEventSource.prototype.buildRequestParams = function (start, end, timezone) {\r\n var calendar = this.calendar;\r\n var ajaxSettings = this.ajaxSettings;\r\n var startParam;\r\n var endParam;\r\n var timezoneParam;\r\n var customRequestParams;\r\n var params = {};\r\n startParam = this.startParam;\r\n if (startParam == null) {\r\n startParam = calendar.opt('startParam');\r\n }\r\n endParam = this.endParam;\r\n if (endParam == null) {\r\n endParam = calendar.opt('endParam');\r\n }\r\n timezoneParam = this.timezoneParam;\r\n if (timezoneParam == null) {\r\n timezoneParam = calendar.opt('timezoneParam');\r\n }\r\n // retrieve any outbound GET/POST $.ajax data from the options\r\n if ($.isFunction(ajaxSettings.data)) {\r\n // supplied as a function that returns a key/value object\r\n customRequestParams = ajaxSettings.data();\r\n }\r\n else {\r\n // probably supplied as a straight key/value object\r\n customRequestParams = ajaxSettings.data || {};\r\n }\r\n $.extend(params, customRequestParams);\r\n params[startParam] = start.format();\r\n params[endParam] = end.format();\r\n if (timezone && timezone !== 'local') {\r\n params[timezoneParam] = timezone;\r\n }\r\n return params;\r\n };\r\n JsonFeedEventSource.prototype.getPrimitive = function () {\r\n return this.url;\r\n };\r\n JsonFeedEventSource.prototype.applyMiscProps = function (rawProps) {\r\n this.ajaxSettings = rawProps;\r\n };\r\n JsonFeedEventSource.AJAX_DEFAULTS = {\r\n dataType: 'json',\r\n cache: false\r\n };\r\n return JsonFeedEventSource;\r\n}(EventSource_1.default));\r\nexports.default = JsonFeedEventSource;\r\nJsonFeedEventSource.defineStandardProps({\r\n // automatically transfer (true)...\r\n url: true,\r\n startParam: true,\r\n endParam: true,\r\n timezoneParam: true\r\n});\r\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Iterator = /** @class */ (function () {\r\n function Iterator(items) {\r\n this.items = items || [];\r\n }\r\n /* Calls a method on every item passing the arguments through */\r\n Iterator.prototype.proxyCall = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var results = [];\r\n this.items.forEach(function (item) {\r\n results.push(item[methodName].apply(item, args));\r\n });\r\n return results;\r\n };\r\n return Iterator;\r\n}());\r\nexports.default = Iterator;\r\n\n\n/***/ }),\n/* 226 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\n/* Creates a clone of an element and lets it track the mouse as it moves\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar MouseFollower = /** @class */ (function () {\r\n function MouseFollower(sourceEl, options) {\r\n this.isFollowing = false;\r\n this.isHidden = false;\r\n this.isAnimating = false; // doing the revert animation?\r\n this.options = options = options || {};\r\n this.sourceEl = sourceEl;\r\n this.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent\r\n }\r\n // Causes the element to start following the mouse\r\n MouseFollower.prototype.start = function (ev) {\r\n if (!this.isFollowing) {\r\n this.isFollowing = true;\r\n this.y0 = util_1.getEvY(ev);\r\n this.x0 = util_1.getEvX(ev);\r\n this.topDelta = 0;\r\n this.leftDelta = 0;\r\n if (!this.isHidden) {\r\n this.updatePosition();\r\n }\r\n if (util_1.getEvIsTouch(ev)) {\r\n this.listenTo($(document), 'touchmove', this.handleMove);\r\n }\r\n else {\r\n this.listenTo($(document), 'mousemove', this.handleMove);\r\n }\r\n }\r\n };\r\n // Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position.\r\n // `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately.\r\n MouseFollower.prototype.stop = function (shouldRevert, callback) {\r\n var _this = this;\r\n var revertDuration = this.options.revertDuration;\r\n var complete = function () {\r\n _this.isAnimating = false;\r\n _this.removeElement();\r\n _this.top0 = _this.left0 = null; // reset state for future updatePosition calls\r\n if (callback) {\r\n callback();\r\n }\r\n };\r\n if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time\r\n this.isFollowing = false;\r\n this.stopListeningTo($(document));\r\n if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation?\r\n this.isAnimating = true;\r\n this.el.animate({\r\n top: this.top0,\r\n left: this.left0\r\n }, {\r\n duration: revertDuration,\r\n complete: complete\r\n });\r\n }\r\n else {\r\n complete();\r\n }\r\n }\r\n };\r\n // Gets the tracking element. Create it if necessary\r\n MouseFollower.prototype.getEl = function () {\r\n var el = this.el;\r\n if (!el) {\r\n el = this.el = this.sourceEl.clone()\r\n .addClass(this.options.additionalClass || '')\r\n .css({\r\n position: 'absolute',\r\n visibility: '',\r\n display: this.isHidden ? 'none' : '',\r\n margin: 0,\r\n right: 'auto',\r\n bottom: 'auto',\r\n width: this.sourceEl.width(),\r\n height: this.sourceEl.height(),\r\n opacity: this.options.opacity || '',\r\n zIndex: this.options.zIndex\r\n });\r\n // we don't want long taps or any mouse interaction causing selection/menus.\r\n // would use preventSelection(), but that prevents selectstart, causing problems.\r\n el.addClass('fc-unselectable');\r\n el.appendTo(this.parentEl);\r\n }\r\n return el;\r\n };\r\n // Removes the tracking element if it has already been created\r\n MouseFollower.prototype.removeElement = function () {\r\n if (this.el) {\r\n this.el.remove();\r\n this.el = null;\r\n }\r\n };\r\n // Update the CSS position of the tracking element\r\n MouseFollower.prototype.updatePosition = function () {\r\n var sourceOffset;\r\n var origin;\r\n this.getEl(); // ensure this.el\r\n // make sure origin info was computed\r\n if (this.top0 == null) {\r\n sourceOffset = this.sourceEl.offset();\r\n origin = this.el.offsetParent().offset();\r\n this.top0 = sourceOffset.top - origin.top;\r\n this.left0 = sourceOffset.left - origin.left;\r\n }\r\n this.el.css({\r\n top: this.top0 + this.topDelta,\r\n left: this.left0 + this.leftDelta\r\n });\r\n };\r\n // Gets called when the user moves the mouse\r\n MouseFollower.prototype.handleMove = function (ev) {\r\n this.topDelta = util_1.getEvY(ev) - this.y0;\r\n this.leftDelta = util_1.getEvX(ev) - this.x0;\r\n if (!this.isHidden) {\r\n this.updatePosition();\r\n }\r\n };\r\n // Temporarily makes the tracking element invisible. Can be called before following starts\r\n MouseFollower.prototype.hide = function () {\r\n if (!this.isHidden) {\r\n this.isHidden = true;\r\n if (this.el) {\r\n this.el.hide();\r\n }\r\n }\r\n };\r\n // Show the tracking element after it has been temporarily hidden\r\n MouseFollower.prototype.show = function () {\r\n if (this.isHidden) {\r\n this.isHidden = false;\r\n this.updatePosition();\r\n this.getEl().show();\r\n }\r\n };\r\n return MouseFollower;\r\n}());\r\nexports.default = MouseFollower;\r\nListenerMixin_1.default.mixInto(MouseFollower);\r\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* A rectangular panel that is absolutely positioned over other content\r\n------------------------------------------------------------------------------------------------------------------------\r\nOptions:\r\n - className (string)\r\n - content (HTML string or jQuery element set)\r\n - parentEl\r\n - top\r\n - left\r\n - right (the x coord of where the right edge should be. not a \"CSS\" right)\r\n - autoHide (boolean)\r\n - show (callback)\r\n - hide (callback)\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar Popover = /** @class */ (function () {\r\n function Popover(options) {\r\n this.isHidden = true;\r\n this.margin = 10; // the space required between the popover and the edges of the scroll container\r\n this.options = options || {};\r\n }\r\n // Shows the popover on the specified position. Renders it if not already\r\n Popover.prototype.show = function () {\r\n if (this.isHidden) {\r\n if (!this.el) {\r\n this.render();\r\n }\r\n this.el.show();\r\n this.position();\r\n this.isHidden = false;\r\n this.trigger('show');\r\n }\r\n };\r\n // Hides the popover, through CSS, but does not remove it from the DOM\r\n Popover.prototype.hide = function () {\r\n if (!this.isHidden) {\r\n this.el.hide();\r\n this.isHidden = true;\r\n this.trigger('hide');\r\n }\r\n };\r\n // Creates `this.el` and renders content inside of it\r\n Popover.prototype.render = function () {\r\n var _this = this;\r\n var options = this.options;\r\n this.el = $('
')\r\n .addClass(options.className || '')\r\n .css({\r\n // position initially to the top left to avoid creating scrollbars\r\n top: 0,\r\n left: 0\r\n })\r\n .append(options.content)\r\n .appendTo(options.parentEl);\r\n // when a click happens on anything inside with a 'fc-close' className, hide the popover\r\n this.el.on('click', '.fc-close', function () {\r\n _this.hide();\r\n });\r\n if (options.autoHide) {\r\n this.listenTo($(document), 'mousedown', this.documentMousedown);\r\n }\r\n };\r\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\r\n Popover.prototype.documentMousedown = function (ev) {\r\n // only hide the popover if the click happened outside the popover\r\n if (this.el && !$(ev.target).closest(this.el).length) {\r\n this.hide();\r\n }\r\n };\r\n // Hides and unregisters any handlers\r\n Popover.prototype.removeElement = function () {\r\n this.hide();\r\n if (this.el) {\r\n this.el.remove();\r\n this.el = null;\r\n }\r\n this.stopListeningTo($(document), 'mousedown');\r\n };\r\n // Positions the popover optimally, using the top/left/right options\r\n Popover.prototype.position = function () {\r\n var options = this.options;\r\n var origin = this.el.offsetParent().offset();\r\n var width = this.el.outerWidth();\r\n var height = this.el.outerHeight();\r\n var windowEl = $(window);\r\n var viewportEl = util_1.getScrollParent(this.el);\r\n var viewportTop;\r\n var viewportLeft;\r\n var viewportOffset;\r\n var top; // the \"position\" (not \"offset\") values for the popover\r\n var left; //\r\n // compute top and left\r\n top = options.top || 0;\r\n if (options.left !== undefined) {\r\n left = options.left;\r\n }\r\n else if (options.right !== undefined) {\r\n left = options.right - width; // derive the left value from the right value\r\n }\r\n else {\r\n left = 0;\r\n }\r\n if (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result\r\n viewportEl = windowEl;\r\n viewportTop = 0; // the window is always at the top left\r\n viewportLeft = 0; // (and .offset() won't work if called here)\r\n }\r\n else {\r\n viewportOffset = viewportEl.offset();\r\n viewportTop = viewportOffset.top;\r\n viewportLeft = viewportOffset.left;\r\n }\r\n // if the window is scrolled, it causes the visible area to be further down\r\n viewportTop += windowEl.scrollTop();\r\n viewportLeft += windowEl.scrollLeft();\r\n // constrain to the view port. if constrained by two edges, give precedence to top/left\r\n if (options.viewportConstrain !== false) {\r\n top = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin);\r\n top = Math.max(top, viewportTop + this.margin);\r\n left = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin);\r\n left = Math.max(left, viewportLeft + this.margin);\r\n }\r\n this.el.css({\r\n top: top - origin.top,\r\n left: left - origin.left\r\n });\r\n };\r\n // Triggers a callback. Calls a function in the option hash of the same name.\r\n // Arguments beyond the first `name` are forwarded on.\r\n // TODO: better code reuse for this. Repeat code\r\n Popover.prototype.trigger = function (name) {\r\n if (this.options[name]) {\r\n this.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\r\n }\r\n };\r\n return Popover;\r\n}());\r\nexports.default = Popover;\r\nListenerMixin_1.default.mixInto(Popover);\r\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar TaskQueue = /** @class */ (function () {\r\n function TaskQueue() {\r\n this.q = [];\r\n this.isPaused = false;\r\n this.isRunning = false;\r\n }\r\n TaskQueue.prototype.queue = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n this.q.push.apply(this.q, args); // append\r\n this.tryStart();\r\n };\r\n TaskQueue.prototype.pause = function () {\r\n this.isPaused = true;\r\n };\r\n TaskQueue.prototype.resume = function () {\r\n this.isPaused = false;\r\n this.tryStart();\r\n };\r\n TaskQueue.prototype.getIsIdle = function () {\r\n return !this.isRunning && !this.isPaused;\r\n };\r\n TaskQueue.prototype.tryStart = function () {\r\n if (!this.isRunning && this.canRunNext()) {\r\n this.isRunning = true;\r\n this.trigger('start');\r\n this.runRemaining();\r\n }\r\n };\r\n TaskQueue.prototype.canRunNext = function () {\r\n return !this.isPaused && this.q.length;\r\n };\r\n TaskQueue.prototype.runRemaining = function () {\r\n var _this = this;\r\n var task;\r\n var res;\r\n do {\r\n task = this.q.shift(); // always freshly reference q. might have been reassigned.\r\n res = this.runTask(task);\r\n if (res && res.then) {\r\n res.then(function () {\r\n if (_this.canRunNext()) {\r\n _this.runRemaining();\r\n }\r\n });\r\n return; // prevent marking as stopped\r\n }\r\n } while (this.canRunNext());\r\n this.trigger('stop'); // not really a 'stop' ... more of a 'drained'\r\n this.isRunning = false;\r\n // if 'stop' handler added more tasks.... TODO: write test for this\r\n this.tryStart();\r\n };\r\n TaskQueue.prototype.runTask = function (task) {\r\n return task(); // task *is* the function, but subclasses can change the format of a task\r\n };\r\n return TaskQueue;\r\n}());\r\nexports.default = TaskQueue;\r\nEmitterMixin_1.default.mixInto(TaskQueue);\r\n\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar TaskQueue_1 = __webpack_require__(228);\r\nvar RenderQueue = /** @class */ (function (_super) {\r\n tslib_1.__extends(RenderQueue, _super);\r\n function RenderQueue(waitsByNamespace) {\r\n var _this = _super.call(this) || this;\r\n _this.waitsByNamespace = waitsByNamespace || {};\r\n return _this;\r\n }\r\n RenderQueue.prototype.queue = function (taskFunc, namespace, type) {\r\n var task = {\r\n func: taskFunc,\r\n namespace: namespace,\r\n type: type\r\n };\r\n var waitMs;\r\n if (namespace) {\r\n waitMs = this.waitsByNamespace[namespace];\r\n }\r\n if (this.waitNamespace) {\r\n if (namespace === this.waitNamespace && waitMs != null) {\r\n this.delayWait(waitMs);\r\n }\r\n else {\r\n this.clearWait();\r\n this.tryStart();\r\n }\r\n }\r\n if (this.compoundTask(task)) { // appended to queue?\r\n if (!this.waitNamespace && waitMs != null) {\r\n this.startWait(namespace, waitMs);\r\n }\r\n else {\r\n this.tryStart();\r\n }\r\n }\r\n };\r\n RenderQueue.prototype.startWait = function (namespace, waitMs) {\r\n this.waitNamespace = namespace;\r\n this.spawnWait(waitMs);\r\n };\r\n RenderQueue.prototype.delayWait = function (waitMs) {\r\n clearTimeout(this.waitId);\r\n this.spawnWait(waitMs);\r\n };\r\n RenderQueue.prototype.spawnWait = function (waitMs) {\r\n var _this = this;\r\n this.waitId = setTimeout(function () {\r\n _this.waitNamespace = null;\r\n _this.tryStart();\r\n }, waitMs);\r\n };\r\n RenderQueue.prototype.clearWait = function () {\r\n if (this.waitNamespace) {\r\n clearTimeout(this.waitId);\r\n this.waitId = null;\r\n this.waitNamespace = null;\r\n }\r\n };\r\n RenderQueue.prototype.canRunNext = function () {\r\n if (!_super.prototype.canRunNext.call(this)) {\r\n return false;\r\n }\r\n // waiting for a certain namespace to stop receiving tasks?\r\n if (this.waitNamespace) {\r\n var q = this.q;\r\n // if there was a different namespace task in the meantime,\r\n // that forces all previously-waiting tasks to suddenly execute.\r\n // TODO: find a way to do this in constant time.\r\n for (var i = 0; i < q.length; i++) {\r\n if (q[i].namespace !== this.waitNamespace) {\r\n return true; // allow execution\r\n }\r\n }\r\n return false;\r\n }\r\n return true;\r\n };\r\n RenderQueue.prototype.runTask = function (task) {\r\n task.func();\r\n };\r\n RenderQueue.prototype.compoundTask = function (newTask) {\r\n var q = this.q;\r\n var shouldAppend = true;\r\n var i;\r\n var task;\r\n if (newTask.namespace && newTask.type === 'destroy') {\r\n // remove all init/add/remove ops with same namespace, regardless of order\r\n for (i = q.length - 1; i >= 0; i--) {\r\n task = q[i];\r\n if (task.namespace === newTask.namespace) {\r\n switch (task.type) {\r\n case 'init':\r\n shouldAppend = false;\r\n // the latest destroy is cancelled out by not doing the init\r\n /* falls through */\r\n case 'add':\r\n /* falls through */\r\n case 'remove':\r\n q.splice(i, 1); // remove task\r\n }\r\n }\r\n }\r\n }\r\n if (shouldAppend) {\r\n q.push(newTask);\r\n }\r\n return shouldAppend;\r\n };\r\n return RenderQueue;\r\n}(TaskQueue_1.default));\r\nexports.default = RenderQueue;\r\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Model_1 = __webpack_require__(51);\r\nvar Component = /** @class */ (function (_super) {\r\n tslib_1.__extends(Component, _super);\r\n function Component() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Component.prototype.setElement = function (el) {\r\n this.el = el;\r\n this.bindGlobalHandlers();\r\n this.renderSkeleton();\r\n this.set('isInDom', true);\r\n };\r\n Component.prototype.removeElement = function () {\r\n this.unset('isInDom');\r\n this.unrenderSkeleton();\r\n this.unbindGlobalHandlers();\r\n this.el.remove();\r\n // NOTE: don't null-out this.el in case the View was destroyed within an API callback.\r\n // We don't null-out the View's other jQuery element references upon destroy,\r\n // so we shouldn't kill this.el either.\r\n };\r\n Component.prototype.bindGlobalHandlers = function () {\r\n // subclasses can override\r\n };\r\n Component.prototype.unbindGlobalHandlers = function () {\r\n // subclasses can override\r\n };\r\n /*\r\n NOTE: Can't have a `render` method. Read the deprecation notice in View::executeDateRender\r\n */\r\n // Renders the basic structure of the view before any content is rendered\r\n Component.prototype.renderSkeleton = function () {\r\n // subclasses should implement\r\n };\r\n // Unrenders the basic structure of the view\r\n Component.prototype.unrenderSkeleton = function () {\r\n // subclasses should implement\r\n };\r\n return Component;\r\n}(Model_1.default));\r\nexports.default = Component;\r\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar date_formatting_1 = __webpack_require__(49);\r\nvar Component_1 = __webpack_require__(230);\r\nvar util_2 = __webpack_require__(19);\r\nvar DateComponent = /** @class */ (function (_super) {\r\n tslib_1.__extends(DateComponent, _super);\r\n function DateComponent(_view, _options) {\r\n var _this = _super.call(this) || this;\r\n _this.isRTL = false; // frequently accessed options\r\n _this.hitsNeededDepth = 0; // necessary because multiple callers might need the same hits\r\n _this.hasAllDayBusinessHours = false; // TODO: unify with largeUnit and isTimeScale?\r\n _this.isDatesRendered = false;\r\n // hack to set options prior to the this.opt calls\r\n if (_view) {\r\n _this['view'] = _view;\r\n }\r\n if (_options) {\r\n _this['options'] = _options;\r\n }\r\n _this.uid = String(DateComponent.guid++);\r\n _this.childrenByUid = {};\r\n _this.nextDayThreshold = moment.duration(_this.opt('nextDayThreshold'));\r\n _this.isRTL = _this.opt('isRTL');\r\n if (_this.fillRendererClass) {\r\n _this.fillRenderer = new _this.fillRendererClass(_this);\r\n }\r\n if (_this.eventRendererClass) { // fillRenderer is optional -----v\r\n _this.eventRenderer = new _this.eventRendererClass(_this, _this.fillRenderer);\r\n }\r\n if (_this.helperRendererClass && _this.eventRenderer) {\r\n _this.helperRenderer = new _this.helperRendererClass(_this, _this.eventRenderer);\r\n }\r\n if (_this.businessHourRendererClass && _this.fillRenderer) {\r\n _this.businessHourRenderer = new _this.businessHourRendererClass(_this, _this.fillRenderer);\r\n }\r\n return _this;\r\n }\r\n DateComponent.prototype.addChild = function (child) {\r\n if (!this.childrenByUid[child.uid]) {\r\n this.childrenByUid[child.uid] = child;\r\n return true;\r\n }\r\n return false;\r\n };\r\n DateComponent.prototype.removeChild = function (child) {\r\n if (this.childrenByUid[child.uid]) {\r\n delete this.childrenByUid[child.uid];\r\n return true;\r\n }\r\n return false;\r\n };\r\n // TODO: only do if isInDom?\r\n // TODO: make part of Component, along with children/batch-render system?\r\n DateComponent.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n this.callChildren('updateSize', arguments);\r\n };\r\n // Options\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.opt = function (name) {\r\n return this._getView().opt(name); // default implementation\r\n };\r\n DateComponent.prototype.publiclyTrigger = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var calendar = this._getCalendar();\r\n return calendar.publiclyTrigger.apply(calendar, args);\r\n };\r\n DateComponent.prototype.hasPublicHandlers = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var calendar = this._getCalendar();\r\n return calendar.hasPublicHandlers.apply(calendar, args);\r\n };\r\n // Date\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.executeDateRender = function (dateProfile) {\r\n this.dateProfile = dateProfile; // for rendering\r\n this.renderDates(dateProfile);\r\n this.isDatesRendered = true;\r\n this.callChildren('executeDateRender', arguments);\r\n };\r\n DateComponent.prototype.executeDateUnrender = function () {\r\n this.callChildren('executeDateUnrender', arguments);\r\n this.dateProfile = null;\r\n this.unrenderDates();\r\n this.isDatesRendered = false;\r\n };\r\n // date-cell content only\r\n DateComponent.prototype.renderDates = function (dateProfile) {\r\n // subclasses should implement\r\n };\r\n // date-cell content only\r\n DateComponent.prototype.unrenderDates = function () {\r\n // subclasses should override\r\n };\r\n // Now-Indicator\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator\r\n // should be refreshed. If something falsy is returned, no time indicator is rendered at all.\r\n DateComponent.prototype.getNowIndicatorUnit = function () {\r\n // subclasses should implement\r\n };\r\n // Renders a current time indicator at the given datetime\r\n DateComponent.prototype.renderNowIndicator = function (date) {\r\n this.callChildren('renderNowIndicator', arguments);\r\n };\r\n // Undoes the rendering actions from renderNowIndicator\r\n DateComponent.prototype.unrenderNowIndicator = function () {\r\n this.callChildren('unrenderNowIndicator', arguments);\r\n };\r\n // Business Hours\r\n // ---------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.renderBusinessHours = function (businessHourGenerator) {\r\n if (this.businessHourRenderer) {\r\n this.businessHourRenderer.render(businessHourGenerator);\r\n }\r\n this.callChildren('renderBusinessHours', arguments);\r\n };\r\n // Unrenders previously-rendered business-hours\r\n DateComponent.prototype.unrenderBusinessHours = function () {\r\n this.callChildren('unrenderBusinessHours', arguments);\r\n if (this.businessHourRenderer) {\r\n this.businessHourRenderer.unrender();\r\n }\r\n };\r\n // Event Displaying\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.executeEventRender = function (eventsPayload) {\r\n if (this.eventRenderer) {\r\n this.eventRenderer.rangeUpdated(); // poorly named now\r\n this.eventRenderer.render(eventsPayload);\r\n }\r\n else if (this['renderEvents']) { // legacy\r\n this['renderEvents'](convertEventsPayloadToLegacyArray(eventsPayload));\r\n }\r\n this.callChildren('executeEventRender', arguments);\r\n };\r\n DateComponent.prototype.executeEventUnrender = function () {\r\n this.callChildren('executeEventUnrender', arguments);\r\n if (this.eventRenderer) {\r\n this.eventRenderer.unrender();\r\n }\r\n else if (this['destroyEvents']) { // legacy\r\n this['destroyEvents']();\r\n }\r\n };\r\n DateComponent.prototype.getBusinessHourSegs = function () {\r\n var segs = this.getOwnBusinessHourSegs();\r\n this.iterChildren(function (child) {\r\n segs.push.apply(segs, child.getBusinessHourSegs());\r\n });\r\n return segs;\r\n };\r\n DateComponent.prototype.getOwnBusinessHourSegs = function () {\r\n if (this.businessHourRenderer) {\r\n return this.businessHourRenderer.getSegs();\r\n }\r\n return [];\r\n };\r\n DateComponent.prototype.getEventSegs = function () {\r\n var segs = this.getOwnEventSegs();\r\n this.iterChildren(function (child) {\r\n segs.push.apply(segs, child.getEventSegs());\r\n });\r\n return segs;\r\n };\r\n DateComponent.prototype.getOwnEventSegs = function () {\r\n if (this.eventRenderer) {\r\n return this.eventRenderer.getSegs();\r\n }\r\n return [];\r\n };\r\n // Event Rendering Triggering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.triggerAfterEventsRendered = function () {\r\n this.triggerAfterEventSegsRendered(this.getEventSegs());\r\n this.publiclyTrigger('eventAfterAllRender', {\r\n context: this,\r\n args: [this]\r\n });\r\n };\r\n DateComponent.prototype.triggerAfterEventSegsRendered = function (segs) {\r\n var _this = this;\r\n // an optimization, because getEventLegacy is expensive\r\n if (this.hasPublicHandlers('eventAfterRender')) {\r\n segs.forEach(function (seg) {\r\n var legacy;\r\n if (seg.el) { // necessary?\r\n legacy = seg.footprint.getEventLegacy();\r\n _this.publiclyTrigger('eventAfterRender', {\r\n context: legacy,\r\n args: [legacy, seg.el, _this]\r\n });\r\n }\r\n });\r\n }\r\n };\r\n DateComponent.prototype.triggerBeforeEventsDestroyed = function () {\r\n this.triggerBeforeEventSegsDestroyed(this.getEventSegs());\r\n };\r\n DateComponent.prototype.triggerBeforeEventSegsDestroyed = function (segs) {\r\n var _this = this;\r\n if (this.hasPublicHandlers('eventDestroy')) {\r\n segs.forEach(function (seg) {\r\n var legacy;\r\n if (seg.el) { // necessary?\r\n legacy = seg.footprint.getEventLegacy();\r\n _this.publiclyTrigger('eventDestroy', {\r\n context: legacy,\r\n args: [legacy, seg.el, _this]\r\n });\r\n }\r\n });\r\n }\r\n };\r\n // Event Rendering Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Hides all rendered event segments linked to the given event\r\n // RECURSIVE with subcomponents\r\n DateComponent.prototype.showEventsWithId = function (eventDefId) {\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.footprint.eventDef.id === eventDefId &&\r\n seg.el // necessary?\r\n ) {\r\n seg.el.css('visibility', '');\r\n }\r\n });\r\n this.callChildren('showEventsWithId', arguments);\r\n };\r\n // Shows all rendered event segments linked to the given event\r\n // RECURSIVE with subcomponents\r\n DateComponent.prototype.hideEventsWithId = function (eventDefId) {\r\n this.getEventSegs().forEach(function (seg) {\r\n if (seg.footprint.eventDef.id === eventDefId &&\r\n seg.el // necessary?\r\n ) {\r\n seg.el.css('visibility', 'hidden');\r\n }\r\n });\r\n this.callChildren('hideEventsWithId', arguments);\r\n };\r\n // Drag-n-Drop Rendering (for both events and external elements)\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders a visual indication of a event or external-element drag over the given drop zone.\r\n // If an external-element, seg will be `null`.\r\n // Must return elements used for any mock events.\r\n DateComponent.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var renderedHelper = false;\r\n this.iterChildren(function (child) {\r\n if (child.renderDrag(eventFootprints, seg, isTouch)) {\r\n renderedHelper = true;\r\n }\r\n });\r\n return renderedHelper;\r\n };\r\n // Unrenders a visual indication of an event or external-element being dragged.\r\n DateComponent.prototype.unrenderDrag = function () {\r\n this.callChildren('unrenderDrag', arguments);\r\n };\r\n // Event Resizing\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders a visual indication of an event being resized.\r\n DateComponent.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n this.callChildren('renderEventResize', arguments);\r\n };\r\n // Unrenders a visual indication of an event being resized.\r\n DateComponent.prototype.unrenderEventResize = function () {\r\n this.callChildren('unrenderEventResize', arguments);\r\n };\r\n // Selection\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders a visual indication of the selection\r\n // TODO: rename to `renderSelection` after legacy is gone\r\n DateComponent.prototype.renderSelectionFootprint = function (componentFootprint) {\r\n this.renderHighlight(componentFootprint);\r\n this.callChildren('renderSelectionFootprint', arguments);\r\n };\r\n // Unrenders a visual indication of selection\r\n DateComponent.prototype.unrenderSelection = function () {\r\n this.unrenderHighlight();\r\n this.callChildren('unrenderSelection', arguments);\r\n };\r\n // Highlight\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data)\r\n DateComponent.prototype.renderHighlight = function (componentFootprint) {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.renderFootprint('highlight', componentFootprint, {\r\n getClasses: function () {\r\n return ['fc-highlight'];\r\n }\r\n });\r\n }\r\n this.callChildren('renderHighlight', arguments);\r\n };\r\n // Unrenders the emphasis on a date range\r\n DateComponent.prototype.unrenderHighlight = function () {\r\n if (this.fillRenderer) {\r\n this.fillRenderer.unrender('highlight');\r\n }\r\n this.callChildren('unrenderHighlight', arguments);\r\n };\r\n // Hit Areas\r\n // ---------------------------------------------------------------------------------------------------------------\r\n // just because all DateComponents support this interface\r\n // doesn't mean they need to have their own internal coord system. they can defer to sub-components.\r\n DateComponent.prototype.hitsNeeded = function () {\r\n if (!(this.hitsNeededDepth++)) {\r\n this.prepareHits();\r\n }\r\n this.callChildren('hitsNeeded', arguments);\r\n };\r\n DateComponent.prototype.hitsNotNeeded = function () {\r\n if (this.hitsNeededDepth && !(--this.hitsNeededDepth)) {\r\n this.releaseHits();\r\n }\r\n this.callChildren('hitsNotNeeded', arguments);\r\n };\r\n DateComponent.prototype.prepareHits = function () {\r\n // subclasses can implement\r\n };\r\n DateComponent.prototype.releaseHits = function () {\r\n // subclasses can implement\r\n };\r\n // Given coordinates from the topleft of the document, return data about the date-related area underneath.\r\n // Can return an object with arbitrary properties (although top/right/left/bottom are encouraged).\r\n // Must have a `grid` property, a reference to this current grid. TODO: avoid this\r\n // The returned object will be processed by getHitFootprint and getHitEl.\r\n DateComponent.prototype.queryHit = function (leftOffset, topOffset) {\r\n var childrenByUid = this.childrenByUid;\r\n var uid;\r\n var hit;\r\n for (uid in childrenByUid) {\r\n hit = childrenByUid[uid].queryHit(leftOffset, topOffset);\r\n if (hit) {\r\n break;\r\n }\r\n }\r\n return hit;\r\n };\r\n DateComponent.prototype.getSafeHitFootprint = function (hit) {\r\n var footprint = this.getHitFootprint(hit);\r\n if (!this.dateProfile.activeUnzonedRange.containsRange(footprint.unzonedRange)) {\r\n return null;\r\n }\r\n return footprint;\r\n };\r\n DateComponent.prototype.getHitFootprint = function (hit) {\r\n // what about being abstract!?\r\n };\r\n // Given position-level information about a date-related area within the grid,\r\n // should return a jQuery element that best represents it. passed to dayClick callback.\r\n DateComponent.prototype.getHitEl = function (hit) {\r\n // what about being abstract!?\r\n };\r\n /* Converting eventRange -> eventFootprint\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DateComponent.prototype.eventRangesToEventFootprints = function (eventRanges) {\r\n var eventFootprints = [];\r\n var i;\r\n for (i = 0; i < eventRanges.length; i++) {\r\n eventFootprints.push.apply(// append\r\n eventFootprints, this.eventRangeToEventFootprints(eventRanges[i]));\r\n }\r\n return eventFootprints;\r\n };\r\n DateComponent.prototype.eventRangeToEventFootprints = function (eventRange) {\r\n return [util_2.eventRangeToEventFootprint(eventRange)];\r\n };\r\n /* Converting componentFootprint/eventFootprint -> segs\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n DateComponent.prototype.eventFootprintsToSegs = function (eventFootprints) {\r\n var segs = [];\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n segs.push.apply(segs, this.eventFootprintToSegs(eventFootprints[i]));\r\n }\r\n return segs;\r\n };\r\n // Given an event's span (unzoned start/end and other misc data), and the event itself,\r\n // slices into segments and attaches event-derived properties to them.\r\n // eventSpan - { start, end, isStart, isEnd, otherthings... }\r\n DateComponent.prototype.eventFootprintToSegs = function (eventFootprint) {\r\n var unzonedRange = eventFootprint.componentFootprint.unzonedRange;\r\n var segs;\r\n var i;\r\n var seg;\r\n segs = this.componentFootprintToSegs(eventFootprint.componentFootprint);\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n if (!unzonedRange.isStart) {\r\n seg.isStart = false;\r\n }\r\n if (!unzonedRange.isEnd) {\r\n seg.isEnd = false;\r\n }\r\n seg.footprint = eventFootprint;\r\n // TODO: rename to seg.eventFootprint\r\n }\r\n return segs;\r\n };\r\n DateComponent.prototype.componentFootprintToSegs = function (componentFootprint) {\r\n return [];\r\n };\r\n // Utils\r\n // ---------------------------------------------------------------------------------------------------------------\r\n DateComponent.prototype.callChildren = function (methodName, args) {\r\n this.iterChildren(function (child) {\r\n child[methodName].apply(child, args);\r\n });\r\n };\r\n DateComponent.prototype.iterChildren = function (func) {\r\n var childrenByUid = this.childrenByUid;\r\n var uid;\r\n for (uid in childrenByUid) {\r\n func(childrenByUid[uid]);\r\n }\r\n };\r\n DateComponent.prototype._getCalendar = function () {\r\n var t = this;\r\n return t.calendar || t.view.calendar;\r\n };\r\n DateComponent.prototype._getView = function () {\r\n return this.view;\r\n };\r\n DateComponent.prototype._getDateProfile = function () {\r\n return this._getView().get('dateProfile');\r\n };\r\n // Generates HTML for an anchor to another view into the calendar.\r\n // Will either generate an tag or a non-clickable tag, depending on enabled settings.\r\n // `gotoOptions` can either be a moment input, or an object with the form:\r\n // { date, type, forceOff }\r\n // `type` is a view-type like \"day\" or \"week\". default value is \"day\".\r\n // `attrs` and `innerHtml` are use to generate the rest of the HTML tag.\r\n DateComponent.prototype.buildGotoAnchorHtml = function (gotoOptions, attrs, innerHtml) {\r\n var date;\r\n var type;\r\n var forceOff;\r\n var finalOptions;\r\n if ($.isPlainObject(gotoOptions)) {\r\n date = gotoOptions.date;\r\n type = gotoOptions.type;\r\n forceOff = gotoOptions.forceOff;\r\n }\r\n else {\r\n date = gotoOptions; // a single moment input\r\n }\r\n date = moment_ext_1.default(date); // if a string, parse it\r\n finalOptions = {\r\n date: date.format('YYYY-MM-DD'),\r\n type: type || 'day'\r\n };\r\n if (typeof attrs === 'string') {\r\n innerHtml = attrs;\r\n attrs = null;\r\n }\r\n attrs = attrs ? ' ' + util_1.attrsToStr(attrs) : ''; // will have a leading space\r\n innerHtml = innerHtml || '';\r\n if (!forceOff && this.opt('navLinks')) {\r\n return '' +\r\n innerHtml +\r\n '';\r\n }\r\n else {\r\n return '' +\r\n innerHtml +\r\n '';\r\n }\r\n };\r\n DateComponent.prototype.getAllDayHtml = function () {\r\n return this.opt('allDayHtml') || util_1.htmlEscape(this.opt('allDayText'));\r\n };\r\n // Computes HTML classNames for a single-day element\r\n DateComponent.prototype.getDayClasses = function (date, noThemeHighlight) {\r\n var view = this._getView();\r\n var classes = [];\r\n var today;\r\n if (!this.dateProfile.activeUnzonedRange.containsDate(date)) {\r\n classes.push('fc-disabled-day'); // TODO: jQuery UI theme?\r\n }\r\n else {\r\n classes.push('fc-' + util_1.dayIDs[date.day()]);\r\n if (view.isDateInOtherMonth(date, this.dateProfile)) { // TODO: use DateComponent subclass somehow\r\n classes.push('fc-other-month');\r\n }\r\n today = view.calendar.getNow();\r\n if (date.isSame(today, 'day')) {\r\n classes.push('fc-today');\r\n if (noThemeHighlight !== true) {\r\n classes.push(view.calendar.theme.getClass('today'));\r\n }\r\n }\r\n else if (date < today) {\r\n classes.push('fc-past');\r\n }\r\n else {\r\n classes.push('fc-future');\r\n }\r\n }\r\n return classes;\r\n };\r\n // Utility for formatting a range. Accepts a range object, formatting string, and optional separator.\r\n // Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account.\r\n // The timezones of the dates within `range` will be respected.\r\n DateComponent.prototype.formatRange = function (range, isAllDay, formatStr, separator) {\r\n var end = range.end;\r\n if (isAllDay) {\r\n end = end.clone().subtract(1); // convert to inclusive. last ms of previous day\r\n }\r\n return date_formatting_1.formatRange(range.start, end, formatStr, separator, this.isRTL);\r\n };\r\n // Compute the number of the give units in the \"current\" range.\r\n // Will return a floating-point number. Won't round.\r\n DateComponent.prototype.currentRangeAs = function (unit) {\r\n return this._getDateProfile().currentUnzonedRange.as(unit);\r\n };\r\n // Returns the date range of the full days the given range visually appears to occupy.\r\n // Returns a plain object with start/end, NOT an UnzonedRange!\r\n DateComponent.prototype.computeDayRange = function (unzonedRange) {\r\n var calendar = this._getCalendar();\r\n var startDay = calendar.msToUtcMoment(unzonedRange.startMs, true); // the beginning of the day the range starts\r\n var end = calendar.msToUtcMoment(unzonedRange.endMs);\r\n var endTimeMS = +end.time(); // # of milliseconds into `endDay`\r\n var endDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends\r\n // If the end time is actually inclusively part of the next day and is equal to or\r\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\r\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\r\n if (endTimeMS && endTimeMS >= this.nextDayThreshold) {\r\n endDay.add(1, 'days');\r\n }\r\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\r\n if (endDay <= startDay) {\r\n endDay = startDay.clone().add(1, 'days');\r\n }\r\n return { start: startDay, end: endDay };\r\n };\r\n // Does the given range visually appear to occupy more than one day?\r\n DateComponent.prototype.isMultiDayRange = function (unzonedRange) {\r\n var dayRange = this.computeDayRange(unzonedRange);\r\n return dayRange.end.diff(dayRange.start, 'days') > 1;\r\n };\r\n DateComponent.guid = 0; // TODO: better system for this?\r\n return DateComponent;\r\n}(Component_1.default));\r\nexports.default = DateComponent;\r\n// legacy\r\nfunction convertEventsPayloadToLegacyArray(eventsPayload) {\r\n var eventDefId;\r\n var eventInstances;\r\n var legacyEvents = [];\r\n var i;\r\n for (eventDefId in eventsPayload) {\r\n eventInstances = eventsPayload[eventDefId].eventInstances;\r\n for (i = 0; i < eventInstances.length; i++) {\r\n legacyEvents.push(eventInstances[i].toLegacy());\r\n }\r\n }\r\n return legacyEvents;\r\n}\r\n\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar options_1 = __webpack_require__(33);\r\nvar Iterator_1 = __webpack_require__(225);\r\nvar GlobalEmitter_1 = __webpack_require__(23);\r\nvar EmitterMixin_1 = __webpack_require__(13);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar Toolbar_1 = __webpack_require__(257);\r\nvar OptionsManager_1 = __webpack_require__(258);\r\nvar ViewSpecManager_1 = __webpack_require__(259);\r\nvar Constraints_1 = __webpack_require__(217);\r\nvar locale_1 = __webpack_require__(32);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar EventDateProfile_1 = __webpack_require__(16);\r\nvar EventManager_1 = __webpack_require__(220);\r\nvar BusinessHourGenerator_1 = __webpack_require__(218);\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nvar EventDefParser_1 = __webpack_require__(36);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar ThemeRegistry_1 = __webpack_require__(57);\r\nvar Calendar = /** @class */ (function () {\r\n function Calendar(el, overrides) {\r\n this.loadingLevel = 0; // number of simultaneous loading tasks\r\n this.ignoreUpdateViewSize = 0;\r\n this.freezeContentHeightDepth = 0;\r\n // declare the current calendar instance relies on GlobalEmitter. needed for garbage collection.\r\n // unneeded() is called in destroy.\r\n GlobalEmitter_1.default.needed();\r\n this.el = el;\r\n this.viewsByType = {};\r\n this.optionsManager = new OptionsManager_1.default(this, overrides);\r\n this.viewSpecManager = new ViewSpecManager_1.default(this.optionsManager, this);\r\n this.initMomentInternals(); // needs to happen after options hash initialized\r\n this.initCurrentDate();\r\n this.initEventManager();\r\n this.constraints = new Constraints_1.default(this.eventManager, this);\r\n this.constructed();\r\n }\r\n Calendar.prototype.constructed = function () {\r\n // useful for monkeypatching. used?\r\n };\r\n Calendar.prototype.getView = function () {\r\n return this.view;\r\n };\r\n Calendar.prototype.publiclyTrigger = function (name, triggerInfo) {\r\n var optHandler = this.opt(name);\r\n var context;\r\n var args;\r\n if ($.isPlainObject(triggerInfo)) {\r\n context = triggerInfo.context;\r\n args = triggerInfo.args;\r\n }\r\n else if ($.isArray(triggerInfo)) {\r\n args = triggerInfo;\r\n }\r\n if (context == null) {\r\n context = this.el[0]; // fallback context\r\n }\r\n if (!args) {\r\n args = [];\r\n }\r\n this.triggerWith(name, context, args); // Emitter's method\r\n if (optHandler) {\r\n return optHandler.apply(context, args);\r\n }\r\n };\r\n Calendar.prototype.hasPublicHandlers = function (name) {\r\n return this.hasHandlers(name) ||\r\n this.opt(name); // handler specified in options\r\n };\r\n // Options Public API\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // public getter/setter\r\n Calendar.prototype.option = function (name, value) {\r\n var newOptionHash;\r\n if (typeof name === 'string') {\r\n if (value === undefined) { // getter\r\n return this.optionsManager.get(name);\r\n }\r\n else { // setter for individual option\r\n newOptionHash = {};\r\n newOptionHash[name] = value;\r\n this.optionsManager.add(newOptionHash);\r\n }\r\n }\r\n else if (typeof name === 'object') { // compound setter with object input\r\n this.optionsManager.add(name);\r\n }\r\n };\r\n // private getter\r\n Calendar.prototype.opt = function (name) {\r\n return this.optionsManager.get(name);\r\n };\r\n // View\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Given a view name for a custom view or a standard view, creates a ready-to-go View object\r\n Calendar.prototype.instantiateView = function (viewType) {\r\n var spec = this.viewSpecManager.getViewSpec(viewType);\r\n if (!spec) {\r\n throw new Error(\"View type \\\"\" + viewType + \"\\\" is not valid\");\r\n }\r\n return new spec['class'](this, spec);\r\n };\r\n // Returns a boolean about whether the view is okay to instantiate at some point\r\n Calendar.prototype.isValidViewType = function (viewType) {\r\n return Boolean(this.viewSpecManager.getViewSpec(viewType));\r\n };\r\n Calendar.prototype.changeView = function (viewName, dateOrRange) {\r\n if (dateOrRange) {\r\n if (dateOrRange.start && dateOrRange.end) { // a range\r\n this.optionsManager.recordOverrides({\r\n visibleRange: dateOrRange\r\n });\r\n }\r\n else { // a date\r\n this.currentDate = this.moment(dateOrRange).stripZone(); // just like gotoDate\r\n }\r\n }\r\n this.renderView(viewName);\r\n };\r\n // Forces navigation to a view for the given date.\r\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\r\n Calendar.prototype.zoomTo = function (newDate, viewType) {\r\n var spec;\r\n viewType = viewType || 'day'; // day is default zoom\r\n spec = this.viewSpecManager.getViewSpec(viewType) ||\r\n this.viewSpecManager.getUnitViewSpec(viewType);\r\n this.currentDate = newDate.clone();\r\n this.renderView(spec ? spec.type : null);\r\n };\r\n // Current Date\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initCurrentDate = function () {\r\n var defaultDateInput = this.opt('defaultDate');\r\n // compute the initial ambig-timezone date\r\n if (defaultDateInput != null) {\r\n this.currentDate = this.moment(defaultDateInput).stripZone();\r\n }\r\n else {\r\n this.currentDate = this.getNow(); // getNow already returns unzoned\r\n }\r\n };\r\n Calendar.prototype.prev = function () {\r\n var view = this.view;\r\n var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile'));\r\n if (prevInfo.isValid) {\r\n this.currentDate = prevInfo.date;\r\n this.renderView();\r\n }\r\n };\r\n Calendar.prototype.next = function () {\r\n var view = this.view;\r\n var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile'));\r\n if (nextInfo.isValid) {\r\n this.currentDate = nextInfo.date;\r\n this.renderView();\r\n }\r\n };\r\n Calendar.prototype.prevYear = function () {\r\n this.currentDate.add(-1, 'years');\r\n this.renderView();\r\n };\r\n Calendar.prototype.nextYear = function () {\r\n this.currentDate.add(1, 'years');\r\n this.renderView();\r\n };\r\n Calendar.prototype.today = function () {\r\n this.currentDate = this.getNow(); // should deny like prev/next?\r\n this.renderView();\r\n };\r\n Calendar.prototype.gotoDate = function (zonedDateInput) {\r\n this.currentDate = this.moment(zonedDateInput).stripZone();\r\n this.renderView();\r\n };\r\n Calendar.prototype.incrementDate = function (delta) {\r\n this.currentDate.add(moment.duration(delta));\r\n this.renderView();\r\n };\r\n // for external API\r\n Calendar.prototype.getDate = function () {\r\n return this.applyTimezone(this.currentDate); // infuse the calendar's timezone\r\n };\r\n // Loading Triggering\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // Should be called when any type of async data fetching begins\r\n Calendar.prototype.pushLoading = function () {\r\n if (!(this.loadingLevel++)) {\r\n this.publiclyTrigger('loading', [true, this.view]);\r\n }\r\n };\r\n // Should be called when any type of async data fetching completes\r\n Calendar.prototype.popLoading = function () {\r\n if (!(--this.loadingLevel)) {\r\n this.publiclyTrigger('loading', [false, this.view]);\r\n }\r\n };\r\n // High-level Rendering\r\n // -----------------------------------------------------------------------------------\r\n Calendar.prototype.render = function () {\r\n if (!this.contentEl) {\r\n this.initialRender();\r\n }\r\n else if (this.elementVisible()) {\r\n // mainly for the public API\r\n this.calcSize();\r\n this.updateViewSize();\r\n }\r\n };\r\n Calendar.prototype.initialRender = function () {\r\n var _this = this;\r\n var el = this.el;\r\n el.addClass('fc');\r\n // event delegation for nav links\r\n el.on('click.fc', 'a[data-goto]', function (ev) {\r\n var anchorEl = $(ev.currentTarget);\r\n var gotoOptions = anchorEl.data('goto'); // will automatically parse JSON\r\n var date = _this.moment(gotoOptions.date);\r\n var viewType = gotoOptions.type;\r\n // property like \"navLinkDayClick\". might be a string or a function\r\n var customAction = _this.view.opt('navLink' + util_1.capitaliseFirstLetter(viewType) + 'Click');\r\n if (typeof customAction === 'function') {\r\n customAction(date, ev);\r\n }\r\n else {\r\n if (typeof customAction === 'string') {\r\n viewType = customAction;\r\n }\r\n _this.zoomTo(date, viewType);\r\n }\r\n });\r\n // called immediately, and upon option change\r\n this.optionsManager.watch('settingTheme', ['?theme', '?themeSystem'], function (opts) {\r\n var themeClass = ThemeRegistry_1.getThemeSystemClass(opts.themeSystem || opts.theme);\r\n var theme = new themeClass(_this.optionsManager);\r\n var widgetClass = theme.getClass('widget');\r\n _this.theme = theme;\r\n if (widgetClass) {\r\n el.addClass(widgetClass);\r\n }\r\n }, function () {\r\n var widgetClass = _this.theme.getClass('widget');\r\n _this.theme = null;\r\n if (widgetClass) {\r\n el.removeClass(widgetClass);\r\n }\r\n });\r\n this.optionsManager.watch('settingBusinessHourGenerator', ['?businessHours'], function (deps) {\r\n _this.businessHourGenerator = new BusinessHourGenerator_1.default(deps.businessHours, _this);\r\n if (_this.view) {\r\n _this.view.set('businessHourGenerator', _this.businessHourGenerator);\r\n }\r\n }, function () {\r\n _this.businessHourGenerator = null;\r\n });\r\n // called immediately, and upon option change.\r\n // HACK: locale often affects isRTL, so we explicitly listen to that too.\r\n this.optionsManager.watch('applyingDirClasses', ['?isRTL', '?locale'], function (opts) {\r\n el.toggleClass('fc-ltr', !opts.isRTL);\r\n el.toggleClass('fc-rtl', opts.isRTL);\r\n });\r\n this.contentEl = $(\"
\").prependTo(el);\r\n this.initToolbars();\r\n this.renderHeader();\r\n this.renderFooter();\r\n this.renderView(this.opt('defaultView'));\r\n if (this.opt('handleWindowResize')) {\r\n $(window).resize(this.windowResizeProxy = util_1.debounce(// prevents rapid calls\r\n this.windowResize.bind(this), this.opt('windowResizeDelay')));\r\n }\r\n };\r\n Calendar.prototype.destroy = function () {\r\n if (this.view) {\r\n this.clearView();\r\n }\r\n this.toolbarsManager.proxyCall('removeElement');\r\n this.contentEl.remove();\r\n this.el.removeClass('fc fc-ltr fc-rtl');\r\n // removes theme-related root className\r\n this.optionsManager.unwatch('settingTheme');\r\n this.optionsManager.unwatch('settingBusinessHourGenerator');\r\n this.el.off('.fc'); // unbind nav link handlers\r\n if (this.windowResizeProxy) {\r\n $(window).unbind('resize', this.windowResizeProxy);\r\n this.windowResizeProxy = null;\r\n }\r\n GlobalEmitter_1.default.unneeded();\r\n };\r\n Calendar.prototype.elementVisible = function () {\r\n return this.el.is(':visible');\r\n };\r\n // Render Queue\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.bindViewHandlers = function (view) {\r\n var _this = this;\r\n view.watch('titleForCalendar', ['title'], function (deps) {\r\n if (view === _this.view) { // hack\r\n _this.setToolbarsTitle(deps.title);\r\n }\r\n });\r\n view.watch('dateProfileForCalendar', ['dateProfile'], function (deps) {\r\n if (view === _this.view) { // hack\r\n _this.currentDate = deps.dateProfile.date; // might have been constrained by view dates\r\n _this.updateToolbarButtons(deps.dateProfile);\r\n }\r\n });\r\n };\r\n Calendar.prototype.unbindViewHandlers = function (view) {\r\n view.unwatch('titleForCalendar');\r\n view.unwatch('dateProfileForCalendar');\r\n };\r\n // View Rendering\r\n // -----------------------------------------------------------------------------------\r\n // Renders a view because of a date change, view-type change, or for the first time.\r\n // If not given a viewType, keep the current view but render different dates.\r\n // Accepts an optional scroll state to restore to.\r\n Calendar.prototype.renderView = function (viewType) {\r\n var oldView = this.view;\r\n var newView;\r\n this.freezeContentHeight();\r\n if (oldView && viewType && oldView.type !== viewType) {\r\n this.clearView();\r\n }\r\n // if viewType changed, or the view was never created, create a fresh view\r\n if (!this.view && viewType) {\r\n newView = this.view =\r\n this.viewsByType[viewType] ||\r\n (this.viewsByType[viewType] = this.instantiateView(viewType));\r\n this.bindViewHandlers(newView);\r\n newView.startBatchRender(); // so that setElement+setDate rendering are joined\r\n newView.setElement($(\"
\").appendTo(this.contentEl));\r\n this.toolbarsManager.proxyCall('activateButton', viewType);\r\n }\r\n if (this.view) {\r\n // prevent unnecessary change firing\r\n if (this.view.get('businessHourGenerator') !== this.businessHourGenerator) {\r\n this.view.set('businessHourGenerator', this.businessHourGenerator);\r\n }\r\n this.view.setDate(this.currentDate);\r\n if (newView) {\r\n newView.stopBatchRender();\r\n }\r\n }\r\n this.thawContentHeight();\r\n };\r\n // Unrenders the current view and reflects this change in the Header.\r\n // Unregsiters the `view`, but does not remove from viewByType hash.\r\n Calendar.prototype.clearView = function () {\r\n var currentView = this.view;\r\n this.toolbarsManager.proxyCall('deactivateButton', currentView.type);\r\n this.unbindViewHandlers(currentView);\r\n currentView.removeElement();\r\n currentView.unsetDate(); // so bindViewHandlers doesn't fire with old values next time\r\n this.view = null;\r\n };\r\n // Destroys the view, including the view object. Then, re-instantiates it and renders it.\r\n // Maintains the same scroll state.\r\n // TODO: maintain any other user-manipulated state.\r\n Calendar.prototype.reinitView = function () {\r\n var oldView = this.view;\r\n var scroll = oldView.queryScroll(); // wouldn't be so complicated if Calendar owned the scroll\r\n this.freezeContentHeight();\r\n this.clearView();\r\n this.calcSize();\r\n this.renderView(oldView.type); // needs the type to freshly render\r\n this.view.applyScroll(scroll);\r\n this.thawContentHeight();\r\n };\r\n // Resizing\r\n // -----------------------------------------------------------------------------------\r\n Calendar.prototype.getSuggestedViewHeight = function () {\r\n if (this.suggestedViewHeight == null) {\r\n this.calcSize();\r\n }\r\n return this.suggestedViewHeight;\r\n };\r\n Calendar.prototype.isHeightAuto = function () {\r\n return this.opt('contentHeight') === 'auto' || this.opt('height') === 'auto';\r\n };\r\n Calendar.prototype.updateViewSize = function (isResize) {\r\n if (isResize === void 0) { isResize = false; }\r\n var view = this.view;\r\n var scroll;\r\n if (!this.ignoreUpdateViewSize && view) {\r\n if (isResize) {\r\n this.calcSize();\r\n scroll = view.queryScroll();\r\n }\r\n this.ignoreUpdateViewSize++;\r\n view.updateSize(this.getSuggestedViewHeight(), this.isHeightAuto(), isResize);\r\n this.ignoreUpdateViewSize--;\r\n if (isResize) {\r\n view.applyScroll(scroll);\r\n }\r\n return true; // signal success\r\n }\r\n };\r\n Calendar.prototype.calcSize = function () {\r\n if (this.elementVisible()) {\r\n this._calcSize();\r\n }\r\n };\r\n Calendar.prototype._calcSize = function () {\r\n var contentHeightInput = this.opt('contentHeight');\r\n var heightInput = this.opt('height');\r\n if (typeof contentHeightInput === 'number') { // exists and not 'auto'\r\n this.suggestedViewHeight = contentHeightInput;\r\n }\r\n else if (typeof contentHeightInput === 'function') { // exists and is a function\r\n this.suggestedViewHeight = contentHeightInput();\r\n }\r\n else if (typeof heightInput === 'number') { // exists and not 'auto'\r\n this.suggestedViewHeight = heightInput - this.queryToolbarsHeight();\r\n }\r\n else if (typeof heightInput === 'function') { // exists and is a function\r\n this.suggestedViewHeight = heightInput() - this.queryToolbarsHeight();\r\n }\r\n else if (heightInput === 'parent') { // set to height of parent element\r\n this.suggestedViewHeight = this.el.parent().height() - this.queryToolbarsHeight();\r\n }\r\n else {\r\n this.suggestedViewHeight = Math.round(this.contentEl.width() /\r\n Math.max(this.opt('aspectRatio'), .5));\r\n }\r\n };\r\n Calendar.prototype.windowResize = function (ev) {\r\n if (\r\n // the purpose: so we don't process jqui \"resize\" events that have bubbled up\r\n // cast to any because .target, which is Element, can't be compared to window for some reason.\r\n ev.target === window &&\r\n this.view &&\r\n this.view.isDatesRendered) {\r\n if (this.updateViewSize(true)) { // isResize=true, returns true on success\r\n this.publiclyTrigger('windowResize', [this.view]);\r\n }\r\n }\r\n };\r\n /* Height \"Freezing\"\r\n -----------------------------------------------------------------------------*/\r\n Calendar.prototype.freezeContentHeight = function () {\r\n if (!(this.freezeContentHeightDepth++)) {\r\n this.forceFreezeContentHeight();\r\n }\r\n };\r\n Calendar.prototype.forceFreezeContentHeight = function () {\r\n this.contentEl.css({\r\n width: '100%',\r\n height: this.contentEl.height(),\r\n overflow: 'hidden'\r\n });\r\n };\r\n Calendar.prototype.thawContentHeight = function () {\r\n this.freezeContentHeightDepth--;\r\n // always bring back to natural height\r\n this.contentEl.css({\r\n width: '',\r\n height: '',\r\n overflow: ''\r\n });\r\n // but if there are future thaws, re-freeze\r\n if (this.freezeContentHeightDepth) {\r\n this.forceFreezeContentHeight();\r\n }\r\n };\r\n // Toolbar\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initToolbars = function () {\r\n this.header = new Toolbar_1.default(this, this.computeHeaderOptions());\r\n this.footer = new Toolbar_1.default(this, this.computeFooterOptions());\r\n this.toolbarsManager = new Iterator_1.default([this.header, this.footer]);\r\n };\r\n Calendar.prototype.computeHeaderOptions = function () {\r\n return {\r\n extraClasses: 'fc-header-toolbar',\r\n layout: this.opt('header')\r\n };\r\n };\r\n Calendar.prototype.computeFooterOptions = function () {\r\n return {\r\n extraClasses: 'fc-footer-toolbar',\r\n layout: this.opt('footer')\r\n };\r\n };\r\n // can be called repeatedly and Header will rerender\r\n Calendar.prototype.renderHeader = function () {\r\n var header = this.header;\r\n header.setToolbarOptions(this.computeHeaderOptions());\r\n header.render();\r\n if (header.el) {\r\n this.el.prepend(header.el);\r\n }\r\n };\r\n // can be called repeatedly and Footer will rerender\r\n Calendar.prototype.renderFooter = function () {\r\n var footer = this.footer;\r\n footer.setToolbarOptions(this.computeFooterOptions());\r\n footer.render();\r\n if (footer.el) {\r\n this.el.append(footer.el);\r\n }\r\n };\r\n Calendar.prototype.setToolbarsTitle = function (title) {\r\n this.toolbarsManager.proxyCall('updateTitle', title);\r\n };\r\n Calendar.prototype.updateToolbarButtons = function (dateProfile) {\r\n var now = this.getNow();\r\n var view = this.view;\r\n var todayInfo = view.dateProfileGenerator.build(now);\r\n var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile'));\r\n var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile'));\r\n this.toolbarsManager.proxyCall((todayInfo.isValid && !dateProfile.currentUnzonedRange.containsDate(now)) ?\r\n 'enableButton' :\r\n 'disableButton', 'today');\r\n this.toolbarsManager.proxyCall(prevInfo.isValid ?\r\n 'enableButton' :\r\n 'disableButton', 'prev');\r\n this.toolbarsManager.proxyCall(nextInfo.isValid ?\r\n 'enableButton' :\r\n 'disableButton', 'next');\r\n };\r\n Calendar.prototype.queryToolbarsHeight = function () {\r\n return this.toolbarsManager.items.reduce(function (accumulator, toolbar) {\r\n var toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin\r\n return accumulator + toolbarHeight;\r\n }, 0);\r\n };\r\n // Selection\r\n // -----------------------------------------------------------------------------------------------------------------\r\n // this public method receives start/end dates in any format, with any timezone\r\n Calendar.prototype.select = function (zonedStartInput, zonedEndInput) {\r\n this.view.select(this.buildSelectFootprint.apply(this, arguments));\r\n };\r\n Calendar.prototype.unselect = function () {\r\n if (this.view) {\r\n this.view.unselect();\r\n }\r\n };\r\n // Given arguments to the select method in the API, returns a span (unzoned start/end and other info)\r\n Calendar.prototype.buildSelectFootprint = function (zonedStartInput, zonedEndInput) {\r\n var start = this.moment(zonedStartInput).stripZone();\r\n var end;\r\n if (zonedEndInput) {\r\n end = this.moment(zonedEndInput).stripZone();\r\n }\r\n else if (start.hasTime()) {\r\n end = start.clone().add(this.defaultTimedEventDuration);\r\n }\r\n else {\r\n end = start.clone().add(this.defaultAllDayEventDuration);\r\n }\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), !start.hasTime());\r\n };\r\n // Date Utils\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initMomentInternals = function () {\r\n var _this = this;\r\n this.defaultAllDayEventDuration = moment.duration(this.opt('defaultAllDayEventDuration'));\r\n this.defaultTimedEventDuration = moment.duration(this.opt('defaultTimedEventDuration'));\r\n // Called immediately, and when any of the options change.\r\n // Happens before any internal objects rebuild or rerender, because this is very core.\r\n this.optionsManager.watch('buildingMomentLocale', [\r\n '?locale', '?monthNames', '?monthNamesShort', '?dayNames', '?dayNamesShort',\r\n '?firstDay', '?weekNumberCalculation'\r\n ], function (opts) {\r\n var weekNumberCalculation = opts.weekNumberCalculation;\r\n var firstDay = opts.firstDay;\r\n var _week;\r\n // normalize\r\n if (weekNumberCalculation === 'iso') {\r\n weekNumberCalculation = 'ISO'; // normalize\r\n }\r\n var localeData = Object.create(// make a cheap copy\r\n locale_1.getMomentLocaleData(opts.locale) // will fall back to en\r\n );\r\n if (opts.monthNames) {\r\n localeData._months = opts.monthNames;\r\n }\r\n if (opts.monthNamesShort) {\r\n localeData._monthsShort = opts.monthNamesShort;\r\n }\r\n if (opts.dayNames) {\r\n localeData._weekdays = opts.dayNames;\r\n }\r\n if (opts.dayNamesShort) {\r\n localeData._weekdaysShort = opts.dayNamesShort;\r\n }\r\n if (firstDay == null && weekNumberCalculation === 'ISO') {\r\n firstDay = 1;\r\n }\r\n if (firstDay != null) {\r\n _week = Object.create(localeData._week); // _week: { dow: # }\r\n _week.dow = firstDay;\r\n localeData._week = _week;\r\n }\r\n if ( // whitelist certain kinds of input\r\n weekNumberCalculation === 'ISO' ||\r\n weekNumberCalculation === 'local' ||\r\n typeof weekNumberCalculation === 'function') {\r\n localeData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it\r\n }\r\n _this.localeData = localeData;\r\n // If the internal current date object already exists, move to new locale.\r\n // We do NOT need to do this technique for event dates, because this happens when converting to \"segments\".\r\n if (_this.currentDate) {\r\n _this.localizeMoment(_this.currentDate); // sets to localeData\r\n }\r\n });\r\n };\r\n // Builds a moment using the settings of the current calendar: timezone and locale.\r\n // Accepts anything the vanilla moment() constructor accepts.\r\n Calendar.prototype.moment = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var mom;\r\n if (this.opt('timezone') === 'local') {\r\n mom = moment_ext_1.default.apply(null, args);\r\n // Force the moment to be local, because momentExt doesn't guarantee it.\r\n if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone\r\n mom.local();\r\n }\r\n }\r\n else if (this.opt('timezone') === 'UTC') {\r\n mom = moment_ext_1.default.utc.apply(null, args); // process as UTC\r\n }\r\n else {\r\n mom = moment_ext_1.default.parseZone.apply(null, args); // let the input decide the zone\r\n }\r\n this.localizeMoment(mom); // TODO\r\n return mom;\r\n };\r\n Calendar.prototype.msToMoment = function (ms, forceAllDay) {\r\n var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC\r\n if (forceAllDay) {\r\n mom.stripTime();\r\n }\r\n else {\r\n mom = this.applyTimezone(mom); // may or may not apply locale\r\n }\r\n this.localizeMoment(mom);\r\n return mom;\r\n };\r\n Calendar.prototype.msToUtcMoment = function (ms, forceAllDay) {\r\n var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC\r\n if (forceAllDay) {\r\n mom.stripTime();\r\n }\r\n this.localizeMoment(mom);\r\n return mom;\r\n };\r\n // Updates the given moment's locale settings to the current calendar locale settings.\r\n Calendar.prototype.localizeMoment = function (mom) {\r\n mom._locale = this.localeData;\r\n };\r\n // Returns a boolean about whether or not the calendar knows how to calculate\r\n // the timezone offset of arbitrary dates in the current timezone.\r\n Calendar.prototype.getIsAmbigTimezone = function () {\r\n return this.opt('timezone') !== 'local' && this.opt('timezone') !== 'UTC';\r\n };\r\n // Returns a copy of the given date in the current timezone. Has no effect on dates without times.\r\n Calendar.prototype.applyTimezone = function (date) {\r\n if (!date.hasTime()) {\r\n return date.clone();\r\n }\r\n var zonedDate = this.moment(date.toArray());\r\n var timeAdjust = date.time().asMilliseconds() - zonedDate.time().asMilliseconds();\r\n var adjustedZonedDate;\r\n // Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396)\r\n if (timeAdjust) { // is the time result different than expected?\r\n adjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds\r\n if (date.time().asMilliseconds() - adjustedZonedDate.time().asMilliseconds() === 0) { // does it match perfectly now?\r\n zonedDate = adjustedZonedDate;\r\n }\r\n }\r\n return zonedDate;\r\n };\r\n /*\r\n Assumes the footprint is non-open-ended.\r\n */\r\n Calendar.prototype.footprintToDateProfile = function (componentFootprint, ignoreEnd) {\r\n if (ignoreEnd === void 0) { ignoreEnd = false; }\r\n var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs);\r\n var end;\r\n if (!ignoreEnd) {\r\n end = moment_ext_1.default.utc(componentFootprint.unzonedRange.endMs);\r\n }\r\n if (componentFootprint.isAllDay) {\r\n start.stripTime();\r\n if (end) {\r\n end.stripTime();\r\n }\r\n }\r\n else {\r\n start = this.applyTimezone(start);\r\n if (end) {\r\n end = this.applyTimezone(end);\r\n }\r\n }\r\n this.localizeMoment(start);\r\n if (end) {\r\n this.localizeMoment(end);\r\n }\r\n return new EventDateProfile_1.default(start, end, this);\r\n };\r\n // Returns a moment for the current date, as defined by the client's computer or from the `now` option.\r\n // Will return an moment with an ambiguous timezone.\r\n Calendar.prototype.getNow = function () {\r\n var now = this.opt('now');\r\n if (typeof now === 'function') {\r\n now = now();\r\n }\r\n return this.moment(now).stripZone();\r\n };\r\n // Produces a human-readable string for the given duration.\r\n // Side-effect: changes the locale of the given duration.\r\n Calendar.prototype.humanizeDuration = function (duration) {\r\n return duration.locale(this.opt('locale')).humanize();\r\n };\r\n // will return `null` if invalid range\r\n Calendar.prototype.parseUnzonedRange = function (rangeInput) {\r\n var start = null;\r\n var end = null;\r\n if (rangeInput.start) {\r\n start = this.moment(rangeInput.start).stripZone();\r\n }\r\n if (rangeInput.end) {\r\n end = this.moment(rangeInput.end).stripZone();\r\n }\r\n if (!start && !end) {\r\n return null;\r\n }\r\n if (start && end && end.isBefore(start)) {\r\n return null;\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n // Event-Date Utilities\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.initEventManager = function () {\r\n var _this = this;\r\n var eventManager = new EventManager_1.default(this);\r\n var rawSources = this.opt('eventSources') || [];\r\n var singleRawSource = this.opt('events');\r\n this.eventManager = eventManager;\r\n if (singleRawSource) {\r\n rawSources.unshift(singleRawSource);\r\n }\r\n eventManager.on('release', function (eventsPayload) {\r\n _this.trigger('eventsReset', eventsPayload);\r\n });\r\n eventManager.freeze();\r\n rawSources.forEach(function (rawSource) {\r\n var source = EventSourceParser_1.default.parse(rawSource, _this);\r\n if (source) {\r\n eventManager.addSource(source);\r\n }\r\n });\r\n eventManager.thaw();\r\n };\r\n Calendar.prototype.requestEvents = function (start, end) {\r\n return this.eventManager.requestEvents(start, end, this.opt('timezone'), !this.opt('lazyFetching'));\r\n };\r\n // Get an event's normalized end date. If not present, calculate it from the defaults.\r\n Calendar.prototype.getEventEnd = function (event) {\r\n if (event.end) {\r\n return event.end.clone();\r\n }\r\n else {\r\n return this.getDefaultEventEnd(event.allDay, event.start);\r\n }\r\n };\r\n // Given an event's allDay status and start date, return what its fallback end date should be.\r\n // TODO: rename to computeDefaultEventEnd\r\n Calendar.prototype.getDefaultEventEnd = function (allDay, zonedStart) {\r\n var end = zonedStart.clone();\r\n if (allDay) {\r\n end.stripTime().add(this.defaultAllDayEventDuration);\r\n }\r\n else {\r\n end.add(this.defaultTimedEventDuration);\r\n }\r\n if (this.getIsAmbigTimezone()) {\r\n end.stripZone(); // we don't know what the tzo should be\r\n }\r\n return end;\r\n };\r\n // Public Events API\r\n // -----------------------------------------------------------------------------------------------------------------\r\n Calendar.prototype.rerenderEvents = function () {\r\n this.view.flash('displayingEvents');\r\n };\r\n Calendar.prototype.refetchEvents = function () {\r\n this.eventManager.refetchAllSources();\r\n };\r\n Calendar.prototype.renderEvents = function (eventInputs, isSticky) {\r\n this.eventManager.freeze();\r\n for (var i = 0; i < eventInputs.length; i++) {\r\n this.renderEvent(eventInputs[i], isSticky);\r\n }\r\n this.eventManager.thaw();\r\n };\r\n Calendar.prototype.renderEvent = function (eventInput, isSticky) {\r\n if (isSticky === void 0) { isSticky = false; }\r\n var eventManager = this.eventManager;\r\n var eventDef = EventDefParser_1.default.parse(eventInput, eventInput.source || eventManager.stickySource);\r\n if (eventDef) {\r\n eventManager.addEventDef(eventDef, isSticky);\r\n }\r\n };\r\n // legacyQuery operates on legacy event instance objects\r\n Calendar.prototype.removeEvents = function (legacyQuery) {\r\n var eventManager = this.eventManager;\r\n var legacyInstances = [];\r\n var idMap = {};\r\n var eventDef;\r\n var i;\r\n if (legacyQuery == null) { // shortcut for removing all\r\n eventManager.removeAllEventDefs(); // persist=true\r\n }\r\n else {\r\n eventManager.getEventInstances().forEach(function (eventInstance) {\r\n legacyInstances.push(eventInstance.toLegacy());\r\n });\r\n legacyInstances = filterLegacyEventInstances(legacyInstances, legacyQuery);\r\n // compute unique IDs\r\n for (i = 0; i < legacyInstances.length; i++) {\r\n eventDef = this.eventManager.getEventDefByUid(legacyInstances[i]._id);\r\n idMap[eventDef.id] = true;\r\n }\r\n eventManager.freeze();\r\n for (i in idMap) { // reuse `i` as an \"id\"\r\n eventManager.removeEventDefsById(i); // persist=true\r\n }\r\n eventManager.thaw();\r\n }\r\n };\r\n // legacyQuery operates on legacy event instance objects\r\n Calendar.prototype.clientEvents = function (legacyQuery) {\r\n var legacyEventInstances = [];\r\n this.eventManager.getEventInstances().forEach(function (eventInstance) {\r\n legacyEventInstances.push(eventInstance.toLegacy());\r\n });\r\n return filterLegacyEventInstances(legacyEventInstances, legacyQuery);\r\n };\r\n Calendar.prototype.updateEvents = function (eventPropsArray) {\r\n this.eventManager.freeze();\r\n for (var i = 0; i < eventPropsArray.length; i++) {\r\n this.updateEvent(eventPropsArray[i]);\r\n }\r\n this.eventManager.thaw();\r\n };\r\n Calendar.prototype.updateEvent = function (eventProps) {\r\n var eventDef = this.eventManager.getEventDefByUid(eventProps._id);\r\n var eventInstance;\r\n var eventDefMutation;\r\n if (eventDef instanceof SingleEventDef_1.default) {\r\n eventInstance = eventDef.buildInstance();\r\n eventDefMutation = EventDefMutation_1.default.createFromRawProps(eventInstance, eventProps, // raw props\r\n null // largeUnit -- who uses it?\r\n );\r\n this.eventManager.mutateEventsWithId(eventDef.id, eventDefMutation); // will release\r\n }\r\n };\r\n // Public Event Sources API\r\n // ------------------------------------------------------------------------------------\r\n Calendar.prototype.getEventSources = function () {\r\n return this.eventManager.otherSources.slice(); // clone\r\n };\r\n Calendar.prototype.getEventSourceById = function (id) {\r\n return this.eventManager.getSourceById(EventSource_1.default.normalizeId(id));\r\n };\r\n Calendar.prototype.addEventSource = function (sourceInput) {\r\n var source = EventSourceParser_1.default.parse(sourceInput, this);\r\n if (source) {\r\n this.eventManager.addSource(source);\r\n }\r\n };\r\n Calendar.prototype.removeEventSources = function (sourceMultiQuery) {\r\n var eventManager = this.eventManager;\r\n var sources;\r\n var i;\r\n if (sourceMultiQuery == null) {\r\n this.eventManager.removeAllSources();\r\n }\r\n else {\r\n sources = eventManager.multiQuerySources(sourceMultiQuery);\r\n eventManager.freeze();\r\n for (i = 0; i < sources.length; i++) {\r\n eventManager.removeSource(sources[i]);\r\n }\r\n eventManager.thaw();\r\n }\r\n };\r\n Calendar.prototype.removeEventSource = function (sourceQuery) {\r\n var eventManager = this.eventManager;\r\n var sources = eventManager.querySources(sourceQuery);\r\n var i;\r\n eventManager.freeze();\r\n for (i = 0; i < sources.length; i++) {\r\n eventManager.removeSource(sources[i]);\r\n }\r\n eventManager.thaw();\r\n };\r\n Calendar.prototype.refetchEventSources = function (sourceMultiQuery) {\r\n var eventManager = this.eventManager;\r\n var sources = eventManager.multiQuerySources(sourceMultiQuery);\r\n var i;\r\n eventManager.freeze();\r\n for (i = 0; i < sources.length; i++) {\r\n eventManager.refetchSource(sources[i]);\r\n }\r\n eventManager.thaw();\r\n };\r\n // not for internal use. use options module directly instead.\r\n Calendar.defaults = options_1.globalDefaults;\r\n Calendar.englishDefaults = options_1.englishDefaults;\r\n Calendar.rtlDefaults = options_1.rtlDefaults;\r\n return Calendar;\r\n}());\r\nexports.default = Calendar;\r\nEmitterMixin_1.default.mixInto(Calendar);\r\nListenerMixin_1.default.mixInto(Calendar);\r\nfunction filterLegacyEventInstances(legacyEventInstances, legacyQuery) {\r\n if (legacyQuery == null) {\r\n return legacyEventInstances;\r\n }\r\n else if ($.isFunction(legacyQuery)) {\r\n return legacyEventInstances.filter(legacyQuery);\r\n }\r\n else { // an event ID\r\n legacyQuery += ''; // normalize to string\r\n return legacyEventInstances.filter(function (legacyEventInstance) {\r\n // soft comparison because id not be normalized to string\r\n // tslint:disable-next-line\r\n return legacyEventInstance.id == legacyQuery ||\r\n legacyEventInstance._id === legacyQuery; // can specify internal id, but must exactly match\r\n });\r\n }\r\n}\r\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar exportHooks = __webpack_require__(18);\r\nvar util_1 = __webpack_require__(4);\r\nvar moment_ext_1 = __webpack_require__(11);\r\nvar ListenerMixin_1 = __webpack_require__(7);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar SingleEventDef_1 = __webpack_require__(9);\r\nvar EventInstanceGroup_1 = __webpack_require__(20);\r\nvar EventSource_1 = __webpack_require__(6);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar ExternalDropping = /** @class */ (function (_super) {\r\n tslib_1.__extends(ExternalDropping, _super);\r\n function ExternalDropping() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.isDragging = false; // jqui-dragging an external element? boolean\r\n return _this;\r\n }\r\n /*\r\n component impements:\r\n - eventRangesToEventFootprints\r\n - isEventInstanceGroupAllowed\r\n - isExternalInstanceGroupAllowed\r\n - renderDrag\r\n - unrenderDrag\r\n */\r\n ExternalDropping.prototype.end = function () {\r\n if (this.dragListener) {\r\n this.dragListener.endInteraction();\r\n }\r\n };\r\n ExternalDropping.prototype.bindToDocument = function () {\r\n this.listenTo($(document), {\r\n dragstart: this.handleDragStart,\r\n sortstart: this.handleDragStart // jqui\r\n });\r\n };\r\n ExternalDropping.prototype.unbindFromDocument = function () {\r\n this.stopListeningTo($(document));\r\n };\r\n // Called when a jQuery UI drag is initiated anywhere in the DOM\r\n ExternalDropping.prototype.handleDragStart = function (ev, ui) {\r\n var el;\r\n var accept;\r\n if (this.opt('droppable')) { // only listen if this setting is on\r\n el = $((ui ? ui.item : null) || ev.target);\r\n // Test that the dragged element passes the dropAccept selector or filter function.\r\n // FYI, the default is \"*\" (matches all)\r\n accept = this.opt('dropAccept');\r\n if ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) {\r\n if (!this.isDragging) { // prevent double-listening if fired twice\r\n this.listenToExternalDrag(el, ev, ui);\r\n }\r\n }\r\n }\r\n };\r\n // Called when a jQuery UI drag starts and it needs to be monitored for dropping\r\n ExternalDropping.prototype.listenToExternalDrag = function (el, ev, ui) {\r\n var _this = this;\r\n var component = this.component;\r\n var view = this.view;\r\n var meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create\r\n var singleEventDef; // a null value signals an unsuccessful drag\r\n // listener that tracks mouse movement over date-associated pixel regions\r\n var dragListener = this.dragListener = new HitDragListener_1.default(component, {\r\n interactionStart: function () {\r\n _this.isDragging = true;\r\n },\r\n hitOver: function (hit) {\r\n var isAllowed = true;\r\n var hitFootprint = hit.component.getSafeHitFootprint(hit); // hit might not belong to this grid\r\n var mutatedEventInstanceGroup;\r\n if (hitFootprint) {\r\n singleEventDef = _this.computeExternalDrop(hitFootprint, meta);\r\n if (singleEventDef) {\r\n mutatedEventInstanceGroup = new EventInstanceGroup_1.default(singleEventDef.buildInstances());\r\n isAllowed = meta.eventProps ? // isEvent?\r\n component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup) :\r\n component.isExternalInstanceGroupAllowed(mutatedEventInstanceGroup);\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n if (!isAllowed) {\r\n singleEventDef = null;\r\n util_1.disableCursor();\r\n }\r\n if (singleEventDef) {\r\n component.renderDrag(// called without a seg parameter\r\n component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, view.calendar)));\r\n }\r\n },\r\n hitOut: function () {\r\n singleEventDef = null; // signal unsuccessful\r\n },\r\n hitDone: function () {\r\n util_1.enableCursor();\r\n component.unrenderDrag();\r\n },\r\n interactionEnd: function (ev) {\r\n if (singleEventDef) { // element was dropped on a valid hit\r\n view.reportExternalDrop(singleEventDef, Boolean(meta.eventProps), // isEvent\r\n Boolean(meta.stick), // isSticky\r\n el, ev, ui);\r\n }\r\n _this.isDragging = false;\r\n _this.dragListener = null;\r\n }\r\n });\r\n dragListener.startDrag(ev); // start listening immediately\r\n };\r\n // Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object),\r\n // returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null.\r\n // Returning a null value signals an invalid drop hit.\r\n // DOES NOT consider overlap/constraint.\r\n // Assumes both footprints are non-open-ended.\r\n ExternalDropping.prototype.computeExternalDrop = function (componentFootprint, meta) {\r\n var calendar = this.view.calendar;\r\n var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs).stripZone();\r\n var end;\r\n var eventDef;\r\n if (componentFootprint.isAllDay) {\r\n // if dropped on an all-day span, and element's metadata specified a time, set it\r\n if (meta.startTime) {\r\n start.time(meta.startTime);\r\n }\r\n else {\r\n start.stripTime();\r\n }\r\n }\r\n if (meta.duration) {\r\n end = start.clone().add(meta.duration);\r\n }\r\n start = calendar.applyTimezone(start);\r\n if (end) {\r\n end = calendar.applyTimezone(end);\r\n }\r\n eventDef = SingleEventDef_1.default.parse($.extend({}, meta.eventProps, {\r\n start: start,\r\n end: end\r\n }), new EventSource_1.default(calendar));\r\n return eventDef;\r\n };\r\n return ExternalDropping;\r\n}(Interaction_1.default));\r\nexports.default = ExternalDropping;\r\nListenerMixin_1.default.mixInto(ExternalDropping);\r\n/* External-Dragging-Element Data\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Require all HTML5 data-* attributes used by FullCalendar to have this prefix.\r\n// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event.\r\nexportHooks.dataAttrPrefix = '';\r\n// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure\r\n// to be used for Event Object creation.\r\n// A defined `.eventProps`, even when empty, indicates that an event should be created.\r\nfunction getDraggedElMeta(el) {\r\n var prefix = exportHooks.dataAttrPrefix;\r\n var eventProps; // properties for creating the event, not related to date/time\r\n var startTime; // a Duration\r\n var duration;\r\n var stick;\r\n if (prefix) {\r\n prefix += '-';\r\n }\r\n eventProps = el.data(prefix + 'event') || null;\r\n if (eventProps) {\r\n if (typeof eventProps === 'object') {\r\n eventProps = $.extend({}, eventProps); // make a copy\r\n }\r\n else { // something like 1 or true. still signal event creation\r\n eventProps = {};\r\n }\r\n // pluck special-cased date/time properties\r\n startTime = eventProps.start;\r\n if (startTime == null) {\r\n startTime = eventProps.time;\r\n } // accept 'time' as well\r\n duration = eventProps.duration;\r\n stick = eventProps.stick;\r\n delete eventProps.start;\r\n delete eventProps.time;\r\n delete eventProps.duration;\r\n delete eventProps.stick;\r\n }\r\n // fallback to standalone attribute values for each of the date/time properties\r\n if (startTime == null) {\r\n startTime = el.data(prefix + 'start');\r\n }\r\n if (startTime == null) {\r\n startTime = el.data(prefix + 'time');\r\n } // accept 'time' as well\r\n if (duration == null) {\r\n duration = el.data(prefix + 'duration');\r\n }\r\n if (stick == null) {\r\n stick = el.data(prefix + 'stick');\r\n }\r\n // massage into correct data types\r\n startTime = startTime != null ? moment.duration(startTime) : null;\r\n duration = duration != null ? moment.duration(duration) : null;\r\n stick = Boolean(stick);\r\n return { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick };\r\n}\r\n\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar EventResizing = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventResizing, _super);\r\n /*\r\n component impements:\r\n - bindSegHandlerToEl\r\n - publiclyTrigger\r\n - diffDates\r\n - eventRangesToEventFootprints\r\n - isEventInstanceGroupAllowed\r\n - getSafeHitFootprint\r\n */\r\n function EventResizing(component, eventPointing) {\r\n var _this = _super.call(this, component) || this;\r\n _this.isResizing = false;\r\n _this.eventPointing = eventPointing;\r\n return _this;\r\n }\r\n EventResizing.prototype.end = function () {\r\n if (this.dragListener) {\r\n this.dragListener.endInteraction();\r\n }\r\n };\r\n EventResizing.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n component.bindSegHandlerToEl(el, 'mousedown', this.handleMouseDown.bind(this));\r\n component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this));\r\n };\r\n EventResizing.prototype.handleMouseDown = function (seg, ev) {\r\n if (this.component.canStartResize(seg, ev)) {\r\n this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer'))\r\n .startInteraction(ev, { distance: 5 });\r\n }\r\n };\r\n EventResizing.prototype.handleTouchStart = function (seg, ev) {\r\n if (this.component.canStartResize(seg, ev)) {\r\n this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer'))\r\n .startInteraction(ev);\r\n }\r\n };\r\n // Creates a listener that tracks the user as they resize an event segment.\r\n // Generic enough to work with any type of Grid.\r\n EventResizing.prototype.buildDragListener = function (seg, isStart) {\r\n var _this = this;\r\n var component = this.component;\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var eventManager = calendar.eventManager;\r\n var el = seg.el;\r\n var eventDef = seg.footprint.eventDef;\r\n var eventInstance = seg.footprint.eventInstance;\r\n var isDragging;\r\n var resizeMutation; // zoned event date properties. falsy if invalid resize\r\n // Tracks mouse movement over the *grid's* coordinate map\r\n var dragListener = this.dragListener = new HitDragListener_1.default(component, {\r\n scroll: this.opt('dragScroll'),\r\n subjectEl: el,\r\n interactionStart: function () {\r\n isDragging = false;\r\n },\r\n dragStart: function (ev) {\r\n isDragging = true;\r\n // ensure a mouseout on the manipulated event has been reported\r\n _this.eventPointing.handleMouseout(seg, ev);\r\n _this.segResizeStart(seg, ev);\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n var isAllowed = true;\r\n var origHitFootprint = component.getSafeHitFootprint(origHit);\r\n var hitFootprint = component.getSafeHitFootprint(hit);\r\n var mutatedEventInstanceGroup;\r\n if (origHitFootprint && hitFootprint) {\r\n resizeMutation = isStart ?\r\n _this.computeEventStartResizeMutation(origHitFootprint, hitFootprint, seg.footprint) :\r\n _this.computeEventEndResizeMutation(origHitFootprint, hitFootprint, seg.footprint);\r\n if (resizeMutation) {\r\n mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, resizeMutation);\r\n isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup);\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n if (!isAllowed) {\r\n resizeMutation = null;\r\n util_1.disableCursor();\r\n }\r\n else if (resizeMutation.isEmpty()) {\r\n // no change. (FYI, event dates might have zones)\r\n resizeMutation = null;\r\n }\r\n if (resizeMutation) {\r\n view.hideEventsWithId(seg.footprint.eventDef.id);\r\n view.renderEventResize(component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg);\r\n }\r\n },\r\n hitOut: function () {\r\n resizeMutation = null;\r\n },\r\n hitDone: function () {\r\n view.unrenderEventResize(seg);\r\n view.showEventsWithId(seg.footprint.eventDef.id);\r\n util_1.enableCursor();\r\n },\r\n interactionEnd: function (ev) {\r\n if (isDragging) {\r\n _this.segResizeStop(seg, ev);\r\n }\r\n if (resizeMutation) { // valid date to resize to?\r\n // no need to re-show original, will rerender all anyways. esp important if eventRenderWait\r\n view.reportEventResize(eventInstance, resizeMutation, el, ev);\r\n }\r\n _this.dragListener = null;\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Called before event segment resizing starts\r\n EventResizing.prototype.segResizeStart = function (seg, ev) {\r\n this.isResizing = true;\r\n this.component.publiclyTrigger('eventResizeStart', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // Called after event segment resizing stops\r\n EventResizing.prototype.segResizeStop = function (seg, ev) {\r\n this.isResizing = false;\r\n this.component.publiclyTrigger('eventResizeStop', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // Returns new date-information for an event segment being resized from its start\r\n EventResizing.prototype.computeEventStartResizeMutation = function (startFootprint, endFootprint, origEventFootprint) {\r\n var origRange = origEventFootprint.componentFootprint.unzonedRange;\r\n var startDelta = this.component.diffDates(endFootprint.unzonedRange.getStart(), startFootprint.unzonedRange.getStart());\r\n var dateMutation;\r\n var eventDefMutation;\r\n if (origRange.getStart().add(startDelta) < origRange.getEnd()) {\r\n dateMutation = new EventDefDateMutation_1.default();\r\n dateMutation.setStartDelta(startDelta);\r\n eventDefMutation = new EventDefMutation_1.default();\r\n eventDefMutation.setDateMutation(dateMutation);\r\n return eventDefMutation;\r\n }\r\n return false;\r\n };\r\n // Returns new date-information for an event segment being resized from its end\r\n EventResizing.prototype.computeEventEndResizeMutation = function (startFootprint, endFootprint, origEventFootprint) {\r\n var origRange = origEventFootprint.componentFootprint.unzonedRange;\r\n var endDelta = this.component.diffDates(endFootprint.unzonedRange.getEnd(), startFootprint.unzonedRange.getEnd());\r\n var dateMutation;\r\n var eventDefMutation;\r\n if (origRange.getEnd().add(endDelta) > origRange.getStart()) {\r\n dateMutation = new EventDefDateMutation_1.default();\r\n dateMutation.setEndDelta(endDelta);\r\n eventDefMutation = new EventDefMutation_1.default();\r\n eventDefMutation.setDateMutation(dateMutation);\r\n return eventDefMutation;\r\n }\r\n return false;\r\n };\r\n return EventResizing;\r\n}(Interaction_1.default));\r\nexports.default = EventResizing;\r\n\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventDefMutation_1 = __webpack_require__(39);\r\nvar EventDefDateMutation_1 = __webpack_require__(40);\r\nvar DragListener_1 = __webpack_require__(59);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar MouseFollower_1 = __webpack_require__(226);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar EventDragging = /** @class */ (function (_super) {\r\n tslib_1.__extends(EventDragging, _super);\r\n /*\r\n component implements:\r\n - bindSegHandlerToEl\r\n - publiclyTrigger\r\n - diffDates\r\n - eventRangesToEventFootprints\r\n - isEventInstanceGroupAllowed\r\n */\r\n function EventDragging(component, eventPointing) {\r\n var _this = _super.call(this, component) || this;\r\n _this.isDragging = false;\r\n _this.eventPointing = eventPointing;\r\n return _this;\r\n }\r\n EventDragging.prototype.end = function () {\r\n if (this.dragListener) {\r\n this.dragListener.endInteraction();\r\n }\r\n };\r\n EventDragging.prototype.getSelectionDelay = function () {\r\n var delay = this.opt('eventLongPressDelay');\r\n if (delay == null) {\r\n delay = this.opt('longPressDelay'); // fallback\r\n }\r\n return delay;\r\n };\r\n EventDragging.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n component.bindSegHandlerToEl(el, 'mousedown', this.handleMousedown.bind(this));\r\n component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this));\r\n };\r\n EventDragging.prototype.handleMousedown = function (seg, ev) {\r\n if (!this.component.shouldIgnoreMouse() &&\r\n this.component.canStartDrag(seg, ev)) {\r\n this.buildDragListener(seg).startInteraction(ev, { distance: 5 });\r\n }\r\n };\r\n EventDragging.prototype.handleTouchStart = function (seg, ev) {\r\n var component = this.component;\r\n var settings = {\r\n delay: this.view.isEventDefSelected(seg.footprint.eventDef) ? // already selected?\r\n 0 : this.getSelectionDelay()\r\n };\r\n if (component.canStartDrag(seg, ev)) {\r\n this.buildDragListener(seg).startInteraction(ev, settings);\r\n }\r\n else if (component.canStartSelection(seg, ev)) {\r\n this.buildSelectListener(seg).startInteraction(ev, settings);\r\n }\r\n };\r\n // seg isn't draggable, but let's use a generic DragListener\r\n // simply for the delay, so it can be selected.\r\n // Has side effect of setting/unsetting `dragListener`\r\n EventDragging.prototype.buildSelectListener = function (seg) {\r\n var _this = this;\r\n var view = this.view;\r\n var eventDef = seg.footprint.eventDef;\r\n var eventInstance = seg.footprint.eventInstance; // null for inverse-background events\r\n if (this.dragListener) {\r\n return this.dragListener;\r\n }\r\n var dragListener = this.dragListener = new DragListener_1.default({\r\n dragStart: function (ev) {\r\n if (dragListener.isTouch &&\r\n !view.isEventDefSelected(eventDef) &&\r\n eventInstance) {\r\n // if not previously selected, will fire after a delay. then, select the event\r\n view.selectEventInstance(eventInstance);\r\n }\r\n },\r\n interactionEnd: function (ev) {\r\n _this.dragListener = null;\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Builds a listener that will track user-dragging on an event segment.\r\n // Generic enough to work with any type of Grid.\r\n // Has side effect of setting/unsetting `dragListener`\r\n EventDragging.prototype.buildDragListener = function (seg) {\r\n var _this = this;\r\n var component = this.component;\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var eventManager = calendar.eventManager;\r\n var el = seg.el;\r\n var eventDef = seg.footprint.eventDef;\r\n var eventInstance = seg.footprint.eventInstance; // null for inverse-background events\r\n var isDragging;\r\n var mouseFollower; // A clone of the original element that will move with the mouse\r\n var eventDefMutation;\r\n if (this.dragListener) {\r\n return this.dragListener;\r\n }\r\n // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents\r\n // of the view.\r\n var dragListener = this.dragListener = new HitDragListener_1.default(view, {\r\n scroll: this.opt('dragScroll'),\r\n subjectEl: el,\r\n subjectCenter: true,\r\n interactionStart: function (ev) {\r\n seg.component = component; // for renderDrag\r\n isDragging = false;\r\n mouseFollower = new MouseFollower_1.default(seg.el, {\r\n additionalClass: 'fc-dragging',\r\n parentEl: view.el,\r\n opacity: dragListener.isTouch ? null : _this.opt('dragOpacity'),\r\n revertDuration: _this.opt('dragRevertDuration'),\r\n zIndex: 2 // one above the .fc-view\r\n });\r\n mouseFollower.hide(); // don't show until we know this is a real drag\r\n mouseFollower.start(ev);\r\n },\r\n dragStart: function (ev) {\r\n if (dragListener.isTouch &&\r\n !view.isEventDefSelected(eventDef) &&\r\n eventInstance) {\r\n // if not previously selected, will fire after a delay. then, select the event\r\n view.selectEventInstance(eventInstance);\r\n }\r\n isDragging = true;\r\n // ensure a mouseout on the manipulated event has been reported\r\n _this.eventPointing.handleMouseout(seg, ev);\r\n _this.segDragStart(seg, ev);\r\n view.hideEventsWithId(seg.footprint.eventDef.id);\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n var isAllowed = true;\r\n var origFootprint;\r\n var footprint;\r\n var mutatedEventInstanceGroup;\r\n // starting hit could be forced (DayGrid.limit)\r\n if (seg.hit) {\r\n origHit = seg.hit;\r\n }\r\n // hit might not belong to this grid, so query origin grid\r\n origFootprint = origHit.component.getSafeHitFootprint(origHit);\r\n footprint = hit.component.getSafeHitFootprint(hit);\r\n if (origFootprint && footprint) {\r\n eventDefMutation = _this.computeEventDropMutation(origFootprint, footprint, eventDef);\r\n if (eventDefMutation) {\r\n mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, eventDefMutation);\r\n isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup);\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n }\r\n else {\r\n isAllowed = false;\r\n }\r\n if (!isAllowed) {\r\n eventDefMutation = null;\r\n util_1.disableCursor();\r\n }\r\n // if a valid drop location, have the subclass render a visual indication\r\n if (eventDefMutation &&\r\n view.renderDrag(// truthy if rendered something\r\n component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg, dragListener.isTouch)) {\r\n mouseFollower.hide(); // if the subclass is already using a mock event \"helper\", hide our own\r\n }\r\n else {\r\n mouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping)\r\n }\r\n if (isOrig) {\r\n // needs to have moved hits to be a valid drop\r\n eventDefMutation = null;\r\n }\r\n },\r\n hitOut: function () {\r\n view.unrenderDrag(seg); // unrender whatever was done in renderDrag\r\n mouseFollower.show(); // show in case we are moving out of all hits\r\n eventDefMutation = null;\r\n },\r\n hitDone: function () {\r\n util_1.enableCursor();\r\n },\r\n interactionEnd: function (ev) {\r\n delete seg.component; // prevent side effects\r\n // do revert animation if hasn't changed. calls a callback when finished (whether animation or not)\r\n mouseFollower.stop(!eventDefMutation, function () {\r\n if (isDragging) {\r\n view.unrenderDrag(seg);\r\n _this.segDragStop(seg, ev);\r\n }\r\n view.showEventsWithId(seg.footprint.eventDef.id);\r\n if (eventDefMutation) {\r\n // no need to re-show original, will rerender all anyways. esp important if eventRenderWait\r\n view.reportEventDrop(eventInstance, eventDefMutation, el, ev);\r\n }\r\n });\r\n _this.dragListener = null;\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Called before event segment dragging starts\r\n EventDragging.prototype.segDragStart = function (seg, ev) {\r\n this.isDragging = true;\r\n this.component.publiclyTrigger('eventDragStart', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // Called after event segment dragging stops\r\n EventDragging.prototype.segDragStop = function (seg, ev) {\r\n this.isDragging = false;\r\n this.component.publiclyTrigger('eventDragStop', {\r\n context: seg.el[0],\r\n args: [\r\n seg.footprint.getEventLegacy(),\r\n ev,\r\n {},\r\n this.view\r\n ]\r\n });\r\n };\r\n // DOES NOT consider overlap/constraint\r\n EventDragging.prototype.computeEventDropMutation = function (startFootprint, endFootprint, eventDef) {\r\n var eventDefMutation = new EventDefMutation_1.default();\r\n eventDefMutation.setDateMutation(this.computeEventDateMutation(startFootprint, endFootprint));\r\n return eventDefMutation;\r\n };\r\n EventDragging.prototype.computeEventDateMutation = function (startFootprint, endFootprint) {\r\n var date0 = startFootprint.unzonedRange.getStart();\r\n var date1 = endFootprint.unzonedRange.getStart();\r\n var clearEnd = false;\r\n var forceTimed = false;\r\n var forceAllDay = false;\r\n var dateDelta;\r\n var dateMutation;\r\n if (startFootprint.isAllDay !== endFootprint.isAllDay) {\r\n clearEnd = true;\r\n if (endFootprint.isAllDay) {\r\n forceAllDay = true;\r\n date0.stripTime();\r\n }\r\n else {\r\n forceTimed = true;\r\n }\r\n }\r\n dateDelta = this.component.diffDates(date1, date0);\r\n dateMutation = new EventDefDateMutation_1.default();\r\n dateMutation.clearEnd = clearEnd;\r\n dateMutation.forceTimed = forceTimed;\r\n dateMutation.forceAllDay = forceAllDay;\r\n dateMutation.setDateDelta(dateDelta);\r\n return dateMutation;\r\n };\r\n return EventDragging;\r\n}(Interaction_1.default));\r\nexports.default = EventDragging;\r\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar DateSelecting = /** @class */ (function (_super) {\r\n tslib_1.__extends(DateSelecting, _super);\r\n /*\r\n component must implement:\r\n - bindDateHandlerToEl\r\n - getSafeHitFootprint\r\n - renderHighlight\r\n - unrenderHighlight\r\n */\r\n function DateSelecting(component) {\r\n var _this = _super.call(this, component) || this;\r\n _this.dragListener = _this.buildDragListener();\r\n return _this;\r\n }\r\n DateSelecting.prototype.end = function () {\r\n this.dragListener.endInteraction();\r\n };\r\n DateSelecting.prototype.getDelay = function () {\r\n var delay = this.opt('selectLongPressDelay');\r\n if (delay == null) {\r\n delay = this.opt('longPressDelay'); // fallback\r\n }\r\n return delay;\r\n };\r\n DateSelecting.prototype.bindToEl = function (el) {\r\n var _this = this;\r\n var component = this.component;\r\n var dragListener = this.dragListener;\r\n component.bindDateHandlerToEl(el, 'mousedown', function (ev) {\r\n if (_this.opt('selectable') && !component.shouldIgnoreMouse()) {\r\n dragListener.startInteraction(ev, {\r\n distance: _this.opt('selectMinDistance')\r\n });\r\n }\r\n });\r\n component.bindDateHandlerToEl(el, 'touchstart', function (ev) {\r\n if (_this.opt('selectable') && !component.shouldIgnoreTouch()) {\r\n dragListener.startInteraction(ev, {\r\n delay: _this.getDelay()\r\n });\r\n }\r\n });\r\n util_1.preventSelection(el);\r\n };\r\n // Creates a listener that tracks the user's drag across day elements, for day selecting.\r\n DateSelecting.prototype.buildDragListener = function () {\r\n var _this = this;\r\n var component = this.component;\r\n var selectionFootprint; // null if invalid selection\r\n var dragListener = new HitDragListener_1.default(component, {\r\n scroll: this.opt('dragScroll'),\r\n interactionStart: function () {\r\n selectionFootprint = null;\r\n },\r\n dragStart: function (ev) {\r\n _this.view.unselect(ev); // since we could be rendering a new selection, we want to clear any old one\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n var origHitFootprint;\r\n var hitFootprint;\r\n if (origHit) { // click needs to have started on a hit\r\n origHitFootprint = component.getSafeHitFootprint(origHit);\r\n hitFootprint = component.getSafeHitFootprint(hit);\r\n if (origHitFootprint && hitFootprint) {\r\n selectionFootprint = _this.computeSelection(origHitFootprint, hitFootprint);\r\n }\r\n else {\r\n selectionFootprint = null;\r\n }\r\n if (selectionFootprint) {\r\n component.renderSelectionFootprint(selectionFootprint);\r\n }\r\n else if (selectionFootprint === false) {\r\n util_1.disableCursor();\r\n }\r\n }\r\n },\r\n hitOut: function () {\r\n selectionFootprint = null;\r\n component.unrenderSelection();\r\n },\r\n hitDone: function () {\r\n util_1.enableCursor();\r\n },\r\n interactionEnd: function (ev, isCancelled) {\r\n if (!isCancelled && selectionFootprint) {\r\n // the selection will already have been rendered. just report it\r\n _this.view.reportSelection(selectionFootprint, ev);\r\n }\r\n }\r\n });\r\n return dragListener;\r\n };\r\n // Given the first and last date-spans of a selection, returns another date-span object.\r\n // Subclasses can override and provide additional data in the span object. Will be passed to renderSelectionFootprint().\r\n // Will return false if the selection is invalid and this should be indicated to the user.\r\n // Will return null/undefined if a selection invalid but no error should be reported.\r\n DateSelecting.prototype.computeSelection = function (footprint0, footprint1) {\r\n var wholeFootprint = this.computeSelectionFootprint(footprint0, footprint1);\r\n if (wholeFootprint && !this.isSelectionFootprintAllowed(wholeFootprint)) {\r\n return false;\r\n }\r\n return wholeFootprint;\r\n };\r\n // Given two spans, must return the combination of the two.\r\n // TODO: do this separation of concerns (combining VS validation) for event dnd/resize too.\r\n // Assumes both footprints are non-open-ended.\r\n DateSelecting.prototype.computeSelectionFootprint = function (footprint0, footprint1) {\r\n var ms = [\r\n footprint0.unzonedRange.startMs,\r\n footprint0.unzonedRange.endMs,\r\n footprint1.unzonedRange.startMs,\r\n footprint1.unzonedRange.endMs\r\n ];\r\n ms.sort(util_1.compareNumbers);\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(ms[0], ms[3]), footprint0.isAllDay);\r\n };\r\n DateSelecting.prototype.isSelectionFootprintAllowed = function (componentFootprint) {\r\n return this.component.dateProfile.validUnzonedRange.containsRange(componentFootprint.unzonedRange) &&\r\n this.view.calendar.constraints.isSelectionFootprintAllowed(componentFootprint);\r\n };\r\n return DateSelecting;\r\n}(Interaction_1.default));\r\nexports.default = DateSelecting;\r\n\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar HitDragListener_1 = __webpack_require__(17);\r\nvar Interaction_1 = __webpack_require__(14);\r\nvar DateClicking = /** @class */ (function (_super) {\r\n tslib_1.__extends(DateClicking, _super);\r\n /*\r\n component must implement:\r\n - bindDateHandlerToEl\r\n - getSafeHitFootprint\r\n - getHitEl\r\n */\r\n function DateClicking(component) {\r\n var _this = _super.call(this, component) || this;\r\n _this.dragListener = _this.buildDragListener();\r\n return _this;\r\n }\r\n DateClicking.prototype.end = function () {\r\n this.dragListener.endInteraction();\r\n };\r\n DateClicking.prototype.bindToEl = function (el) {\r\n var component = this.component;\r\n var dragListener = this.dragListener;\r\n component.bindDateHandlerToEl(el, 'mousedown', function (ev) {\r\n if (!component.shouldIgnoreMouse()) {\r\n dragListener.startInteraction(ev);\r\n }\r\n });\r\n component.bindDateHandlerToEl(el, 'touchstart', function (ev) {\r\n if (!component.shouldIgnoreTouch()) {\r\n dragListener.startInteraction(ev);\r\n }\r\n });\r\n };\r\n // Creates a listener that tracks the user's drag across day elements, for day clicking.\r\n DateClicking.prototype.buildDragListener = function () {\r\n var _this = this;\r\n var component = this.component;\r\n var dayClickHit; // null if invalid dayClick\r\n var dragListener = new HitDragListener_1.default(component, {\r\n scroll: this.opt('dragScroll'),\r\n interactionStart: function () {\r\n dayClickHit = dragListener.origHit;\r\n },\r\n hitOver: function (hit, isOrig, origHit) {\r\n // if user dragged to another cell at any point, it can no longer be a dayClick\r\n if (!isOrig) {\r\n dayClickHit = null;\r\n }\r\n },\r\n hitOut: function () {\r\n dayClickHit = null;\r\n },\r\n interactionEnd: function (ev, isCancelled) {\r\n var componentFootprint;\r\n if (!isCancelled && dayClickHit) {\r\n componentFootprint = component.getSafeHitFootprint(dayClickHit);\r\n if (componentFootprint) {\r\n _this.view.triggerDayClick(componentFootprint, component.getHitEl(dayClickHit), ev);\r\n }\r\n }\r\n }\r\n });\r\n // because dragListener won't be called with any time delay, \"dragging\" will begin immediately,\r\n // which will kill any touchmoving/scrolling. Prevent this.\r\n dragListener.shouldCancelTouchScroll = false;\r\n dragListener.scrollAlwaysKills = true;\r\n return dragListener;\r\n };\r\n return DateClicking;\r\n}(Interaction_1.default));\r\nexports.default = DateClicking;\r\n\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar Scroller_1 = __webpack_require__(41);\r\nvar View_1 = __webpack_require__(43);\r\nvar TimeGrid_1 = __webpack_require__(239);\r\nvar DayGrid_1 = __webpack_require__(66);\r\nvar AGENDA_ALL_DAY_EVENT_LIMIT = 5;\r\nvar agendaTimeGridMethods;\r\nvar agendaDayGridMethods;\r\n/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically.\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\r\n// Responsible for managing width/height.\r\nvar AgendaView = /** @class */ (function (_super) {\r\n tslib_1.__extends(AgendaView, _super);\r\n function AgendaView(calendar, viewSpec) {\r\n var _this = _super.call(this, calendar, viewSpec) || this;\r\n _this.usesMinMaxTime = true; // indicates that minTime/maxTime affects rendering\r\n _this.timeGrid = _this.instantiateTimeGrid();\r\n _this.addChild(_this.timeGrid);\r\n if (_this.opt('allDaySlot')) { // should we display the \"all-day\" area?\r\n _this.dayGrid = _this.instantiateDayGrid(); // the all-day subcomponent of this view\r\n _this.addChild(_this.dayGrid);\r\n }\r\n _this.scroller = new Scroller_1.default({\r\n overflowX: 'hidden',\r\n overflowY: 'auto'\r\n });\r\n return _this;\r\n }\r\n // Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass\r\n AgendaView.prototype.instantiateTimeGrid = function () {\r\n var timeGrid = new this.timeGridClass(this);\r\n util_1.copyOwnProps(agendaTimeGridMethods, timeGrid);\r\n return timeGrid;\r\n };\r\n // Instantiates the DayGrid object this view might need. Draws from this.dayGridClass\r\n AgendaView.prototype.instantiateDayGrid = function () {\r\n var dayGrid = new this.dayGridClass(this);\r\n util_1.copyOwnProps(agendaDayGridMethods, dayGrid);\r\n return dayGrid;\r\n };\r\n /* Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n AgendaView.prototype.renderSkeleton = function () {\r\n var timeGridWrapEl;\r\n var timeGridEl;\r\n this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());\r\n this.scroller.render();\r\n timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container');\r\n timeGridEl = $('
').appendTo(timeGridWrapEl);\r\n this.el.find('.fc-body > tr > td').append(timeGridWrapEl);\r\n this.timeGrid.headContainerEl = this.el.find('.fc-head-container');\r\n this.timeGrid.setElement(timeGridEl);\r\n if (this.dayGrid) {\r\n this.dayGrid.setElement(this.el.find('.fc-day-grid'));\r\n // have the day-grid extend it's coordinate area over the
dividing the two grids\r\n this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight();\r\n }\r\n };\r\n AgendaView.prototype.unrenderSkeleton = function () {\r\n this.timeGrid.removeElement();\r\n if (this.dayGrid) {\r\n this.dayGrid.removeElement();\r\n }\r\n this.scroller.destroy();\r\n };\r\n // Builds the HTML skeleton for the view.\r\n // The day-grid and time-grid components will render inside containers defined by this HTML.\r\n AgendaView.prototype.renderSkeletonHtml = function () {\r\n var theme = this.calendar.theme;\r\n return '' +\r\n '' +\r\n (this.opt('columnHeader') ?\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' :\r\n '') +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
 
' +\r\n (this.dayGrid ?\r\n '
' +\r\n '
' :\r\n '') +\r\n '
';\r\n };\r\n // Generates an HTML attribute string for setting the width of the axis, if it is known\r\n AgendaView.prototype.axisStyleAttr = function () {\r\n if (this.axisWidth != null) {\r\n return 'style=\"width:' + this.axisWidth + 'px\"';\r\n }\r\n return '';\r\n };\r\n /* Now Indicator\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n AgendaView.prototype.getNowIndicatorUnit = function () {\r\n return this.timeGrid.getNowIndicatorUnit();\r\n };\r\n /* Dimensions\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Adjusts the vertical dimensions of the view to the specified values\r\n AgendaView.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n var eventLimit;\r\n var scrollerHeight;\r\n var scrollbarWidths;\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n // make all axis cells line up, and record the width so newly created axis cells will have it\r\n this.axisWidth = util_1.matchCellWidths(this.el.find('.fc-axis'));\r\n // hack to give the view some height prior to timeGrid's columns being rendered\r\n // TODO: separate setting height from scroller VS timeGrid.\r\n if (!this.timeGrid.colEls) {\r\n if (!isAuto) {\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n return;\r\n }\r\n // set of fake row elements that must compensate when scroller has scrollbars\r\n var noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)');\r\n // reset all dimensions back to the original state\r\n this.timeGrid.bottomRuleEl.hide(); // .show() will be called later if this
is necessary\r\n this.scroller.clear(); // sets height to 'auto' and clears overflow\r\n util_1.uncompensateScroll(noScrollRowEls);\r\n // limit number of events in the all-day area\r\n if (this.dayGrid) {\r\n this.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\r\n eventLimit = this.opt('eventLimit');\r\n if (eventLimit && typeof eventLimit !== 'number') {\r\n eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure \"auto\" goes to a real number\r\n }\r\n if (eventLimit) {\r\n this.dayGrid.limitRows(eventLimit);\r\n }\r\n }\r\n if (!isAuto) { // should we force dimensions of the scroll container?\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n scrollbarWidths = this.scroller.getScrollbarWidths();\r\n if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\r\n // make the all-day and header rows lines up\r\n util_1.compensateScroll(noScrollRowEls, scrollbarWidths);\r\n // the scrollbar compensation might have changed text flow, which might affect height, so recalculate\r\n // and reapply the desired height to the scroller.\r\n scrollerHeight = this.computeScrollerHeight(totalHeight);\r\n this.scroller.setHeight(scrollerHeight);\r\n }\r\n // guarantees the same scrollbar widths\r\n this.scroller.lockOverflow(scrollbarWidths);\r\n // if there's any space below the slats, show the horizontal rule.\r\n // this won't cause any new overflow, because lockOverflow already called.\r\n if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {\r\n this.timeGrid.bottomRuleEl.show();\r\n }\r\n }\r\n };\r\n // given a desired total height of the view, returns what the height of the scroller should be\r\n AgendaView.prototype.computeScrollerHeight = function (totalHeight) {\r\n return totalHeight -\r\n util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\r\n };\r\n /* Scroll\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Computes the initial pre-configured scroll state prior to allowing the user to change it\r\n AgendaView.prototype.computeInitialDateScroll = function () {\r\n var scrollTime = moment.duration(this.opt('scrollTime'));\r\n var top = this.timeGrid.computeTimeTop(scrollTime);\r\n // zoom can give weird floating-point values. rather scroll a little bit further\r\n top = Math.ceil(top);\r\n if (top) {\r\n top++; // to overcome top border that slots beyond the first have. looks better\r\n }\r\n return { top: top };\r\n };\r\n AgendaView.prototype.queryDateScroll = function () {\r\n return { top: this.scroller.getScrollTop() };\r\n };\r\n AgendaView.prototype.applyDateScroll = function (scroll) {\r\n if (scroll.top !== undefined) {\r\n this.scroller.setScrollTop(scroll.top);\r\n }\r\n };\r\n /* Hit Areas\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // forward all hit-related method calls to the grids (dayGrid might not be defined)\r\n AgendaView.prototype.getHitFootprint = function (hit) {\r\n // TODO: hit.component is set as a hack to identify where the hit came from\r\n return hit.component.getHitFootprint(hit);\r\n };\r\n AgendaView.prototype.getHitEl = function (hit) {\r\n // TODO: hit.component is set as a hack to identify where the hit came from\r\n return hit.component.getHitEl(hit);\r\n };\r\n /* Event Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n AgendaView.prototype.executeEventRender = function (eventsPayload) {\r\n var dayEventsPayload = {};\r\n var timedEventsPayload = {};\r\n var id;\r\n var eventInstanceGroup;\r\n // separate the events into all-day and timed\r\n for (id in eventsPayload) {\r\n eventInstanceGroup = eventsPayload[id];\r\n if (eventInstanceGroup.getEventDef().isAllDay()) {\r\n dayEventsPayload[id] = eventInstanceGroup;\r\n }\r\n else {\r\n timedEventsPayload[id] = eventInstanceGroup;\r\n }\r\n }\r\n this.timeGrid.executeEventRender(timedEventsPayload);\r\n if (this.dayGrid) {\r\n this.dayGrid.executeEventRender(dayEventsPayload);\r\n }\r\n };\r\n /* Dragging/Resizing Routing\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // A returned value of `true` signals that a mock \"helper\" event has been rendered.\r\n AgendaView.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var groups = groupEventFootprintsByAllDay(eventFootprints);\r\n var renderedHelper = false;\r\n renderedHelper = this.timeGrid.renderDrag(groups.timed, seg, isTouch);\r\n if (this.dayGrid) {\r\n renderedHelper = this.dayGrid.renderDrag(groups.allDay, seg, isTouch) || renderedHelper;\r\n }\r\n return renderedHelper;\r\n };\r\n AgendaView.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n var groups = groupEventFootprintsByAllDay(eventFootprints);\r\n this.timeGrid.renderEventResize(groups.timed, seg, isTouch);\r\n if (this.dayGrid) {\r\n this.dayGrid.renderEventResize(groups.allDay, seg, isTouch);\r\n }\r\n };\r\n /* Selection\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of a selection\r\n AgendaView.prototype.renderSelectionFootprint = function (componentFootprint) {\r\n if (!componentFootprint.isAllDay) {\r\n this.timeGrid.renderSelectionFootprint(componentFootprint);\r\n }\r\n else if (this.dayGrid) {\r\n this.dayGrid.renderSelectionFootprint(componentFootprint);\r\n }\r\n };\r\n return AgendaView;\r\n}(View_1.default));\r\nexports.default = AgendaView;\r\nAgendaView.prototype.timeGridClass = TimeGrid_1.default;\r\nAgendaView.prototype.dayGridClass = DayGrid_1.default;\r\n// Will customize the rendering behavior of the AgendaView's timeGrid\r\nagendaTimeGridMethods = {\r\n // Generates the HTML that will go before the day-of week header cells\r\n renderHeadIntroHtml: function () {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var weekStart = calendar.msToUtcMoment(this.dateProfile.renderUnzonedRange.startMs, true);\r\n var weekText;\r\n if (this.opt('weekNumbers')) {\r\n weekText = weekStart.format(this.opt('smallWeekFormat'));\r\n return '' +\r\n '' +\r\n view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths\r\n { date: weekStart, type: 'week', forceOff: this.colCnt > 1 }, util_1.htmlEscape(weekText) // inner HTML\r\n ) +\r\n '';\r\n }\r\n else {\r\n return '';\r\n }\r\n },\r\n // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.\r\n renderBgIntroHtml: function () {\r\n var view = this.view;\r\n return '';\r\n },\r\n // Generates the HTML that goes before all other types of cells.\r\n // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\r\n renderIntroHtml: function () {\r\n var view = this.view;\r\n return '';\r\n }\r\n};\r\n// Will customize the rendering behavior of the AgendaView's dayGrid\r\nagendaDayGridMethods = {\r\n // Generates the HTML that goes before the all-day cells\r\n renderBgIntroHtml: function () {\r\n var view = this.view;\r\n return '' +\r\n '' +\r\n '' + // needed for matchCellWidths\r\n view.getAllDayHtml() +\r\n '' +\r\n '';\r\n },\r\n // Generates the HTML that goes before all other types of cells.\r\n // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\r\n renderIntroHtml: function () {\r\n var view = this.view;\r\n return '';\r\n }\r\n};\r\nfunction groupEventFootprintsByAllDay(eventFootprints) {\r\n var allDay = [];\r\n var timed = [];\r\n var i;\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n if (eventFootprints[i].componentFootprint.isAllDay) {\r\n allDay.push(eventFootprints[i]);\r\n }\r\n else {\r\n timed.push(eventFootprints[i]);\r\n }\r\n }\r\n return { allDay: allDay, timed: timed };\r\n}\r\n\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar InteractiveDateComponent_1 = __webpack_require__(42);\r\nvar BusinessHourRenderer_1 = __webpack_require__(61);\r\nvar StandardInteractionsMixin_1 = __webpack_require__(65);\r\nvar DayTableMixin_1 = __webpack_require__(60);\r\nvar CoordCache_1 = __webpack_require__(58);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar ComponentFootprint_1 = __webpack_require__(12);\r\nvar TimeGridEventRenderer_1 = __webpack_require__(240);\r\nvar TimeGridHelperRenderer_1 = __webpack_require__(241);\r\nvar TimeGridFillRenderer_1 = __webpack_require__(242);\r\n/* A component that renders one or more columns of vertical time slots\r\n----------------------------------------------------------------------------------------------------------------------*/\r\n// We mixin DayTable, even though there is only a single row of days\r\n// potential nice values for the slot-duration and interval-duration\r\n// from largest to smallest\r\nvar AGENDA_STOCK_SUB_DURATIONS = [\r\n { hours: 1 },\r\n { minutes: 30 },\r\n { minutes: 15 },\r\n { seconds: 30 },\r\n { seconds: 15 }\r\n];\r\nvar TimeGrid = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGrid, _super);\r\n function TimeGrid(view) {\r\n var _this = _super.call(this, view) || this;\r\n _this.processOptions();\r\n return _this;\r\n }\r\n // Slices up the given span (unzoned start/end with other misc data) into an array of segments\r\n TimeGrid.prototype.componentFootprintToSegs = function (componentFootprint) {\r\n var segs = this.sliceRangeByTimes(componentFootprint.unzonedRange);\r\n var i;\r\n for (i = 0; i < segs.length; i++) {\r\n if (this.isRTL) {\r\n segs[i].col = this.daysPerRow - 1 - segs[i].dayIndex;\r\n }\r\n else {\r\n segs[i].col = segs[i].dayIndex;\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Date Handling\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.sliceRangeByTimes = function (unzonedRange) {\r\n var segs = [];\r\n var segRange;\r\n var dayIndex;\r\n for (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) {\r\n segRange = unzonedRange.intersect(this.dayRanges[dayIndex]);\r\n if (segRange) {\r\n segs.push({\r\n startMs: segRange.startMs,\r\n endMs: segRange.endMs,\r\n isStart: segRange.isStart,\r\n isEnd: segRange.isEnd,\r\n dayIndex: dayIndex\r\n });\r\n }\r\n }\r\n return segs;\r\n };\r\n /* Options\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Parses various options into properties of this object\r\n TimeGrid.prototype.processOptions = function () {\r\n var slotDuration = this.opt('slotDuration');\r\n var snapDuration = this.opt('snapDuration');\r\n var input;\r\n slotDuration = moment.duration(slotDuration);\r\n snapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration;\r\n this.slotDuration = slotDuration;\r\n this.snapDuration = snapDuration;\r\n this.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple?\r\n // might be an array value (for TimelineView).\r\n // if so, getting the most granular entry (the last one probably).\r\n input = this.opt('slotLabelFormat');\r\n if ($.isArray(input)) {\r\n input = input[input.length - 1];\r\n }\r\n this.labelFormat = input ||\r\n this.opt('smallTimeFormat'); // the computed default\r\n input = this.opt('slotLabelInterval');\r\n this.labelInterval = input ?\r\n moment.duration(input) :\r\n this.computeLabelInterval(slotDuration);\r\n };\r\n // Computes an automatic value for slotLabelInterval\r\n TimeGrid.prototype.computeLabelInterval = function (slotDuration) {\r\n var i;\r\n var labelInterval;\r\n var slotsPerLabel;\r\n // find the smallest stock label interval that results in more than one slots-per-label\r\n for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {\r\n labelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]);\r\n slotsPerLabel = util_1.divideDurationByDuration(labelInterval, slotDuration);\r\n if (util_1.isInt(slotsPerLabel) && slotsPerLabel > 1) {\r\n return labelInterval;\r\n }\r\n }\r\n return moment.duration(slotDuration); // fall back. clone\r\n };\r\n /* Date Rendering\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.renderDates = function (dateProfile) {\r\n this.dateProfile = dateProfile;\r\n this.updateDayTable();\r\n this.renderSlats();\r\n this.renderColumns();\r\n };\r\n TimeGrid.prototype.unrenderDates = function () {\r\n // this.unrenderSlats(); // don't need this because repeated .html() calls clear\r\n this.unrenderColumns();\r\n };\r\n TimeGrid.prototype.renderSkeleton = function () {\r\n var theme = this.view.calendar.theme;\r\n this.el.html('
' +\r\n '
' +\r\n '
');\r\n this.bottomRuleEl = this.el.find('hr');\r\n };\r\n TimeGrid.prototype.renderSlats = function () {\r\n var theme = this.view.calendar.theme;\r\n this.slatContainerEl = this.el.find('> .fc-slats')\r\n .html(// avoids needing ::unrenderSlats()\r\n '' +\r\n this.renderSlatRowHtml() +\r\n '
');\r\n this.slatEls = this.slatContainerEl.find('tr');\r\n this.slatCoordCache = new CoordCache_1.default({\r\n els: this.slatEls,\r\n isVertical: true\r\n });\r\n };\r\n // Generates the HTML for the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\r\n TimeGrid.prototype.renderSlatRowHtml = function () {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var theme = calendar.theme;\r\n var isRTL = this.isRTL;\r\n var dateProfile = this.dateProfile;\r\n var html = '';\r\n var slotTime = moment.duration(+dateProfile.minTime); // wish there was .clone() for durations\r\n var slotIterator = moment.duration(0);\r\n var slotDate; // will be on the view's first day, but we only care about its time\r\n var isLabeled;\r\n var axisHtml;\r\n // Calculate the time for each slot\r\n while (slotTime < dateProfile.maxTime) {\r\n slotDate = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs).time(slotTime);\r\n isLabeled = util_1.isInt(util_1.divideDurationByDuration(slotIterator, this.labelInterval));\r\n axisHtml =\r\n '' +\r\n (isLabeled ?\r\n '' + // for matchCellWidths\r\n util_1.htmlEscape(slotDate.format(this.labelFormat)) +\r\n '' :\r\n '') +\r\n '';\r\n html +=\r\n '' +\r\n (!isRTL ? axisHtml : '') +\r\n '' +\r\n (isRTL ? axisHtml : '') +\r\n '';\r\n slotTime.add(this.slotDuration);\r\n slotIterator.add(this.slotDuration);\r\n }\r\n return html;\r\n };\r\n TimeGrid.prototype.renderColumns = function () {\r\n var dateProfile = this.dateProfile;\r\n var theme = this.view.calendar.theme;\r\n this.dayRanges = this.dayDates.map(function (dayDate) {\r\n return new UnzonedRange_1.default(dayDate.clone().add(dateProfile.minTime), dayDate.clone().add(dateProfile.maxTime));\r\n });\r\n if (this.headContainerEl) {\r\n this.headContainerEl.html(this.renderHeadHtml());\r\n }\r\n this.el.find('> .fc-bg').html('' +\r\n this.renderBgTrHtml(0) + // row=0\r\n '
');\r\n this.colEls = this.el.find('.fc-day, .fc-disabled-day');\r\n this.colCoordCache = new CoordCache_1.default({\r\n els: this.colEls,\r\n isHorizontal: true\r\n });\r\n this.renderContentSkeleton();\r\n };\r\n TimeGrid.prototype.unrenderColumns = function () {\r\n this.unrenderContentSkeleton();\r\n };\r\n /* Content Skeleton\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders the DOM that the view's content will live in\r\n TimeGrid.prototype.renderContentSkeleton = function () {\r\n var cellHtml = '';\r\n var i;\r\n var skeletonEl;\r\n for (i = 0; i < this.colCnt; i++) {\r\n cellHtml +=\r\n '' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '';\r\n }\r\n skeletonEl = this.contentSkeletonEl = $('
' +\r\n '' +\r\n '' + cellHtml + '' +\r\n '
' +\r\n '
');\r\n this.colContainerEls = skeletonEl.find('.fc-content-col');\r\n this.helperContainerEls = skeletonEl.find('.fc-helper-container');\r\n this.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)');\r\n this.bgContainerEls = skeletonEl.find('.fc-bgevent-container');\r\n this.highlightContainerEls = skeletonEl.find('.fc-highlight-container');\r\n this.businessContainerEls = skeletonEl.find('.fc-business-container');\r\n this.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level\r\n this.el.append(skeletonEl);\r\n };\r\n TimeGrid.prototype.unrenderContentSkeleton = function () {\r\n if (this.contentSkeletonEl) { // defensive :(\r\n this.contentSkeletonEl.remove();\r\n this.contentSkeletonEl = null;\r\n this.colContainerEls = null;\r\n this.helperContainerEls = null;\r\n this.fgContainerEls = null;\r\n this.bgContainerEls = null;\r\n this.highlightContainerEls = null;\r\n this.businessContainerEls = null;\r\n }\r\n };\r\n // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col\r\n TimeGrid.prototype.groupSegsByCol = function (segs) {\r\n var segsByCol = [];\r\n var i;\r\n for (i = 0; i < this.colCnt; i++) {\r\n segsByCol.push([]);\r\n }\r\n for (i = 0; i < segs.length; i++) {\r\n segsByCol[segs[i].col].push(segs[i]);\r\n }\r\n return segsByCol;\r\n };\r\n // Given segments grouped by column, insert the segments' elements into a parallel array of container\r\n // elements, each living within a column.\r\n TimeGrid.prototype.attachSegsByCol = function (segsByCol, containerEls) {\r\n var col;\r\n var segs;\r\n var i;\r\n for (col = 0; col < this.colCnt; col++) { // iterate each column grouping\r\n segs = segsByCol[col];\r\n for (i = 0; i < segs.length; i++) {\r\n containerEls.eq(col).append(segs[i].el);\r\n }\r\n }\r\n };\r\n /* Now Indicator\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.getNowIndicatorUnit = function () {\r\n return 'minute'; // will refresh on the minute\r\n };\r\n TimeGrid.prototype.renderNowIndicator = function (date) {\r\n // HACK: if date columns not ready for some reason (scheduler)\r\n if (!this.colContainerEls) {\r\n return;\r\n }\r\n // seg system might be overkill, but it handles scenario where line needs to be rendered\r\n // more than once because of columns with the same date (resources columns for example)\r\n var segs = this.componentFootprintToSegs(new ComponentFootprint_1.default(new UnzonedRange_1.default(date, date.valueOf() + 1), // protect against null range\r\n false // all-day\r\n ));\r\n var top = this.computeDateTop(date, date);\r\n var nodes = [];\r\n var i;\r\n // render lines within the columns\r\n for (i = 0; i < segs.length; i++) {\r\n nodes.push($('
')\r\n .css('top', top)\r\n .appendTo(this.colContainerEls.eq(segs[i].col))[0]);\r\n }\r\n // render an arrow over the axis\r\n if (segs.length > 0) { // is the current time in view?\r\n nodes.push($('
')\r\n .css('top', top)\r\n .appendTo(this.el.find('.fc-content-skeleton'))[0]);\r\n }\r\n this.nowIndicatorEls = $(nodes);\r\n };\r\n TimeGrid.prototype.unrenderNowIndicator = function () {\r\n if (this.nowIndicatorEls) {\r\n this.nowIndicatorEls.remove();\r\n this.nowIndicatorEls = null;\r\n }\r\n };\r\n /* Coordinates\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n this.slatCoordCache.build();\r\n if (isResize) {\r\n this.updateSegVerticals([].concat(this.eventRenderer.getSegs(), this.businessSegs || []));\r\n }\r\n };\r\n TimeGrid.prototype.getTotalSlatHeight = function () {\r\n return this.slatContainerEl.outerHeight();\r\n };\r\n // Computes the top coordinate, relative to the bounds of the grid, of the given date.\r\n // `ms` can be a millisecond UTC time OR a UTC moment.\r\n // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\r\n TimeGrid.prototype.computeDateTop = function (ms, startOfDayDate) {\r\n return this.computeTimeTop(moment.duration(ms - startOfDayDate.clone().stripTime()));\r\n };\r\n // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\r\n TimeGrid.prototype.computeTimeTop = function (time) {\r\n var len = this.slatEls.length;\r\n var dateProfile = this.dateProfile;\r\n var slatCoverage = (time - dateProfile.minTime) / this.slotDuration; // floating-point value of # of slots covered\r\n var slatIndex;\r\n var slatRemainder;\r\n // compute a floating-point number for how many slats should be progressed through.\r\n // from 0 to number of slats (inclusive)\r\n // constrained because minTime/maxTime might be customized.\r\n slatCoverage = Math.max(0, slatCoverage);\r\n slatCoverage = Math.min(len, slatCoverage);\r\n // an integer index of the furthest whole slat\r\n // from 0 to number slats (*exclusive*, so len-1)\r\n slatIndex = Math.floor(slatCoverage);\r\n slatIndex = Math.min(slatIndex, len - 1);\r\n // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\r\n // could be 1.0 if slatCoverage is covering *all* the slots\r\n slatRemainder = slatCoverage - slatIndex;\r\n return this.slatCoordCache.getTopPosition(slatIndex) +\r\n this.slatCoordCache.getHeight(slatIndex) * slatRemainder;\r\n };\r\n // Refreshes the CSS top/bottom coordinates for each segment element.\r\n // Works when called after initial render, after a window resize/zoom for example.\r\n TimeGrid.prototype.updateSegVerticals = function (segs) {\r\n this.computeSegVerticals(segs);\r\n this.assignSegVerticals(segs);\r\n };\r\n // For each segment in an array, computes and assigns its top and bottom properties\r\n TimeGrid.prototype.computeSegVerticals = function (segs) {\r\n var eventMinHeight = this.opt('agendaEventMinHeight');\r\n var i;\r\n var seg;\r\n var dayDate;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n dayDate = this.dayDates[seg.dayIndex];\r\n seg.top = this.computeDateTop(seg.startMs, dayDate);\r\n seg.bottom = Math.max(seg.top + eventMinHeight, this.computeDateTop(seg.endMs, dayDate));\r\n }\r\n };\r\n // Given segments that already have their top/bottom properties computed, applies those values to\r\n // the segments' elements.\r\n TimeGrid.prototype.assignSegVerticals = function (segs) {\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n seg.el.css(this.generateSegVerticalCss(seg));\r\n }\r\n };\r\n // Generates an object with CSS properties for the top/bottom coordinates of a segment element\r\n TimeGrid.prototype.generateSegVerticalCss = function (seg) {\r\n return {\r\n top: seg.top,\r\n bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container\r\n };\r\n };\r\n /* Hit System\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n TimeGrid.prototype.prepareHits = function () {\r\n this.colCoordCache.build();\r\n this.slatCoordCache.build();\r\n };\r\n TimeGrid.prototype.releaseHits = function () {\r\n this.colCoordCache.clear();\r\n // NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop\r\n };\r\n TimeGrid.prototype.queryHit = function (leftOffset, topOffset) {\r\n var snapsPerSlot = this.snapsPerSlot;\r\n var colCoordCache = this.colCoordCache;\r\n var slatCoordCache = this.slatCoordCache;\r\n if (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) {\r\n var colIndex = colCoordCache.getHorizontalIndex(leftOffset);\r\n var slatIndex = slatCoordCache.getVerticalIndex(topOffset);\r\n if (colIndex != null && slatIndex != null) {\r\n var slatTop = slatCoordCache.getTopOffset(slatIndex);\r\n var slatHeight = slatCoordCache.getHeight(slatIndex);\r\n var partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1\r\n var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\r\n var snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\r\n var snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight;\r\n var snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight;\r\n return {\r\n col: colIndex,\r\n snap: snapIndex,\r\n component: this,\r\n left: colCoordCache.getLeftOffset(colIndex),\r\n right: colCoordCache.getRightOffset(colIndex),\r\n top: snapTop,\r\n bottom: snapBottom\r\n };\r\n }\r\n }\r\n };\r\n TimeGrid.prototype.getHitFootprint = function (hit) {\r\n var start = this.getCellDate(0, hit.col); // row=0\r\n var time = this.computeSnapTime(hit.snap); // pass in the snap-index\r\n var end;\r\n start.time(time);\r\n end = start.clone().add(this.snapDuration);\r\n return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), false // all-day?\r\n );\r\n };\r\n // Given a row number of the grid, representing a \"snap\", returns a time (Duration) from its start-of-day\r\n TimeGrid.prototype.computeSnapTime = function (snapIndex) {\r\n return moment.duration(this.dateProfile.minTime + this.snapDuration * snapIndex);\r\n };\r\n TimeGrid.prototype.getHitEl = function (hit) {\r\n return this.colEls.eq(hit.col);\r\n };\r\n /* Event Drag Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event being dragged over the specified date(s).\r\n // A returned value of `true` signals that a mock \"helper\" event has been rendered.\r\n TimeGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) {\r\n var i;\r\n if (seg) { // if there is event information for this drag, render a helper event\r\n if (eventFootprints.length) {\r\n this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch);\r\n // signal that a helper has been rendered\r\n return true;\r\n }\r\n }\r\n else { // otherwise, just render a highlight\r\n for (i = 0; i < eventFootprints.length; i++) {\r\n this.renderHighlight(eventFootprints[i].componentFootprint);\r\n }\r\n }\r\n };\r\n // Unrenders any visual indication of an event being dragged\r\n TimeGrid.prototype.unrenderDrag = function () {\r\n this.unrenderHighlight();\r\n this.helperRenderer.unrender();\r\n };\r\n /* Event Resize Visualization\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of an event being resized\r\n TimeGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {\r\n this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch);\r\n };\r\n // Unrenders any visual indication of an event being resized\r\n TimeGrid.prototype.unrenderEventResize = function () {\r\n this.helperRenderer.unrender();\r\n };\r\n /* Selection\r\n ------------------------------------------------------------------------------------------------------------------*/\r\n // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.\r\n TimeGrid.prototype.renderSelectionFootprint = function (componentFootprint) {\r\n if (this.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered\r\n this.helperRenderer.renderComponentFootprint(componentFootprint);\r\n }\r\n else {\r\n this.renderHighlight(componentFootprint);\r\n }\r\n };\r\n // Unrenders any visual indication of a selection\r\n TimeGrid.prototype.unrenderSelection = function () {\r\n this.helperRenderer.unrender();\r\n this.unrenderHighlight();\r\n };\r\n return TimeGrid;\r\n}(InteractiveDateComponent_1.default));\r\nexports.default = TimeGrid;\r\nTimeGrid.prototype.eventRendererClass = TimeGridEventRenderer_1.default;\r\nTimeGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default;\r\nTimeGrid.prototype.helperRendererClass = TimeGridHelperRenderer_1.default;\r\nTimeGrid.prototype.fillRendererClass = TimeGridFillRenderer_1.default;\r\nStandardInteractionsMixin_1.default.mixInto(TimeGrid);\r\nDayTableMixin_1.default.mixInto(TimeGrid);\r\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer_1 = __webpack_require__(44);\r\n/*\r\nOnly handles foreground segs.\r\nDoes not own rendering. Use for low-level util methods by TimeGrid.\r\n*/\r\nvar TimeGridEventRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGridEventRenderer, _super);\r\n function TimeGridEventRenderer(timeGrid, fillRenderer) {\r\n var _this = _super.call(this, timeGrid, fillRenderer) || this;\r\n _this.timeGrid = timeGrid;\r\n return _this;\r\n }\r\n TimeGridEventRenderer.prototype.renderFgSegs = function (segs) {\r\n this.renderFgSegsIntoContainers(segs, this.timeGrid.fgContainerEls);\r\n };\r\n // Given an array of foreground segments, render a DOM element for each, computes position,\r\n // and attaches to the column inner-container elements.\r\n TimeGridEventRenderer.prototype.renderFgSegsIntoContainers = function (segs, containerEls) {\r\n var segsByCol;\r\n var col;\r\n segsByCol = this.timeGrid.groupSegsByCol(segs);\r\n for (col = 0; col < this.timeGrid.colCnt; col++) {\r\n this.updateFgSegCoords(segsByCol[col]);\r\n }\r\n this.timeGrid.attachSegsByCol(segsByCol, containerEls);\r\n };\r\n TimeGridEventRenderer.prototype.unrenderFgSegs = function () {\r\n if (this.fgSegs) { // hack\r\n this.fgSegs.forEach(function (seg) {\r\n seg.el.remove();\r\n });\r\n }\r\n };\r\n // Computes a default event time formatting string if `timeFormat` is not explicitly defined\r\n TimeGridEventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('noMeridiemTimeFormat'); // like \"6:30\" (no AM/PM)\r\n };\r\n // Computes a default `displayEventEnd` value if one is not expliclty defined\r\n TimeGridEventRenderer.prototype.computeDisplayEventEnd = function () {\r\n return true;\r\n };\r\n // Renders the HTML for a single event segment's default rendering\r\n TimeGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var componentFootprint = seg.footprint.componentFootprint;\r\n var isAllDay = componentFootprint.isAllDay;\r\n var eventDef = seg.footprint.eventDef;\r\n var isDraggable = view.isEventDefDraggable(eventDef);\r\n var isResizableFromStart = !disableResizing && seg.isStart && view.isEventDefResizableFromStart(eventDef);\r\n var isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventDefResizableFromEnd(eventDef);\r\n var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\r\n var skinCss = util_1.cssToStr(this.getSkinCss(eventDef));\r\n var timeText;\r\n var fullTimeText; // more verbose time text. for the print stylesheet\r\n var startTimeText; // just the start time text\r\n classes.unshift('fc-time-grid-event', 'fc-v-event');\r\n // if the event appears to span more than one day...\r\n if (view.isMultiDayRange(componentFootprint.unzonedRange)) {\r\n // Don't display time text on segments that run entirely through a day.\r\n // That would appear as midnight-midnight and would look dumb.\r\n // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)\r\n if (seg.isStart || seg.isEnd) {\r\n var zonedStart = calendar.msToMoment(seg.startMs);\r\n var zonedEnd = calendar.msToMoment(seg.endMs);\r\n timeText = this._getTimeText(zonedStart, zonedEnd, isAllDay);\r\n fullTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, 'LT');\r\n startTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, null, false); // displayEnd=false\r\n }\r\n }\r\n else {\r\n // Display the normal time text for the *event's* times\r\n timeText = this.getTimeText(seg.footprint);\r\n fullTimeText = this.getTimeText(seg.footprint, 'LT');\r\n startTimeText = this.getTimeText(seg.footprint, null, false); // displayEnd=false\r\n }\r\n return '' +\r\n '
' +\r\n (timeText ?\r\n '
' +\r\n '' + util_1.htmlEscape(timeText) + '' +\r\n '
' :\r\n '') +\r\n (eventDef.title ?\r\n '
' +\r\n util_1.htmlEscape(eventDef.title) +\r\n '
' :\r\n '') +\r\n '
' +\r\n '
' +\r\n /* TODO: write CSS for this\r\n (isResizableFromStart ?\r\n '
' :\r\n ''\r\n ) +\r\n */\r\n (isResizableFromEnd ?\r\n '
' :\r\n '') +\r\n '';\r\n };\r\n // Given segments that are assumed to all live in the *same column*,\r\n // compute their verical/horizontal coordinates and assign to their elements.\r\n TimeGridEventRenderer.prototype.updateFgSegCoords = function (segs) {\r\n this.timeGrid.computeSegVerticals(segs); // horizontals relies on this\r\n this.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array\r\n this.timeGrid.assignSegVerticals(segs);\r\n this.assignFgSegHorizontals(segs);\r\n };\r\n // Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.\r\n // NOTE: Also reorders the given array by date!\r\n TimeGridEventRenderer.prototype.computeFgSegHorizontals = function (segs) {\r\n var levels;\r\n var level0;\r\n var i;\r\n this.sortEventSegs(segs); // order by certain criteria\r\n levels = buildSlotSegLevels(segs);\r\n computeForwardSlotSegs(levels);\r\n if ((level0 = levels[0])) {\r\n for (i = 0; i < level0.length; i++) {\r\n computeSlotSegPressures(level0[i]);\r\n }\r\n for (i = 0; i < level0.length; i++) {\r\n this.computeFgSegForwardBack(level0[i], 0, 0);\r\n }\r\n }\r\n };\r\n // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range\r\n // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to \"left\" and\r\n // seg.forwardCoord maps to \"right\" (via percentage). Vice-versa if the calendar is right-to-left.\r\n //\r\n // The segment might be part of a \"series\", which means consecutive segments with the same pressure\r\n // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of\r\n // segments behind this one in the current series, and `seriesBackwardCoord` is the starting\r\n // coordinate of the first segment in the series.\r\n TimeGridEventRenderer.prototype.computeFgSegForwardBack = function (seg, seriesBackwardPressure, seriesBackwardCoord) {\r\n var forwardSegs = seg.forwardSegs;\r\n var i;\r\n if (seg.forwardCoord === undefined) { // not already computed\r\n if (!forwardSegs.length) {\r\n // if there are no forward segments, this segment should butt up against the edge\r\n seg.forwardCoord = 1;\r\n }\r\n else {\r\n // sort highest pressure first\r\n this.sortForwardSegs(forwardSegs);\r\n // this segment's forwardCoord will be calculated from the backwardCoord of the\r\n // highest-pressure forward segment.\r\n this.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);\r\n seg.forwardCoord = forwardSegs[0].backwardCoord;\r\n }\r\n // calculate the backwardCoord from the forwardCoord. consider the series\r\n seg.backwardCoord = seg.forwardCoord -\r\n (seg.forwardCoord - seriesBackwardCoord) / // available width for series\r\n (seriesBackwardPressure + 1); // # of segments in the series\r\n // use this segment's coordinates to computed the coordinates of the less-pressurized\r\n // forward segments\r\n for (i = 0; i < forwardSegs.length; i++) {\r\n this.computeFgSegForwardBack(forwardSegs[i], 0, seg.forwardCoord);\r\n }\r\n }\r\n };\r\n TimeGridEventRenderer.prototype.sortForwardSegs = function (forwardSegs) {\r\n forwardSegs.sort(util_1.proxy(this, 'compareForwardSegs'));\r\n };\r\n // A cmp function for determining which forward segment to rely on more when computing coordinates.\r\n TimeGridEventRenderer.prototype.compareForwardSegs = function (seg1, seg2) {\r\n // put higher-pressure first\r\n return seg2.forwardPressure - seg1.forwardPressure ||\r\n // put segments that are closer to initial edge first (and favor ones with no coords yet)\r\n (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) ||\r\n // do normal sorting...\r\n this.compareEventSegs(seg1, seg2);\r\n };\r\n // Given foreground event segments that have already had their position coordinates computed,\r\n // assigns position-related CSS values to their elements.\r\n TimeGridEventRenderer.prototype.assignFgSegHorizontals = function (segs) {\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n seg.el.css(this.generateFgSegHorizontalCss(seg));\r\n // if the event is short that the title will be cut off,\r\n // attach a className that condenses the title into the time area.\r\n if (seg.footprint.eventDef.title && seg.bottom - seg.top < 30) {\r\n seg.el.addClass('fc-short'); // TODO: \"condensed\" is a better name\r\n }\r\n }\r\n };\r\n // Generates an object with CSS properties/values that should be applied to an event segment element.\r\n // Contains important positioning-related properties that should be applied to any event element, customized or not.\r\n TimeGridEventRenderer.prototype.generateFgSegHorizontalCss = function (seg) {\r\n var shouldOverlap = this.opt('slotEventOverlap');\r\n var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point\r\n var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point\r\n var props = this.timeGrid.generateSegVerticalCss(seg); // get top/bottom first\r\n var isRTL = this.timeGrid.isRTL;\r\n var left; // amount of space from left edge, a fraction of the total width\r\n var right; // amount of space from right edge, a fraction of the total width\r\n if (shouldOverlap) {\r\n // double the width, but don't go beyond the maximum forward coordinate (1.0)\r\n forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2);\r\n }\r\n if (isRTL) {\r\n left = 1 - forwardCoord;\r\n right = backwardCoord;\r\n }\r\n else {\r\n left = backwardCoord;\r\n right = 1 - forwardCoord;\r\n }\r\n props.zIndex = seg.level + 1; // convert from 0-base to 1-based\r\n props.left = left * 100 + '%';\r\n props.right = right * 100 + '%';\r\n if (shouldOverlap && seg.forwardPressure) {\r\n // add padding to the edge so that forward stacked events don't cover the resizer's icon\r\n props[isRTL ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\r\n }\r\n return props;\r\n };\r\n return TimeGridEventRenderer;\r\n}(EventRenderer_1.default));\r\nexports.default = TimeGridEventRenderer;\r\n// Builds an array of segments \"levels\". The first level will be the leftmost tier of segments if the calendar is\r\n// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date.\r\nfunction buildSlotSegLevels(segs) {\r\n var levels = [];\r\n var i;\r\n var seg;\r\n var j;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n // go through all the levels and stop on the first level where there are no collisions\r\n for (j = 0; j < levels.length; j++) {\r\n if (!computeSlotSegCollisions(seg, levels[j]).length) {\r\n break;\r\n }\r\n }\r\n seg.level = j;\r\n (levels[j] || (levels[j] = [])).push(seg);\r\n }\r\n return levels;\r\n}\r\n// For every segment, figure out the other segments that are in subsequent\r\n// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs\r\nfunction computeForwardSlotSegs(levels) {\r\n var i;\r\n var level;\r\n var j;\r\n var seg;\r\n var k;\r\n for (i = 0; i < levels.length; i++) {\r\n level = levels[i];\r\n for (j = 0; j < level.length; j++) {\r\n seg = level[j];\r\n seg.forwardSegs = [];\r\n for (k = i + 1; k < levels.length; k++) {\r\n computeSlotSegCollisions(seg, levels[k], seg.forwardSegs);\r\n }\r\n }\r\n }\r\n}\r\n// Figure out which path forward (via seg.forwardSegs) results in the longest path until\r\n// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure\r\nfunction computeSlotSegPressures(seg) {\r\n var forwardSegs = seg.forwardSegs;\r\n var forwardPressure = 0;\r\n var i;\r\n var forwardSeg;\r\n if (seg.forwardPressure === undefined) { // not already computed\r\n for (i = 0; i < forwardSegs.length; i++) {\r\n forwardSeg = forwardSegs[i];\r\n // figure out the child's maximum forward path\r\n computeSlotSegPressures(forwardSeg);\r\n // either use the existing maximum, or use the child's forward pressure\r\n // plus one (for the forwardSeg itself)\r\n forwardPressure = Math.max(forwardPressure, 1 + forwardSeg.forwardPressure);\r\n }\r\n seg.forwardPressure = forwardPressure;\r\n }\r\n}\r\n// Find all the segments in `otherSegs` that vertically collide with `seg`.\r\n// Append into an optionally-supplied `results` array and return.\r\nfunction computeSlotSegCollisions(seg, otherSegs, results) {\r\n if (results === void 0) { results = []; }\r\n for (var i = 0; i < otherSegs.length; i++) {\r\n if (isSlotSegCollision(seg, otherSegs[i])) {\r\n results.push(otherSegs[i]);\r\n }\r\n }\r\n return results;\r\n}\r\n// Do these segments occupy the same vertical space?\r\nfunction isSlotSegCollision(seg1, seg2) {\r\n return seg1.bottom > seg2.top && seg1.top < seg2.bottom;\r\n}\r\n\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar HelperRenderer_1 = __webpack_require__(63);\r\nvar TimeGridHelperRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGridHelperRenderer, _super);\r\n function TimeGridHelperRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TimeGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {\r\n var helperNodes = [];\r\n var i;\r\n var seg;\r\n var sourceEl;\r\n // TODO: not good to call eventRenderer this way\r\n this.eventRenderer.renderFgSegsIntoContainers(segs, this.component.helperContainerEls);\r\n // Try to make the segment that is in the same row as sourceSeg look the same\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n if (sourceSeg && sourceSeg.col === seg.col) {\r\n sourceEl = sourceSeg.el;\r\n seg.el.css({\r\n left: sourceEl.css('left'),\r\n right: sourceEl.css('right'),\r\n 'margin-left': sourceEl.css('margin-left'),\r\n 'margin-right': sourceEl.css('margin-right')\r\n });\r\n }\r\n helperNodes.push(seg.el[0]);\r\n }\r\n return $(helperNodes); // must return the elements rendered\r\n };\r\n return TimeGridHelperRenderer;\r\n}(HelperRenderer_1.default));\r\nexports.default = TimeGridHelperRenderer;\r\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar FillRenderer_1 = __webpack_require__(62);\r\nvar TimeGridFillRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(TimeGridFillRenderer, _super);\r\n function TimeGridFillRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n TimeGridFillRenderer.prototype.attachSegEls = function (type, segs) {\r\n var timeGrid = this.component;\r\n var containerEls;\r\n // TODO: more efficient lookup\r\n if (type === 'bgEvent') {\r\n containerEls = timeGrid.bgContainerEls;\r\n }\r\n else if (type === 'businessHours') {\r\n containerEls = timeGrid.businessContainerEls;\r\n }\r\n else if (type === 'highlight') {\r\n containerEls = timeGrid.highlightContainerEls;\r\n }\r\n timeGrid.updateSegVerticals(segs);\r\n timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls);\r\n return segs.map(function (seg) {\r\n return seg.el[0];\r\n });\r\n };\r\n return TimeGridFillRenderer;\r\n}(FillRenderer_1.default));\r\nexports.default = TimeGridFillRenderer;\r\n\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer_1 = __webpack_require__(44);\r\n/* Event-rendering methods for the DayGrid class\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar DayGridEventRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGridEventRenderer, _super);\r\n function DayGridEventRenderer(dayGrid, fillRenderer) {\r\n var _this = _super.call(this, dayGrid, fillRenderer) || this;\r\n _this.dayGrid = dayGrid;\r\n return _this;\r\n }\r\n DayGridEventRenderer.prototype.renderBgRanges = function (eventRanges) {\r\n // don't render timed background events\r\n eventRanges = $.grep(eventRanges, function (eventRange) {\r\n return eventRange.eventDef.isAllDay();\r\n });\r\n _super.prototype.renderBgRanges.call(this, eventRanges);\r\n };\r\n // Renders the given foreground event segments onto the grid\r\n DayGridEventRenderer.prototype.renderFgSegs = function (segs) {\r\n var rowStructs = this.rowStructs = this.renderSegRows(segs);\r\n // append to each row's content skeleton\r\n this.dayGrid.rowEls.each(function (i, rowNode) {\r\n $(rowNode).find('.fc-content-skeleton > table').append(rowStructs[i].tbodyEl);\r\n });\r\n };\r\n // Unrenders all currently rendered foreground event segments\r\n DayGridEventRenderer.prototype.unrenderFgSegs = function () {\r\n var rowStructs = this.rowStructs || [];\r\n var rowStruct;\r\n while ((rowStruct = rowStructs.pop())) {\r\n rowStruct.tbodyEl.remove();\r\n }\r\n this.rowStructs = null;\r\n };\r\n // Uses the given events array to generate elements that should be appended to each row's content skeleton.\r\n // Returns an array of rowStruct objects (see the bottom of `renderSegRow`).\r\n // PRECONDITION: each segment shoud already have a rendered and assigned `.el`\r\n DayGridEventRenderer.prototype.renderSegRows = function (segs) {\r\n var rowStructs = [];\r\n var segRows;\r\n var row;\r\n segRows = this.groupSegRows(segs); // group into nested arrays\r\n // iterate each row of segment groupings\r\n for (row = 0; row < segRows.length; row++) {\r\n rowStructs.push(this.renderSegRow(row, segRows[row]));\r\n }\r\n return rowStructs;\r\n };\r\n // Given a row # and an array of segments all in the same row, render a element, a skeleton that contains\r\n // the segments. Returns object with a bunch of internal data about how the render was calculated.\r\n // NOTE: modifies rowSegs\r\n DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) {\r\n var colCnt = this.dayGrid.colCnt;\r\n var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels\r\n var levelCnt = Math.max(1, segLevels.length); // ensure at least one level\r\n var tbody = $('');\r\n var segMatrix = []; // lookup for which segments are rendered into which level+col cells\r\n var cellMatrix = []; // lookup for all elements of the level+col matrix\r\n var loneCellMatrix = []; // lookup for elements that only take up a single column\r\n var i;\r\n var levelSegs;\r\n var col;\r\n var tr;\r\n var j;\r\n var seg;\r\n var td;\r\n // populates empty cells from the current column (`col`) to `endCol`\r\n function emptyCellsUntil(endCol) {\r\n while (col < endCol) {\r\n // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell\r\n td = (loneCellMatrix[i - 1] || [])[col];\r\n if (td) {\r\n td.attr('rowspan', parseInt(td.attr('rowspan') || 1, 10) + 1);\r\n }\r\n else {\r\n td = $('');\r\n tr.append(td);\r\n }\r\n cellMatrix[i][col] = td;\r\n loneCellMatrix[i][col] = td;\r\n col++;\r\n }\r\n }\r\n for (i = 0; i < levelCnt; i++) { // iterate through all levels\r\n levelSegs = segLevels[i];\r\n col = 0;\r\n tr = $('');\r\n segMatrix.push([]);\r\n cellMatrix.push([]);\r\n loneCellMatrix.push([]);\r\n // levelCnt might be 1 even though there are no actual levels. protect against this.\r\n // this single empty row is useful for styling.\r\n if (levelSegs) {\r\n for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level\r\n seg = levelSegs[j];\r\n emptyCellsUntil(seg.leftCol);\r\n // create a container that occupies or more columns. append the event element.\r\n td = $('').append(seg.el);\r\n if (seg.leftCol !== seg.rightCol) {\r\n td.attr('colspan', seg.rightCol - seg.leftCol + 1);\r\n }\r\n else { // a single-column segment\r\n loneCellMatrix[i][col] = td;\r\n }\r\n while (col <= seg.rightCol) {\r\n cellMatrix[i][col] = td;\r\n segMatrix[i][col] = seg;\r\n col++;\r\n }\r\n tr.append(td);\r\n }\r\n }\r\n emptyCellsUntil(colCnt); // finish off the row\r\n this.dayGrid.bookendCells(tr);\r\n tbody.append(tr);\r\n }\r\n return {\r\n row: row,\r\n tbodyEl: tbody,\r\n cellMatrix: cellMatrix,\r\n segMatrix: segMatrix,\r\n segLevels: segLevels,\r\n segs: rowSegs\r\n };\r\n };\r\n // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.\r\n // NOTE: modifies segs\r\n DayGridEventRenderer.prototype.buildSegLevels = function (segs) {\r\n var levels = [];\r\n var i;\r\n var seg;\r\n var j;\r\n // Give preference to elements with certain criteria, so they have\r\n // a chance to be closer to the top.\r\n this.sortEventSegs(segs);\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n // loop through levels, starting with the topmost, until the segment doesn't collide with other segments\r\n for (j = 0; j < levels.length; j++) {\r\n if (!isDaySegCollision(seg, levels[j])) {\r\n break;\r\n }\r\n }\r\n // `j` now holds the desired subrow index\r\n seg.level = j;\r\n // create new level array if needed and append segment\r\n (levels[j] || (levels[j] = [])).push(seg);\r\n }\r\n // order segments left-to-right. very important if calendar is RTL\r\n for (j = 0; j < levels.length; j++) {\r\n levels[j].sort(compareDaySegCols);\r\n }\r\n return levels;\r\n };\r\n // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row\r\n DayGridEventRenderer.prototype.groupSegRows = function (segs) {\r\n var segRows = [];\r\n var i;\r\n for (i = 0; i < this.dayGrid.rowCnt; i++) {\r\n segRows.push([]);\r\n }\r\n for (i = 0; i < segs.length; i++) {\r\n segRows[segs[i].row].push(segs[i]);\r\n }\r\n return segRows;\r\n };\r\n // Computes a default event time formatting string if `timeFormat` is not explicitly defined\r\n DayGridEventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('extraSmallTimeFormat'); // like \"6p\" or \"6:30p\"\r\n };\r\n // Computes a default `displayEventEnd` value if one is not expliclty defined\r\n DayGridEventRenderer.prototype.computeDisplayEventEnd = function () {\r\n return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day\r\n };\r\n // Builds the HTML to be used for the default element for an individual segment\r\n DayGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {\r\n var view = this.view;\r\n var eventDef = seg.footprint.eventDef;\r\n var isAllDay = seg.footprint.componentFootprint.isAllDay;\r\n var isDraggable = view.isEventDefDraggable(eventDef);\r\n var isResizableFromStart = !disableResizing && isAllDay &&\r\n seg.isStart && view.isEventDefResizableFromStart(eventDef);\r\n var isResizableFromEnd = !disableResizing && isAllDay &&\r\n seg.isEnd && view.isEventDefResizableFromEnd(eventDef);\r\n var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\r\n var skinCss = util_1.cssToStr(this.getSkinCss(eventDef));\r\n var timeHtml = '';\r\n var timeText;\r\n var titleHtml;\r\n classes.unshift('fc-day-grid-event', 'fc-h-event');\r\n // Only display a timed events time if it is the starting segment\r\n if (seg.isStart) {\r\n timeText = this.getTimeText(seg.footprint);\r\n if (timeText) {\r\n timeHtml = '' + util_1.htmlEscape(timeText) + '';\r\n }\r\n }\r\n titleHtml =\r\n '' +\r\n (util_1.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height\r\n '';\r\n return '' +\r\n '
' +\r\n (this.dayGrid.isRTL ?\r\n titleHtml + ' ' + timeHtml : // put a natural space in between\r\n timeHtml + ' ' + titleHtml //\r\n ) +\r\n '
' +\r\n (isResizableFromStart ?\r\n '
' :\r\n '') +\r\n (isResizableFromEnd ?\r\n '
' :\r\n '') +\r\n '';\r\n };\r\n return DayGridEventRenderer;\r\n}(EventRenderer_1.default));\r\nexports.default = DayGridEventRenderer;\r\n// Computes whether two segments' columns collide. They are assumed to be in the same row.\r\nfunction isDaySegCollision(seg, otherSegs) {\r\n var i;\r\n var otherSeg;\r\n for (i = 0; i < otherSegs.length; i++) {\r\n otherSeg = otherSegs[i];\r\n if (otherSeg.leftCol <= seg.rightCol &&\r\n otherSeg.rightCol >= seg.leftCol) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n// A cmp function for determining the leftmost event\r\nfunction compareDaySegCols(a, b) {\r\n return a.leftCol - b.leftCol;\r\n}\r\n\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar HelperRenderer_1 = __webpack_require__(63);\r\nvar DayGridHelperRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGridHelperRenderer, _super);\r\n function DayGridHelperRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Renders a mock \"helper\" event. `sourceSeg` is the associated internal segment object. It can be null.\r\n DayGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {\r\n var helperNodes = [];\r\n var rowStructs;\r\n // TODO: not good to call eventRenderer this way\r\n rowStructs = this.eventRenderer.renderSegRows(segs);\r\n // inject each new event skeleton into each associated row\r\n this.component.rowEls.each(function (row, rowNode) {\r\n var rowEl = $(rowNode); // the .fc-row\r\n var skeletonEl = $('
'); // will be absolutely positioned\r\n var skeletonTopEl;\r\n var skeletonTop;\r\n // If there is an original segment, match the top position. Otherwise, put it at the row's top level\r\n if (sourceSeg && sourceSeg.row === row) {\r\n skeletonTop = sourceSeg.el.position().top;\r\n }\r\n else {\r\n skeletonTopEl = rowEl.find('.fc-content-skeleton tbody');\r\n if (!skeletonTopEl.length) { // when no events\r\n skeletonTopEl = rowEl.find('.fc-content-skeleton table');\r\n }\r\n skeletonTop = skeletonTopEl.position().top;\r\n }\r\n skeletonEl.css('top', skeletonTop)\r\n .find('table')\r\n .append(rowStructs[row].tbodyEl);\r\n rowEl.append(skeletonEl);\r\n helperNodes.push(skeletonEl[0]);\r\n });\r\n return $(helperNodes); // must return the elements rendered\r\n };\r\n return DayGridHelperRenderer;\r\n}(HelperRenderer_1.default));\r\nexports.default = DayGridHelperRenderer;\r\n\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar FillRenderer_1 = __webpack_require__(62);\r\nvar DayGridFillRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(DayGridFillRenderer, _super);\r\n function DayGridFillRenderer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.fillSegTag = 'td'; // override the default tag name\r\n return _this;\r\n }\r\n DayGridFillRenderer.prototype.attachSegEls = function (type, segs) {\r\n var nodes = [];\r\n var i;\r\n var seg;\r\n var skeletonEl;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n skeletonEl = this.renderFillRow(type, seg);\r\n this.component.rowEls.eq(seg.row).append(skeletonEl);\r\n nodes.push(skeletonEl[0]);\r\n }\r\n return nodes;\r\n };\r\n // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.\r\n DayGridFillRenderer.prototype.renderFillRow = function (type, seg) {\r\n var colCnt = this.component.colCnt;\r\n var startCol = seg.leftCol;\r\n var endCol = seg.rightCol + 1;\r\n var className;\r\n var skeletonEl;\r\n var trEl;\r\n if (type === 'businessHours') {\r\n className = 'bgevent';\r\n }\r\n else {\r\n className = type.toLowerCase();\r\n }\r\n skeletonEl = $('
' +\r\n '
' +\r\n '
');\r\n trEl = skeletonEl.find('tr');\r\n if (startCol > 0) {\r\n trEl.append(\r\n // will create (startCol + 1) td's\r\n new Array(startCol + 1).join(''));\r\n }\r\n trEl.append(seg.el.attr('colspan', endCol - startCol));\r\n if (endCol < colCnt) {\r\n trEl.append(\r\n // will create (colCnt - endCol) td's\r\n new Array(colCnt - endCol + 1).join(''));\r\n }\r\n this.component.bookendCells(trEl);\r\n return skeletonEl;\r\n };\r\n return DayGridFillRenderer;\r\n}(FillRenderer_1.default));\r\nexports.default = DayGridFillRenderer;\r\n\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar moment = __webpack_require__(0);\r\nvar util_1 = __webpack_require__(4);\r\nvar BasicView_1 = __webpack_require__(67);\r\nvar MonthViewDateProfileGenerator_1 = __webpack_require__(247);\r\n/* A month view with day cells running in rows (one-per-week) and columns\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar MonthView = /** @class */ (function (_super) {\r\n tslib_1.__extends(MonthView, _super);\r\n function MonthView() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Overrides the default BasicView behavior to have special multi-week auto-height logic\r\n MonthView.prototype.setGridHeight = function (height, isAuto) {\r\n // if auto, make the height of each row the height that it would be if there were 6 weeks\r\n if (isAuto) {\r\n height *= this.dayGrid.rowCnt / 6;\r\n }\r\n util_1.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows\r\n };\r\n MonthView.prototype.isDateInOtherMonth = function (date, dateProfile) {\r\n return date.month() !== moment.utc(dateProfile.currentUnzonedRange.startMs).month(); // TODO: optimize\r\n };\r\n return MonthView;\r\n}(BasicView_1.default));\r\nexports.default = MonthView;\r\nMonthView.prototype.dateProfileGeneratorClass = MonthViewDateProfileGenerator_1.default;\r\n\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar BasicViewDateProfileGenerator_1 = __webpack_require__(68);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar MonthViewDateProfileGenerator = /** @class */ (function (_super) {\r\n tslib_1.__extends(MonthViewDateProfileGenerator, _super);\r\n function MonthViewDateProfileGenerator() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // Computes the date range that will be rendered.\r\n MonthViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {\r\n var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay);\r\n var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay);\r\n var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay);\r\n var rowCnt;\r\n // ensure 6 weeks\r\n if (this.opt('fixedWeekCount')) {\r\n rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\r\n end.diff(start, 'weeks', true) // dontRound=true\r\n );\r\n end.add(6 - rowCnt, 'weeks');\r\n }\r\n return new UnzonedRange_1.default(start, end);\r\n };\r\n return MonthViewDateProfileGenerator;\r\n}(BasicViewDateProfileGenerator_1.default));\r\nexports.default = MonthViewDateProfileGenerator;\r\n\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar UnzonedRange_1 = __webpack_require__(5);\r\nvar View_1 = __webpack_require__(43);\r\nvar Scroller_1 = __webpack_require__(41);\r\nvar ListEventRenderer_1 = __webpack_require__(249);\r\nvar ListEventPointing_1 = __webpack_require__(250);\r\n/*\r\nResponsible for the scroller, and forwarding event-related actions into the \"grid\".\r\n*/\r\nvar ListView = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListView, _super);\r\n function ListView(calendar, viewSpec) {\r\n var _this = _super.call(this, calendar, viewSpec) || this;\r\n _this.segSelector = '.fc-list-item'; // which elements accept event actions\r\n _this.scroller = new Scroller_1.default({\r\n overflowX: 'hidden',\r\n overflowY: 'auto'\r\n });\r\n return _this;\r\n }\r\n ListView.prototype.renderSkeleton = function () {\r\n this.el.addClass('fc-list-view ' +\r\n this.calendar.theme.getClass('listView'));\r\n this.scroller.render();\r\n this.scroller.el.appendTo(this.el);\r\n this.contentEl = this.scroller.scrollEl; // shortcut\r\n };\r\n ListView.prototype.unrenderSkeleton = function () {\r\n this.scroller.destroy(); // will remove the Grid too\r\n };\r\n ListView.prototype.updateSize = function (totalHeight, isAuto, isResize) {\r\n _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);\r\n this.scroller.clear(); // sets height to 'auto' and clears overflow\r\n if (!isAuto) {\r\n this.scroller.setHeight(this.computeScrollerHeight(totalHeight));\r\n }\r\n };\r\n ListView.prototype.computeScrollerHeight = function (totalHeight) {\r\n return totalHeight -\r\n util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\r\n };\r\n ListView.prototype.renderDates = function (dateProfile) {\r\n var calendar = this.calendar;\r\n var dayStart = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs, true);\r\n var viewEnd = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.endMs, true);\r\n var dayDates = [];\r\n var dayRanges = [];\r\n while (dayStart < viewEnd) {\r\n dayDates.push(dayStart.clone());\r\n dayRanges.push(new UnzonedRange_1.default(dayStart, dayStart.clone().add(1, 'day')));\r\n dayStart.add(1, 'day');\r\n }\r\n this.dayDates = dayDates;\r\n this.dayRanges = dayRanges;\r\n // all real rendering happens in EventRenderer\r\n };\r\n // slices by day\r\n ListView.prototype.componentFootprintToSegs = function (footprint) {\r\n var dayRanges = this.dayRanges;\r\n var dayIndex;\r\n var segRange;\r\n var seg;\r\n var segs = [];\r\n for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) {\r\n segRange = footprint.unzonedRange.intersect(dayRanges[dayIndex]);\r\n if (segRange) {\r\n seg = {\r\n startMs: segRange.startMs,\r\n endMs: segRange.endMs,\r\n isStart: segRange.isStart,\r\n isEnd: segRange.isEnd,\r\n dayIndex: dayIndex\r\n };\r\n segs.push(seg);\r\n // detect when footprint won't go fully into the next day,\r\n // and mutate the latest seg to the be the end.\r\n if (!seg.isEnd && !footprint.isAllDay &&\r\n dayIndex + 1 < dayRanges.length &&\r\n footprint.unzonedRange.endMs < dayRanges[dayIndex + 1].startMs + this.nextDayThreshold) {\r\n seg.endMs = footprint.unzonedRange.endMs;\r\n seg.isEnd = true;\r\n break;\r\n }\r\n }\r\n }\r\n return segs;\r\n };\r\n ListView.prototype.renderEmptyMessage = function () {\r\n this.contentEl.html('
' + // TODO: try less wraps\r\n '
' +\r\n '
' +\r\n util_1.htmlEscape(this.opt('noEventsMessage')) +\r\n '
' +\r\n '
' +\r\n '
');\r\n };\r\n // render the event segments in the view\r\n ListView.prototype.renderSegList = function (allSegs) {\r\n var segsByDay = this.groupSegsByDay(allSegs); // sparse array\r\n var dayIndex;\r\n var daySegs;\r\n var i;\r\n var tableEl = $('
');\r\n var tbodyEl = tableEl.find('tbody');\r\n for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {\r\n daySegs = segsByDay[dayIndex];\r\n if (daySegs) { // sparse array, so might be undefined\r\n // append a day header\r\n tbodyEl.append(this.dayHeaderHtml(this.dayDates[dayIndex]));\r\n this.eventRenderer.sortEventSegs(daySegs);\r\n for (i = 0; i < daySegs.length; i++) {\r\n tbodyEl.append(daySegs[i].el); // append event row\r\n }\r\n }\r\n }\r\n this.contentEl.empty().append(tableEl);\r\n };\r\n // Returns a sparse array of arrays, segs grouped by their dayIndex\r\n ListView.prototype.groupSegsByDay = function (segs) {\r\n var segsByDay = []; // sparse array\r\n var i;\r\n var seg;\r\n for (i = 0; i < segs.length; i++) {\r\n seg = segs[i];\r\n (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))\r\n .push(seg);\r\n }\r\n return segsByDay;\r\n };\r\n // generates the HTML for the day headers that live amongst the event rows\r\n ListView.prototype.dayHeaderHtml = function (dayDate) {\r\n var mainFormat = this.opt('listDayFormat');\r\n var altFormat = this.opt('listDayAltFormat');\r\n return '' +\r\n '' +\r\n (mainFormat ?\r\n this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-main' }, util_1.htmlEscape(dayDate.format(mainFormat)) // inner HTML\r\n ) :\r\n '') +\r\n (altFormat ?\r\n this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-alt' }, util_1.htmlEscape(dayDate.format(altFormat)) // inner HTML\r\n ) :\r\n '') +\r\n '' +\r\n '';\r\n };\r\n return ListView;\r\n}(View_1.default));\r\nexports.default = ListView;\r\nListView.prototype.eventRendererClass = ListEventRenderer_1.default;\r\nListView.prototype.eventPointingClass = ListEventPointing_1.default;\r\n\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar util_1 = __webpack_require__(4);\r\nvar EventRenderer_1 = __webpack_require__(44);\r\nvar ListEventRenderer = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListEventRenderer, _super);\r\n function ListEventRenderer() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n ListEventRenderer.prototype.renderFgSegs = function (segs) {\r\n if (!segs.length) {\r\n this.component.renderEmptyMessage();\r\n }\r\n else {\r\n this.component.renderSegList(segs);\r\n }\r\n };\r\n // generates the HTML for a single event row\r\n ListEventRenderer.prototype.fgSegHtml = function (seg) {\r\n var view = this.view;\r\n var calendar = view.calendar;\r\n var theme = calendar.theme;\r\n var eventFootprint = seg.footprint;\r\n var eventDef = eventFootprint.eventDef;\r\n var componentFootprint = eventFootprint.componentFootprint;\r\n var url = eventDef.url;\r\n var classes = ['fc-list-item'].concat(this.getClasses(eventDef));\r\n var bgColor = this.getBgColor(eventDef);\r\n var timeHtml;\r\n if (componentFootprint.isAllDay) {\r\n timeHtml = view.getAllDayHtml();\r\n }\r\n else if (view.isMultiDayRange(componentFootprint.unzonedRange)) {\r\n if (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day\r\n timeHtml = util_1.htmlEscape(this._getTimeText(calendar.msToMoment(seg.startMs), calendar.msToMoment(seg.endMs), componentFootprint.isAllDay));\r\n }\r\n else { // inner segment that lasts the whole day\r\n timeHtml = view.getAllDayHtml();\r\n }\r\n }\r\n else {\r\n // Display the normal time text for the *event's* times\r\n timeHtml = util_1.htmlEscape(this.getTimeText(eventFootprint));\r\n }\r\n if (url) {\r\n classes.push('fc-has-url');\r\n }\r\n return '' +\r\n (this.displayEventTime ?\r\n '' +\r\n (timeHtml || '') +\r\n '' :\r\n '') +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n util_1.htmlEscape(eventDef.title || '') +\r\n '' +\r\n '' +\r\n '';\r\n };\r\n // like \"4:00am\"\r\n ListEventRenderer.prototype.computeEventTimeFormat = function () {\r\n return this.opt('mediumTimeFormat');\r\n };\r\n return ListEventRenderer;\r\n}(EventRenderer_1.default));\r\nexports.default = ListEventRenderer;\r\n\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar EventPointing_1 = __webpack_require__(64);\r\nvar ListEventPointing = /** @class */ (function (_super) {\r\n tslib_1.__extends(ListEventPointing, _super);\r\n function ListEventPointing() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n // for events with a url, the whole should be clickable,\r\n // but it's impossible to wrap with an tag. simulate this.\r\n ListEventPointing.prototype.handleClick = function (seg, ev) {\r\n var url;\r\n _super.prototype.handleClick.call(this, seg, ev); // might prevent the default action\r\n // not clicking on or within an with an href\r\n if (!$(ev.target).closest('a[href]').length) {\r\n url = seg.footprint.eventDef.url;\r\n if (url && !ev.isDefaultPrevented()) { // jsEvent not cancelled in handler\r\n window.location.href = url; // simulate link click\r\n }\r\n }\r\n };\r\n return ListEventPointing;\r\n}(EventPointing_1.default));\r\nexports.default = ListEventPointing;\r\n\n\n/***/ }),\n/* 251 */,\n/* 252 */,\n/* 253 */,\n/* 254 */,\n/* 255 */,\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(3);\r\nvar exportHooks = __webpack_require__(18);\r\nvar util_1 = __webpack_require__(4);\r\nvar Calendar_1 = __webpack_require__(232);\r\n// for intentional side-effects\r\n__webpack_require__(11);\r\n__webpack_require__(49);\r\n__webpack_require__(260);\r\n__webpack_require__(261);\r\n__webpack_require__(264);\r\n__webpack_require__(265);\r\n__webpack_require__(266);\r\n__webpack_require__(267);\r\n$.fullCalendar = exportHooks;\r\n$.fn.fullCalendar = function (options) {\r\n var args = Array.prototype.slice.call(arguments, 1); // for a possible method call\r\n var res = this; // what this function will return (this jQuery object by default)\r\n this.each(function (i, _element) {\r\n var element = $(_element);\r\n var calendar = element.data('fullCalendar'); // get the existing calendar object (if any)\r\n var singleRes; // the returned value of this single method call\r\n // a method call\r\n if (typeof options === 'string') {\r\n if (options === 'getCalendar') {\r\n if (!i) { // first element only\r\n res = calendar;\r\n }\r\n }\r\n else if (options === 'destroy') { // don't warn if no calendar object\r\n if (calendar) {\r\n calendar.destroy();\r\n element.removeData('fullCalendar');\r\n }\r\n }\r\n else if (!calendar) {\r\n util_1.warn('Attempting to call a FullCalendar method on an element with no calendar.');\r\n }\r\n else if ($.isFunction(calendar[options])) {\r\n singleRes = calendar[options].apply(calendar, args);\r\n if (!i) {\r\n res = singleRes; // record the first method call result\r\n }\r\n if (options === 'destroy') { // for the destroy method, must remove Calendar object data\r\n element.removeData('fullCalendar');\r\n }\r\n }\r\n else {\r\n util_1.warn(\"'\" + options + \"' is an unknown FullCalendar method.\");\r\n }\r\n }\r\n else if (!calendar) { // don't initialize twice\r\n calendar = new Calendar_1.default(element, options);\r\n element.data('fullCalendar', calendar);\r\n calendar.render();\r\n }\r\n });\r\n return res;\r\n};\r\nmodule.exports = exportHooks;\r\n\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\n/* Toolbar with buttons and title\r\n----------------------------------------------------------------------------------------------------------------------*/\r\nvar Toolbar = /** @class */ (function () {\r\n function Toolbar(calendar, toolbarOptions) {\r\n this.el = null; // mirrors local `el`\r\n this.viewsWithButtons = [];\r\n this.calendar = calendar;\r\n this.toolbarOptions = toolbarOptions;\r\n }\r\n // method to update toolbar-specific options, not calendar-wide options\r\n Toolbar.prototype.setToolbarOptions = function (newToolbarOptions) {\r\n this.toolbarOptions = newToolbarOptions;\r\n };\r\n // can be called repeatedly and will rerender\r\n Toolbar.prototype.render = function () {\r\n var sections = this.toolbarOptions.layout;\r\n var el = this.el;\r\n if (sections) {\r\n if (!el) {\r\n el = this.el = $(\"
\");\r\n }\r\n else {\r\n el.empty();\r\n }\r\n el.append(this.renderSection('left'))\r\n .append(this.renderSection('right'))\r\n .append(this.renderSection('center'))\r\n .append('
');\r\n }\r\n else {\r\n this.removeElement();\r\n }\r\n };\r\n Toolbar.prototype.removeElement = function () {\r\n if (this.el) {\r\n this.el.remove();\r\n this.el = null;\r\n }\r\n };\r\n Toolbar.prototype.renderSection = function (position) {\r\n var _this = this;\r\n var calendar = this.calendar;\r\n var theme = calendar.theme;\r\n var optionsManager = calendar.optionsManager;\r\n var viewSpecManager = calendar.viewSpecManager;\r\n var sectionEl = $('
');\r\n var buttonStr = this.toolbarOptions.layout[position];\r\n var calendarCustomButtons = optionsManager.get('customButtons') || {};\r\n var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {};\r\n var calendarButtonText = optionsManager.get('buttonText') || {};\r\n if (buttonStr) {\r\n $.each(buttonStr.split(' '), function (i, buttonGroupStr) {\r\n var groupChildren = $();\r\n var isOnlyButtons = true;\r\n var groupEl;\r\n $.each(buttonGroupStr.split(','), function (j, buttonName) {\r\n var customButtonProps;\r\n var viewSpec;\r\n var buttonClick;\r\n var buttonIcon; // only one of these will be set\r\n var buttonText; // \"\r\n var buttonInnerHtml;\r\n var buttonClasses;\r\n var buttonEl;\r\n var buttonAriaAttr;\r\n if (buttonName === 'title') {\r\n groupChildren = groupChildren.add($('

 

')); // we always want it to take up height\r\n isOnlyButtons = false;\r\n }\r\n else {\r\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\r\n buttonClick = function (ev) {\r\n if (customButtonProps.click) {\r\n customButtonProps.click.call(buttonEl[0], ev);\r\n }\r\n };\r\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\r\n (buttonIcon = theme.getIconClass(buttonName)) ||\r\n (buttonText = customButtonProps.text);\r\n }\r\n else if ((viewSpec = viewSpecManager.getViewSpec(buttonName))) {\r\n _this.viewsWithButtons.push(buttonName);\r\n buttonClick = function () {\r\n calendar.changeView(buttonName);\r\n };\r\n (buttonText = viewSpec.buttonTextOverride) ||\r\n (buttonIcon = theme.getIconClass(buttonName)) ||\r\n (buttonText = viewSpec.buttonTextDefault);\r\n }\r\n else if (calendar[buttonName]) { // a calendar method\r\n buttonClick = function () {\r\n calendar[buttonName]();\r\n };\r\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\r\n (buttonIcon = theme.getIconClass(buttonName)) ||\r\n (buttonText = calendarButtonText[buttonName]);\r\n // ^ everything else is considered default\r\n }\r\n if (buttonClick) {\r\n buttonClasses = [\r\n 'fc-' + buttonName + '-button',\r\n theme.getClass('button'),\r\n theme.getClass('stateDefault')\r\n ];\r\n if (buttonText) {\r\n buttonInnerHtml = util_1.htmlEscape(buttonText);\r\n buttonAriaAttr = '';\r\n }\r\n else if (buttonIcon) {\r\n buttonInnerHtml = \"\";\r\n buttonAriaAttr = ' aria-label=\"' + buttonName + '\"';\r\n }\r\n buttonEl = $(// type=\"button\" so that it doesn't submit a form\r\n '')\r\n .click(function (ev) {\r\n // don't process clicks for disabled buttons\r\n if (!buttonEl.hasClass(theme.getClass('stateDisabled'))) {\r\n buttonClick(ev);\r\n // after the click action, if the button becomes the \"active\" tab, or disabled,\r\n // it should never have a hover class, so remove it now.\r\n if (buttonEl.hasClass(theme.getClass('stateActive')) ||\r\n buttonEl.hasClass(theme.getClass('stateDisabled'))) {\r\n buttonEl.removeClass(theme.getClass('stateHover'));\r\n }\r\n }\r\n })\r\n .mousedown(function () {\r\n // the *down* effect (mouse pressed in).\r\n // only on buttons that are not the \"active\" tab, or disabled\r\n buttonEl\r\n .not('.' + theme.getClass('stateActive'))\r\n .not('.' + theme.getClass('stateDisabled'))\r\n .addClass(theme.getClass('stateDown'));\r\n })\r\n .mouseup(function () {\r\n // undo the *down* effect\r\n buttonEl.removeClass(theme.getClass('stateDown'));\r\n })\r\n .hover(function () {\r\n // the *hover* effect.\r\n // only on buttons that are not the \"active\" tab, or disabled\r\n buttonEl\r\n .not('.' + theme.getClass('stateActive'))\r\n .not('.' + theme.getClass('stateDisabled'))\r\n .addClass(theme.getClass('stateHover'));\r\n }, function () {\r\n // undo the *hover* effect\r\n buttonEl\r\n .removeClass(theme.getClass('stateHover'))\r\n .removeClass(theme.getClass('stateDown')); // if mouseleave happens before mouseup\r\n });\r\n groupChildren = groupChildren.add(buttonEl);\r\n }\r\n }\r\n });\r\n if (isOnlyButtons) {\r\n groupChildren\r\n .first().addClass(theme.getClass('cornerLeft')).end()\r\n .last().addClass(theme.getClass('cornerRight')).end();\r\n }\r\n if (groupChildren.length > 1) {\r\n groupEl = $('
');\r\n if (isOnlyButtons) {\r\n groupEl.addClass(theme.getClass('buttonGroup'));\r\n }\r\n groupEl.append(groupChildren);\r\n sectionEl.append(groupEl);\r\n }\r\n else {\r\n sectionEl.append(groupChildren); // 1 or 0 children\r\n }\r\n });\r\n }\r\n return sectionEl;\r\n };\r\n Toolbar.prototype.updateTitle = function (text) {\r\n if (this.el) {\r\n this.el.find('h2').text(text);\r\n }\r\n };\r\n Toolbar.prototype.activateButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .addClass(this.calendar.theme.getClass('stateActive'));\r\n }\r\n };\r\n Toolbar.prototype.deactivateButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .removeClass(this.calendar.theme.getClass('stateActive'));\r\n }\r\n };\r\n Toolbar.prototype.disableButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .prop('disabled', true)\r\n .addClass(this.calendar.theme.getClass('stateDisabled'));\r\n }\r\n };\r\n Toolbar.prototype.enableButton = function (buttonName) {\r\n if (this.el) {\r\n this.el.find('.fc-' + buttonName + '-button')\r\n .prop('disabled', false)\r\n .removeClass(this.calendar.theme.getClass('stateDisabled'));\r\n }\r\n };\r\n Toolbar.prototype.getViewsWithButtons = function () {\r\n return this.viewsWithButtons;\r\n };\r\n return Toolbar;\r\n}());\r\nexports.default = Toolbar;\r\n\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar $ = __webpack_require__(3);\r\nvar util_1 = __webpack_require__(4);\r\nvar options_1 = __webpack_require__(33);\r\nvar locale_1 = __webpack_require__(32);\r\nvar Model_1 = __webpack_require__(51);\r\nvar OptionsManager = /** @class */ (function (_super) {\r\n tslib_1.__extends(OptionsManager, _super);\r\n function OptionsManager(_calendar, overrides) {\r\n var _this = _super.call(this) || this;\r\n _this._calendar = _calendar;\r\n _this.overrides = $.extend({}, overrides); // make a copy\r\n _this.dynamicOverrides = {};\r\n _this.compute();\r\n return _this;\r\n }\r\n OptionsManager.prototype.add = function (newOptionHash) {\r\n var optionCnt = 0;\r\n var optionName;\r\n this.recordOverrides(newOptionHash); // will trigger this model's watchers\r\n for (optionName in newOptionHash) {\r\n optionCnt++;\r\n }\r\n // special-case handling of single option change.\r\n // if only one option change, `optionName` will be its name.\r\n if (optionCnt === 1) {\r\n if (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') {\r\n this._calendar.updateViewSize(true); // isResize=true\r\n return;\r\n }\r\n else if (optionName === 'defaultDate') {\r\n return; // can't change date this way. use gotoDate instead\r\n }\r\n else if (optionName === 'businessHours') {\r\n return; // this model already reacts to this\r\n }\r\n else if (/^(event|select)(Overlap|Constraint|Allow)$/.test(optionName)) {\r\n return; // doesn't affect rendering. only interactions.\r\n }\r\n else if (optionName === 'timezone') {\r\n this._calendar.view.flash('initialEvents');\r\n return;\r\n }\r\n }\r\n // catch-all. rerender the header and footer and rebuild/rerender the current view\r\n this._calendar.renderHeader();\r\n this._calendar.renderFooter();\r\n // even non-current views will be affected by this option change. do before rerender\r\n // TODO: detangle\r\n this._calendar.viewsByType = {};\r\n this._calendar.reinitView();\r\n };\r\n // Computes the flattened options hash for the calendar and assigns to `this.options`.\r\n // Assumes this.overrides and this.dynamicOverrides have already been initialized.\r\n OptionsManager.prototype.compute = function () {\r\n var locale;\r\n var localeDefaults;\r\n var isRTL;\r\n var dirDefaults;\r\n var rawOptions;\r\n locale = util_1.firstDefined(// explicit locale option given?\r\n this.dynamicOverrides.locale, this.overrides.locale);\r\n localeDefaults = locale_1.localeOptionHash[locale];\r\n if (!localeDefaults) { // explicit locale option not given or invalid?\r\n locale = options_1.globalDefaults.locale;\r\n localeDefaults = locale_1.localeOptionHash[locale] || {};\r\n }\r\n isRTL = util_1.firstDefined(// based on options computed so far, is direction RTL?\r\n this.dynamicOverrides.isRTL, this.overrides.isRTL, localeDefaults.isRTL, options_1.globalDefaults.isRTL);\r\n dirDefaults = isRTL ? options_1.rtlDefaults : {};\r\n this.dirDefaults = dirDefaults;\r\n this.localeDefaults = localeDefaults;\r\n rawOptions = options_1.mergeOptions([\r\n options_1.globalDefaults,\r\n dirDefaults,\r\n localeDefaults,\r\n this.overrides,\r\n this.dynamicOverrides\r\n ]);\r\n locale_1.populateInstanceComputableOptions(rawOptions); // fill in gaps with computed options\r\n this.reset(rawOptions);\r\n };\r\n // stores the new options internally, but does not rerender anything.\r\n OptionsManager.prototype.recordOverrides = function (newOptionHash) {\r\n var optionName;\r\n for (optionName in newOptionHash) {\r\n this.dynamicOverrides[optionName] = newOptionHash[optionName];\r\n }\r\n this._calendar.viewSpecManager.clearCache(); // the dynamic override invalidates the options in this cache, so just clear it\r\n this.compute(); // this.options needs to be recomputed after the dynamic override\r\n };\r\n return OptionsManager;\r\n}(Model_1.default));\r\nexports.default = OptionsManager;\r\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar moment = __webpack_require__(0);\r\nvar $ = __webpack_require__(3);\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar util_1 = __webpack_require__(4);\r\nvar options_1 = __webpack_require__(33);\r\nvar locale_1 = __webpack_require__(32);\r\nvar ViewSpecManager = /** @class */ (function () {\r\n function ViewSpecManager(optionsManager, _calendar) {\r\n this.optionsManager = optionsManager;\r\n this._calendar = _calendar;\r\n this.clearCache();\r\n }\r\n ViewSpecManager.prototype.clearCache = function () {\r\n this.viewSpecCache = {};\r\n };\r\n // Gets information about how to create a view. Will use a cache.\r\n ViewSpecManager.prototype.getViewSpec = function (viewType) {\r\n var cache = this.viewSpecCache;\r\n return cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType));\r\n };\r\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\r\n // Preference is given to views that have corresponding buttons.\r\n ViewSpecManager.prototype.getUnitViewSpec = function (unit) {\r\n var viewTypes;\r\n var i;\r\n var spec;\r\n if ($.inArray(unit, util_1.unitsDesc) !== -1) {\r\n // put views that have buttons first. there will be duplicates, but oh well\r\n viewTypes = this._calendar.header.getViewsWithButtons(); // TODO: include footer as well?\r\n $.each(ViewRegistry_1.viewHash, function (viewType) {\r\n viewTypes.push(viewType);\r\n });\r\n for (i = 0; i < viewTypes.length; i++) {\r\n spec = this.getViewSpec(viewTypes[i]);\r\n if (spec) {\r\n if (spec.singleUnit === unit) {\r\n return spec;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n // Builds an object with information on how to create a given view\r\n ViewSpecManager.prototype.buildViewSpec = function (requestedViewType) {\r\n var viewOverrides = this.optionsManager.overrides.views || {};\r\n var specChain = []; // for the view. lowest to highest priority\r\n var defaultsChain = []; // for the view. lowest to highest priority\r\n var overridesChain = []; // for the view. lowest to highest priority\r\n var viewType = requestedViewType;\r\n var spec; // for the view\r\n var overrides; // for the view\r\n var durationInput;\r\n var duration;\r\n var unit;\r\n // iterate from the specific view definition to a more general one until we hit an actual View class\r\n while (viewType) {\r\n spec = ViewRegistry_1.viewHash[viewType];\r\n overrides = viewOverrides[viewType];\r\n viewType = null; // clear. might repopulate for another iteration\r\n if (typeof spec === 'function') { // TODO: deprecate\r\n spec = { 'class': spec };\r\n }\r\n if (spec) {\r\n specChain.unshift(spec);\r\n defaultsChain.unshift(spec.defaults || {});\r\n durationInput = durationInput || spec.duration;\r\n viewType = viewType || spec.type;\r\n }\r\n if (overrides) {\r\n overridesChain.unshift(overrides); // view-specific option hashes have options at zero-level\r\n durationInput = durationInput || overrides.duration;\r\n viewType = viewType || overrides.type;\r\n }\r\n }\r\n spec = util_1.mergeProps(specChain);\r\n spec.type = requestedViewType;\r\n if (!spec['class']) {\r\n return false;\r\n }\r\n // fall back to top-level `duration` option\r\n durationInput = durationInput ||\r\n this.optionsManager.dynamicOverrides.duration ||\r\n this.optionsManager.overrides.duration;\r\n if (durationInput) {\r\n duration = moment.duration(durationInput);\r\n if (duration.valueOf()) { // valid?\r\n unit = util_1.computeDurationGreatestUnit(duration, durationInput);\r\n spec.duration = duration;\r\n spec.durationUnit = unit;\r\n // view is a single-unit duration, like \"week\" or \"day\"\r\n // incorporate options for this. lowest priority\r\n if (duration.as(unit) === 1) {\r\n spec.singleUnit = unit;\r\n overridesChain.unshift(viewOverrides[unit] || {});\r\n }\r\n }\r\n }\r\n spec.defaults = options_1.mergeOptions(defaultsChain);\r\n spec.overrides = options_1.mergeOptions(overridesChain);\r\n this.buildViewSpecOptions(spec);\r\n this.buildViewSpecButtonText(spec, requestedViewType);\r\n return spec;\r\n };\r\n // Builds and assigns a view spec's options object from its already-assigned defaults and overrides\r\n ViewSpecManager.prototype.buildViewSpecOptions = function (spec) {\r\n var optionsManager = this.optionsManager;\r\n spec.options = options_1.mergeOptions([\r\n options_1.globalDefaults,\r\n spec.defaults,\r\n optionsManager.dirDefaults,\r\n optionsManager.localeDefaults,\r\n optionsManager.overrides,\r\n spec.overrides,\r\n optionsManager.dynamicOverrides // dynamically set via setter. highest precedence\r\n ]);\r\n locale_1.populateInstanceComputableOptions(spec.options);\r\n };\r\n // Computes and assigns a view spec's buttonText-related options\r\n ViewSpecManager.prototype.buildViewSpecButtonText = function (spec, requestedViewType) {\r\n var optionsManager = this.optionsManager;\r\n // given an options object with a possible `buttonText` hash, lookup the buttonText for the\r\n // requested view, falling back to a generic unit entry like \"week\" or \"day\"\r\n function queryButtonText(options) {\r\n var buttonText = options.buttonText || {};\r\n return buttonText[requestedViewType] ||\r\n // view can decide to look up a certain key\r\n (spec.buttonTextKey ? buttonText[spec.buttonTextKey] : null) ||\r\n // a key like \"month\"\r\n (spec.singleUnit ? buttonText[spec.singleUnit] : null);\r\n }\r\n // highest to lowest priority\r\n spec.buttonTextOverride =\r\n queryButtonText(optionsManager.dynamicOverrides) ||\r\n queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence\r\n spec.overrides.buttonText; // `buttonText` for view-specific options is a string\r\n // highest to lowest priority. mirrors buildViewSpecOptions\r\n spec.buttonTextDefault =\r\n queryButtonText(optionsManager.localeDefaults) ||\r\n queryButtonText(optionsManager.dirDefaults) ||\r\n spec.defaults.buttonText || // a single string. from ViewSubclass.defaults\r\n queryButtonText(options_1.globalDefaults) ||\r\n (spec.duration ? this._calendar.humanizeDuration(spec.duration) : null) || // like \"3 days\"\r\n requestedViewType; // fall back to given view name\r\n };\r\n return ViewSpecManager;\r\n}());\r\nexports.default = ViewSpecManager;\r\n\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventSourceParser_1 = __webpack_require__(38);\r\nvar ArrayEventSource_1 = __webpack_require__(56);\r\nvar FuncEventSource_1 = __webpack_require__(223);\r\nvar JsonFeedEventSource_1 = __webpack_require__(224);\r\nEventSourceParser_1.default.registerClass(ArrayEventSource_1.default);\r\nEventSourceParser_1.default.registerClass(FuncEventSource_1.default);\r\nEventSourceParser_1.default.registerClass(JsonFeedEventSource_1.default);\r\n\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ThemeRegistry_1 = __webpack_require__(57);\r\nvar StandardTheme_1 = __webpack_require__(221);\r\nvar JqueryUiTheme_1 = __webpack_require__(222);\r\nvar Bootstrap3Theme_1 = __webpack_require__(262);\r\nvar Bootstrap4Theme_1 = __webpack_require__(263);\r\nThemeRegistry_1.defineThemeSystem('standard', StandardTheme_1.default);\r\nThemeRegistry_1.defineThemeSystem('jquery-ui', JqueryUiTheme_1.default);\r\nThemeRegistry_1.defineThemeSystem('bootstrap3', Bootstrap3Theme_1.default);\r\nThemeRegistry_1.defineThemeSystem('bootstrap4', Bootstrap4Theme_1.default);\r\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar Bootstrap3Theme = /** @class */ (function (_super) {\r\n tslib_1.__extends(Bootstrap3Theme, _super);\r\n function Bootstrap3Theme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return Bootstrap3Theme;\r\n}(Theme_1.default));\r\nexports.default = Bootstrap3Theme;\r\nBootstrap3Theme.prototype.classes = {\r\n widget: 'fc-bootstrap3',\r\n tableGrid: 'table-bordered',\r\n tableList: 'table',\r\n tableListHeading: 'active',\r\n buttonGroup: 'btn-group',\r\n button: 'btn btn-default',\r\n stateActive: 'active',\r\n stateDisabled: 'disabled',\r\n today: 'alert alert-info',\r\n popover: 'panel panel-default',\r\n popoverHeader: 'panel-heading',\r\n popoverContent: 'panel-body',\r\n // day grid\r\n // for left/right border color when border is inset from edges (all-day in agenda view)\r\n // avoid `panel` class b/c don't want margins/radius. only border color.\r\n headerRow: 'panel-default',\r\n dayRow: 'panel-default',\r\n // list view\r\n listView: 'panel panel-default'\r\n};\r\nBootstrap3Theme.prototype.baseIconClass = 'glyphicon';\r\nBootstrap3Theme.prototype.iconClasses = {\r\n close: 'glyphicon-remove',\r\n prev: 'glyphicon-chevron-left',\r\n next: 'glyphicon-chevron-right',\r\n prevYear: 'glyphicon-backward',\r\n nextYear: 'glyphicon-forward'\r\n};\r\nBootstrap3Theme.prototype.iconOverrideOption = 'bootstrapGlyphicons';\r\nBootstrap3Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapGlyphicon';\r\nBootstrap3Theme.prototype.iconOverridePrefix = 'glyphicon-';\r\n\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar tslib_1 = __webpack_require__(2);\r\nvar Theme_1 = __webpack_require__(22);\r\nvar Bootstrap4Theme = /** @class */ (function (_super) {\r\n tslib_1.__extends(Bootstrap4Theme, _super);\r\n function Bootstrap4Theme() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n return Bootstrap4Theme;\r\n}(Theme_1.default));\r\nexports.default = Bootstrap4Theme;\r\nBootstrap4Theme.prototype.classes = {\r\n widget: 'fc-bootstrap4',\r\n tableGrid: 'table-bordered',\r\n tableList: 'table',\r\n tableListHeading: 'table-active',\r\n buttonGroup: 'btn-group',\r\n button: 'btn btn-primary',\r\n stateActive: 'active',\r\n stateDisabled: 'disabled',\r\n today: 'alert alert-info',\r\n popover: 'card card-primary',\r\n popoverHeader: 'card-header',\r\n popoverContent: 'card-body',\r\n // day grid\r\n // for left/right border color when border is inset from edges (all-day in agenda view)\r\n // avoid `table` class b/c don't want margins/padding/structure. only border color.\r\n headerRow: 'table-bordered',\r\n dayRow: 'table-bordered',\r\n // list view\r\n listView: 'card card-primary'\r\n};\r\nBootstrap4Theme.prototype.baseIconClass = 'fa';\r\nBootstrap4Theme.prototype.iconClasses = {\r\n close: 'fa-times',\r\n prev: 'fa-chevron-left',\r\n next: 'fa-chevron-right',\r\n prevYear: 'fa-angle-double-left',\r\n nextYear: 'fa-angle-double-right'\r\n};\r\nBootstrap4Theme.prototype.iconOverrideOption = 'bootstrapFontAwesome';\r\nBootstrap4Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';\r\nBootstrap4Theme.prototype.iconOverridePrefix = 'fa-';\r\n\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar BasicView_1 = __webpack_require__(67);\r\nvar MonthView_1 = __webpack_require__(246);\r\nViewRegistry_1.defineView('basic', {\r\n 'class': BasicView_1.default\r\n});\r\nViewRegistry_1.defineView('basicDay', {\r\n type: 'basic',\r\n duration: { days: 1 }\r\n});\r\nViewRegistry_1.defineView('basicWeek', {\r\n type: 'basic',\r\n duration: { weeks: 1 }\r\n});\r\nViewRegistry_1.defineView('month', {\r\n 'class': MonthView_1.default,\r\n duration: { months: 1 },\r\n defaults: {\r\n fixedWeekCount: true\r\n }\r\n});\r\n\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar AgendaView_1 = __webpack_require__(238);\r\nViewRegistry_1.defineView('agenda', {\r\n 'class': AgendaView_1.default,\r\n defaults: {\r\n allDaySlot: true,\r\n slotDuration: '00:30:00',\r\n slotEventOverlap: true // a bad name. confused with overlap/constraint system\r\n }\r\n});\r\nViewRegistry_1.defineView('agendaDay', {\r\n type: 'agenda',\r\n duration: { days: 1 }\r\n});\r\nViewRegistry_1.defineView('agendaWeek', {\r\n type: 'agenda',\r\n duration: { weeks: 1 }\r\n});\r\n\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports, __webpack_require__) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ViewRegistry_1 = __webpack_require__(24);\r\nvar ListView_1 = __webpack_require__(248);\r\nViewRegistry_1.defineView('list', {\r\n 'class': ListView_1.default,\r\n buttonTextKey: 'list',\r\n defaults: {\r\n buttonText: 'list',\r\n listDayFormat: 'LL',\r\n noEventsMessage: 'No events to display'\r\n }\r\n});\r\nViewRegistry_1.defineView('listDay', {\r\n type: 'list',\r\n duration: { days: 1 },\r\n defaults: {\r\n listDayFormat: 'dddd' // day-of-week is all we need. full date is probably in header\r\n }\r\n});\r\nViewRegistry_1.defineView('listWeek', {\r\n type: 'list',\r\n duration: { weeks: 1 },\r\n defaults: {\r\n listDayFormat: 'dddd',\r\n listDayAltFormat: 'LL'\r\n }\r\n});\r\nViewRegistry_1.defineView('listMonth', {\r\n type: 'list',\r\n duration: { month: 1 },\r\n defaults: {\r\n listDayAltFormat: 'dddd' // day-of-week is nice-to-have\r\n }\r\n});\r\nViewRegistry_1.defineView('listYear', {\r\n type: 'list',\r\n duration: { year: 1 },\r\n defaults: {\r\n listDayAltFormat: 'dddd' // day-of-week is nice-to-have\r\n }\r\n});\r\n\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n\n\n/***/ })\n/******/ ]);\n});","/*!\n * jQuery JavaScript Library v3.4.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: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML 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\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\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: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"